eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ssml.test 3.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/bin/sh
  2. # include common script
  3. . "`dirname $0`/common"
  4. # and run needed checks before
  5. is_hash
  6. test_ssml_audio() {
  7. TEST_NAME=$1
  8. EXPECTED=$2
  9. TEST_TEXT=$3
  10. OPTS=$4
  11. echo "testing ${TEST_NAME}"
  12. RESULT=$(
  13. ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
  14. $VALGRIND src/espeak-ng --stdout -m "${TEST_TEXT}" ${OPTS} | $sha1sum | awk '{ print $1 }' || exit 1
  15. )
  16. if [ "x$RESULT" != "x$EXPECTED" ] ; then
  17. echo "$RESULT != $EXPECTED"
  18. exit 1
  19. fi
  20. }
  21. test_ssml() {
  22. INPUT=$1
  23. if [ "$2" = "punct" ]
  24. then
  25. PARAMETERS="--punct -x"
  26. else
  27. PARAMETERS="-v en-US --ipa=2"
  28. fi
  29. echo "testing ${INPUT}"
  30. EXPECTED=$(cat $(dirname $INPUT)/$(basename ${INPUT%.*}).expected)
  31. RESULT=$(
  32. ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
  33. $VALGRIND src/espeak-ng -m -q $PARAMETERS -f ${INPUT} || exit 1
  34. )
  35. if [ "x$RESULT" != "x$EXPECTED" ] ; then
  36. echo "$RESULT != $EXPECTED"
  37. exit 1
  38. fi
  39. }
  40. for i in `dirname $0`/ssml/*.ssml ; do test_ssml $i; done
  41. for i in `dirname $0`/ssml/*.ssml2 ; do test_ssml $i punct; done
  42. test_ssml_audio "<prosody>" 88fccb35536158f25f4ae44a03fb005fef95c99b "<speak><prosody rate=\"x-slow\" pitch=\"low\"> Slow and low </prosody><prosody rate=\"x-fast\" pitch=\"x-high\"> Fast and high.</prosody></speak>"
  43. # #410 is a bug in SSML. Sentence termination causes prosody stack to misfunction.
  44. # Hash 8d3bace is the buggy version and should fail:
  45. test_ssml_audio "<prosody> bug #410" 8d3bace9548ae73c4770a73c88c6f65e848b45cf "<speak><prosody rate=\"x-slow\" pitch=\"low\"> Slow and low. </prosody><prosody rate=\"x-fast\" pitch=\"x-high\"> Fast and high.</prosody></speak>"
  46. test_ssml_audio "<audio>" 5134c1db757b2d6b8d1f3f2416124462e401b4c6 "<speak>ha: <audio src=\"$PWD/phsource/h/ha.wav\"></audio></speak>"
  47. test_ssml_audio "<break> at start" 949ad49d180108b30c1f0f16bef6ca2f3b6199cd "<speak><break time=\"1000ms\"/>test</speak>"
  48. # Test SSML breaks inside prosody (#1512)
  49. test_ssml_audio "<prosody 50%><break 1000ms>" bc47aac0142243b31dd1930e3462abe541c1d9ff "<speak><prosody rate=\"50%\">Break<break time=\"1000ms\"/>test</prosody></speak>"
  50. test_ssml_audio "<prosody 100%><break 1000ms>" c7b3e92d90063761e9744b40b17bc9204fe7d25b "<speak><prosody rate=\"100%\">Break<break time=\"1000ms\"/>test</prosody></speak>"
  51. test_ssml_audio "<prosody 200%><break 1000ms>" 64213dbaf593b139b0b21840ba938cf597f7ad35 "<speak><prosody rate=\"200%\">Break<break time=\"1000ms\"/>test</prosody></speak>"
  52. # Three cases following: HEAD#6a16cb3, libsonic 0.2.0-12, and --without-libsonic
  53. ( test_ssml_audio "<prosody 260%><break 1000ms>" 4b4e30a2cfff1889972f013e514e81c1108283a4 "<speak><prosody rate=\"260%\">Break<break time=\"1000ms\"/>test</prosody></speak>" ) || \
  54. ( test_ssml_audio "<prosody 260%><break 1000ms>" 9849f0d27f5641db6da1a8aea82578e83656d323 "<speak><prosody rate=\"260%\">Break<break time=\"1000ms\"/>test</prosody></speak>" ) || \
  55. ( test_ssml_audio "<prosody 260%><break 1000ms>" 32a9c2887ec5b7d9d33d5503518ac0d384e43448 "<speak><prosody rate=\"260%\">Break<break time=\"1000ms\"/>test</prosody></speak>" ) || exit 1
  56. # Test break multiplier
  57. test_ssml_audio "<break 1000ms> mul=10" 9f3b0f34eb605fcecfc573fc215626f634b46756 "<speak>Break<break time=\"1000ms\"/>test</speak>" "--ssml-break=10"