diff --git a/CMakeLists.txt b/CMakeLists.txt index b1c88ce2..b3ac06eb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ include(cmake/deps.cmake) include(cmake/config.cmake) add_subdirectory(src) include(cmake/data.cmake) +include(cmake/docs.cmake) include(cmake/package.cmake) include(CPack) @@ -29,3 +30,7 @@ message(STATUS " libpcaudio: ${USE_LIBPCAUDIO} (${PCAUDIO_LIB} ${PCAUDIO_INC})" message(STATUS " klatt: ${USE_KLATT}") message(STATUS " speech-player: ${USE_SPEECHPLAYER}") message(STATUS " async: ${USE_ASYNC}") + +install( + DIRECTORY vim/ftdetect vim/syntax DESTINATION share/vim/vimfiles +) \ No newline at end of file diff --git a/ChangeLog.md b/ChangeLog.md index b8723a1e..cc431371 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -17,7 +17,7 @@ updated languages: * be (Belarusian) -- Andiv06, bespsm, Alaksiej Stankievič * cmn (Mandarin) -- Cameron Wong * en (English) -- Bill Dengler -* es (Spanish) -- Sukil Etxenike +* es (Spanish) -- Sukil Etxenike, Rmcpantoja, gregodejesus * fa (Persian) -- MH * gn (Guarani) -- Andiv06 * he (Hebrew) -- Omer I.S, Andiv06 diff --git a/cmake/config.cmake b/cmake/config.cmake index 5e1d47b5..962da414 100644 --- a/cmake/config.cmake +++ b/cmake/config.cmake @@ -12,3 +12,5 @@ if (HAVE_PTHREAD) else() set(USE_ASYNC OFF) endif() + +option(ESPEAK_COMPAT "Install compat binary symlinks" OFF) \ No newline at end of file diff --git a/cmake/docs.cmake b/cmake/docs.cmake new file mode 100644 index 00000000..b7e977f7 --- /dev/null +++ b/cmake/docs.cmake @@ -0,0 +1,28 @@ +find_program(RONN ronn) + +option(ESPEAK_BUILD_MANPAGES "Build manpages" ${RONN}) + +if (RONN AND ESPEAK_BUILD_MANPAGES) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/espeak-ng.1 + COMMAND ${RONN} --roff -o ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src/espeak-ng.1.ronn + ) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/speak-ng.1 + COMMAND ${RONN} --roff -o ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src/speak-ng.1.ronn + ) + + add_custom_target( + docs ALL + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/espeak-ng.1 + ${CMAKE_CURRENT_BINARY_DIR}/speak-ng.1 + ) + + install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/espeak-ng.1 + ${CMAKE_CURRENT_BINARY_DIR}/speak-ng.1 + DESTINATION share/man/man1 + ) +endif() \ No newline at end of file diff --git a/cmake/package.cmake b/cmake/package.cmake index 29ba8604..113c7fe7 100644 --- a/cmake/package.cmake +++ b/cmake/package.cmake @@ -15,3 +15,21 @@ list(APPEND CPACK_SOURCE_IGNORE_FILES /tools/ /vim/ ) + +set(PACKAGE_NAME ${PROJECT_NAME}) +set(VERSION ${PROJECT_VERSION}) + +set(prefix ${CMAKE_INSTALL_PREFIX}) +set(exec_prefix ${CMAKE_INSTALL_PREFIX}) +set(libdir "\${exec_prefix}/lib") +set(includedir "\${prefix}/include") + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc + @ONLY +) + +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION lib/pkgconfig +) \ No newline at end of file diff --git a/dictsource/en_list b/dictsource/en_list index ba2a4cba..cb8a8297 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -3052,6 +3052,7 @@ purport $2 purportedly $2 puree pjU@reI ?3 puttin pU?n +puyallup pju:'al@p pyjama p@dZA:m@ pyrites paIr'aIti:z pythagoras paIT'ag@r@s diff --git a/dictsource/es_list b/dictsource/es_list index 4e9e4d4c..374dcfb5 100644 --- a/dictsource/es_list +++ b/dictsource/es_list @@ -284,7 +284,7 @@ n Ene ñ En^e p pe q ku -r ERRe +r ER2e ?2 r ER2e s Ese t te @@ -310,12 +310,17 @@ _ó 'o||aTEntw'aDa ç $accent // Abbreviations +aprox Aproximadamente $text +a. c antes||de||cristo $text $capital $dot +d. c después||de||cristo $text $capital $dot dña doña $text DNI $abbrev dpto departamento $text dr doctor $text $capital $dot dra doctora $text $capital $dot (ee.uu) Est'aDos||un'iDos +ej Ejemplo $text $dot +etc etcétera $text Excmo excelentísimo $text $dot Excma excelentísima $text $dot Ilmo ilustrísimo $text $dot @@ -325,12 +330,18 @@ izqda izquierda $text $dot izqdo izquierdo $text $dot kg kilogramo $text $dot Mª maría $text $capital $dot +pag página $text $dot Pte presidente $text $capital $dot +SAR su||alt'eTa||R2e'al $abbrev +SNM soBre||el|niB'el||del||m'ar $abbrev Sr señor $text $capital $dot Sra señora $text $capital $dot Sras señoras $text $capital $dot Sres señores $text $capital $dot Srta señorita $text $capital $dot +SSS serB'iTjo||soTj'al||sustitut'orjo $abbrev +tel teléfono $text $dot +tqm te||kj'ero||m'utSo Ud usted $text $capital $dot Uds ustedes $text $capital $dot // (/ h) por||'ora @@ -350,26 +361,36 @@ vietnam $2 android 'androId apple 'ap@l -copyright k'opiRR2,aIt +copyright k'opiR2,aIt chrome kr'owm curriculum $2 diem d'i:em $only +down d'awn eloquence 'elokwens english ínglish $text espeak 'isp'ik +ETI itj'aI $capital eyes 'aIs facebook f'eIsbuk +file f'aIl +files f'aIls firefox f'aIrfoks free fr'i google g'ug@l hardware h'ardwer +hitler x'itler +instagram $1 iphone 'aIfon ipod 'aIpod jaws dZ'os jazz dZ'as +junior dZ'unjor +kepler $1 linux $1 live l'aIB drive dr'aIB +freedom fr'idom +gmail dZimeIL reaper R2'iper messenger m'esendZer microsoft m'aIkrosoft @@ -377,16 +398,21 @@ mozilla moT'ila office 'ofis platform pl'atfom power p'awer +scientific $2 service s'erBis skype sk'aIp snapshot sn'apS,ot // _^_en software s'oftwer spanish sp'aniS speech sp'itS +telegram $1 thunderbird t'anderbird twit tw'it twitter tw'iter +unigram $1 +up ap window w'indow +YouTube iut'uB $capital (e speak) 'isp'ik (i phone) 'aIfon @@ -394,4 +420,4 @@ window w'indow // Main nouns Dictionary cataplum $3 - +progrom $3 diff --git a/dictsource/extra/ru_listx b/dictsource/extra/ru_listx index 5cb3e3ab..8271aebd 100644 --- a/dictsource/extra/ru_listx +++ b/dictsource/extra/ru_listx @@ -35153,6 +35153,8 @@ бонусная $1 бонусной $1 бонусную $1 +бонусные $1 +бонусный $1 бонусных $1 бонусов $1 бонусом $1 @@ -44161,8 +44163,6 @@ варварство $1 варварством $1 варварству $1 -варвару $1 -варвары $1 варган $2 варджаяны $3 вареанты $3 @@ -44473,9 +44473,7 @@ варьирующуюся $2 варьируясь $2 варьяциями $2 -варю $2 варюсь $2 -варя $2 варясь $2 варят $1 варятся $1 @@ -56794,6 +56792,7 @@ видеопленки $4 видеопленку $4 видеоподсистема $6 +видеоподсистемами $6 видеопособие $5 видеопотока $5 видеопрезентацию $6 @@ -128722,7 +128721,6 @@ гордого $1 гордое $1 гордому $1 -гордон $2 гордостей $1 гордости $1 гордость $1 @@ -131854,8 +131852,6 @@ гренаж $2 гренами $1 гренгуара $3 -гренков $2 -гренком $2 гренландец $2 гренландок $2 гренобль $2 @@ -137292,7 +137288,6 @@ двоюродными $2 двоюродных $2 двоюсь $2 -двоя $2 двояковогнут $4 двояковогнута $4 двояковогнуто $4 @@ -153366,31 +153361,6 @@ домелют $2 домеля $3 домен $2 -доменен $1 -доменна $1 -доменнее $1 -доменней $1 -доменно $1 -доменной $1 -доменном $1 -доменному $1 -доменною $1 -доменную $1 -доменны $1 -доменные $1 -доменный $1 -доменными $1 -доменных $1 -доменщик $1 -доменщика $1 -доменщикам $1 -доменщиками $1 -доменщиках $1 -доменщике $1 -доменщики $1 -доменщиков $1 -доменщиком $1 -доменщику $1 домеренная $2 домеренного $2 домеренное $2 @@ -166157,7 +166127,6 @@ ешиботе $3 еще $2 ещеж $2 -ёзефа $2 ёмиури $3 ёситака $3 ёфикатор $3 @@ -189341,6 +189310,7 @@ замещал $3 замещала $3 замещало $3 +замещаться $3 замещаю $3 замещая $3 замещен $3 @@ -225729,6 +225699,7 @@ ильчиным $1 илью $2 илья $2 +ильяс $2 ильяшенко $3 имажинизм $4 имажинизма $4 @@ -227973,6 +227944,7 @@ инклюзив $3 инклюзива $3 инклюзиве $3 +инклюзивно $3 инклюзиву $3 инклюзивы $3 инкорпорации $4 @@ -267391,7 +267363,6 @@ кривеющими $2 кривеющих $2 кривеющую $2 -криви $2 кривившаяся $2 кривившегося $2 кривившееся $2 @@ -293818,7 +293789,6 @@ матвеенко $3 матвей $2 матвиенко $3 -мате $2 матевосяна $4 мателота $3 мателоте $3 @@ -303456,8 +303426,6 @@ минеральна $3 минерально $3 минеральны $3 -минет $1 -минете $1 минздрав $2 миниаквапарк $5 миниально $3 @@ -306699,6 +306667,7 @@ модерированию $3 модерирования $3 модерируемой $3 +модерируемые $3 модерирующие $3 модерирующим $3 модерирующих $3 @@ -311996,6 +311965,7 @@ мульчирование $2 мульчирования $2 мульчировать $2 +мулюков $4 мулюр $2 муляж $2 муляжа $3 @@ -312128,13 +312098,11 @@ муниципальными $4 муниципальных $4 мунэатэ $3 -мура $2 мурав $2 мурава $3 муравах $3 мураве $3 муравей $3 -муравейдревоточец $6 муравленая $2 муравленее $2 муравленей $2 @@ -325237,6 +325205,7 @@ накручивалось $2 накручивался $2 накручиванием $2 +накручивания $2 накручивать $2 накручиваться $2 накручиваюсь $2 @@ -346615,6 +346584,7 @@ неиндексированных $4 неиндуктивный $4 неинженеров $4 +неинклюзивную $4 неинклюзивным $4 неинспирированный $4 неинтегрированная $4 @@ -347091,7 +347061,6 @@ нейросетевой $5 нейросетевом $5 нейросетей $4 -нейросети $4 нейротерапию $5 нейротоксина $4 нейрофизиолог $5 @@ -363281,8 +363250,6 @@ обеляющиеся $3 обеляющимися $3 обеляющуюся $3 -оберег $1 -оберега $1 оберегавшая $4 оберегавшейся $4 оберегавшемся $4 @@ -387369,6 +387336,11 @@ октавиана $4 октавиане $4 октавианом $4 +октагон $3 +октагона $3 +октагоне $3 +октагону $3 +октагоны $3 октан $2 октановая $2 октановее $2 @@ -430879,10 +430851,6 @@ пашалыке $3 пашалыки $3 пашалыку $3 -пашам $2 -пашах $2 -паше $2 -пашей $2 пашемая $1 пашемого $1 пашемое $1 @@ -462110,7 +462078,6 @@ платки $2 платков $2 платком $2 -платку $2 платная $1 платнее $1 платники $1 @@ -502471,6 +502438,7 @@ полномасштабная $4 полномасштабное $4 полномасштабный $4 +полномасштабным $4 полномасштабными $4 полномасштабных $4 полномерна $3 @@ -507471,7 +507439,7 @@ помезентеральней $5 помезоморфнее $4 помезоморфней $4 -помела $3 +помела $2 помеланхоличнее $5 помеланхоличней $5 помеле $3 @@ -507555,7 +507523,7 @@ помелом $3 помелочнее $2 помелочней $2 -помелу $2 +помелу $3 помелькай $3 помелькайте $3 помелькал $3 @@ -589465,8 +589433,6 @@ пупсиком $1 пупсику $1 пупсинька $1 -пупу $2 -пупы $2 пупыре $3 пупырей $3 пупырем $3 @@ -682414,7 +682380,6 @@ соревнующимися $3 соревнующуюся $3 соревнуя $3 -сори $2 соригинальничавшая $4 соригинальничавшего $4 соригинальничавшее $4 @@ -703405,6 +703370,7 @@ субфебрилитеты $5 субфедеральная $4 субфедеральные $4 +субфлагманским $2 субчик $1 субчика $1 субчикам $1 @@ -715717,6 +715683,7 @@ теплопродукция $4 теплопрозрачность $4 теплопрозрачный $4 +теплорассеивателя $4 теплорассеивающая $4 теплорассеивающей $4 теплорассеивающими $4 @@ -769243,7 +769210,6 @@ ховард $1 ховарда $1 ховрина $1 -ховы $2 хогсхед $1 ходакова $3 ходам $2 @@ -799632,6 +799598,7 @@ энергопотребитель $6 энергопотребление $6 энергопотреблении $6 +энергопотреблений $6 энергопотреблению $6 энергопотребления $6 энергораспределения $7 diff --git a/dictsource/ru_list b/dictsource/ru_list index 0ecb292c..09132350 100644 --- a/dictsource/ru_list +++ b/dictsource/ru_list @@ -138,6 +138,8 @@ _, zVpit'aja или $atend // stressed at the end ибо $u $pause // for но $u $pause // but + при $u + при $atend хотя $2 $pause // although чтобы $pause // in order that diff --git a/dictsource/ru_rules b/dictsource/ru_rules index 9b81bb5e..2d3ba6bb 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -155,7 +155,7 @@ р) д (ц // Silent D(не произносимая д) мо) де (м dE% н) де (кс dE2 // яндекс, индекс/ yandex, index - мо) де (л dE + _мо) де (л dE _мо) де (лир dE% мо) де (льер dE% мо) де (лист dE% diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cb16ee51..03b4a7d9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,10 +19,18 @@ endif() if (NOT WIN32) add_custom_target( speak-ng ALL - ${CMAKE_COMMAND} -E create_symlink espeak-ng ${CMAKE_CURRENT_BINARY_DIR}/speak-ng - COMMENT "Link espeak-ng to speak-ng" + COMMAND ${CMAKE_COMMAND} -E create_symlink espeak-ng ${CMAKE_CURRENT_BINARY_DIR}/speak-ng + COMMAND ${CMAKE_COMMAND} -E create_symlink espeak-ng ${CMAKE_CURRENT_BINARY_DIR}/espeak + COMMAND ${CMAKE_COMMAND} -E create_symlink espeak-ng ${CMAKE_CURRENT_BINARY_DIR}/speak + COMMENT "Link espeak-ng to compat names" DEPENDS espeak-ng-bin ) endif() install(TARGETS espeak-ng-bin) install(DIRECTORY include/espeak include/espeak-ng TYPE INCLUDE) + +if (ESPEAK_COMPAT AND NOT WIN32) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/speak-ng DESTINATION bin) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/espeak DESTINATION bin) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/speak DESTINATION bin) +endif() \ No newline at end of file diff --git a/src/espeak-ng.c b/src/espeak-ng.c index a57653f9..ce15ac37 100644 --- a/src/espeak-ng.c +++ b/src/espeak-ng.c @@ -77,6 +77,8 @@ static const char *help_text = "\t Write speech to this WAV file, rather than speaking it directly\n" "-b\t Input text encoding, 1=UTF8, 2=8 bit, 4=16 bit \n" "-m\t Interpret SSML markup, and ignore other < > tags\n" + "--ssml-break=\n" + "\t Set SSML break time multiplier, default is 100\n" "-q\t Quiet, don't produce any speech (may be useful with -x)\n" "-x\t Write phoneme mnemonics to stdout\n" "-X\t Write phonemes mnemonics and translation trace to stdout\n" @@ -331,6 +333,7 @@ int main(int argc, char **argv) { "compile-intonations", no_argument, 0, 0x10f }, { "compile-phonemes", optional_argument, 0, 0x110 }, { "load", no_argument, 0, 0x111 }, + { "ssml-break", required_argument, 0, 0x112 }, { 0, 0, 0, 0 } }; @@ -361,6 +364,7 @@ int main(int argc, char **argv) int phoneme_options = 0; int option_linelength = 0; int option_waveout = 0; + int ssml_break = -1; bool deterministic = 0; espeak_VOICE voice_select; @@ -586,6 +590,9 @@ int main(int argc, char **argv) case 0x111: // --load flag_load = 1; break; + case 0x112: // --ssml-break + ssml_break = atoi(optarg2); + break; default: exit(0); } @@ -677,6 +684,8 @@ int main(int argc, char **argv) espeak_SetParameter(espeakWORDGAP, wordgap, 0); if (option_linelength > 0) espeak_SetParameter(espeakLINELENGTH, option_linelength, 0); + if (ssml_break > 0) + espeak_SetParameter(espeakSSML_BREAK_MUL, ssml_break, 0); if (option_punctuation == 2) espeak_SetPunctuationList(option_punctlist); diff --git a/src/include/espeak-ng/speak_lib.h b/src/include/espeak-ng/speak_lib.h index 14500f69..f060bd04 100644 --- a/src/include/espeak-ng/speak_lib.h +++ b/src/include/espeak-ng/speak_lib.h @@ -416,8 +416,8 @@ typedef enum { espeakWORDGAP=7, espeakOPTIONS=8, // reserved for misc. options. not yet used espeakINTONATION=9, + espeakSSML_BREAK_MUL=10, - espeakRESERVED1=10, espeakRESERVED2=11, espeakEMPHASIS, /* internal use */ espeakLINELENGTH, /* internal use */ diff --git a/src/libespeak-ng/CMakeLists.txt b/src/libespeak-ng/CMakeLists.txt index ffffbd5e..f59bc734 100644 --- a/src/libespeak-ng/CMakeLists.txt +++ b/src/libespeak-ng/CMakeLists.txt @@ -38,6 +38,8 @@ add_library(espeak-ng espeak_api.c ) +target_include_directories(espeak-ng BEFORE PRIVATE $) + if (NOT MSVC) target_compile_options(espeak-ng PRIVATE "-fPIC" @@ -113,4 +115,9 @@ if (MINGW) target_link_options(espeak-ng PRIVATE "-static-libstdc++" "-static") endif() +set_target_properties(espeak-ng PROPERTIES + SOVERSION ${PROJECT_VERSION_MAJOR} + VERSION ${PROJECT_VERSION} +) + install(TARGETS espeak-ng LIBRARY) diff --git a/src/libespeak-ng/numbers.c b/src/libespeak-ng/numbers.c index a71e155f..afcda486 100644 --- a/src/libespeak-ng/numbers.c +++ b/src/libespeak-ng/numbers.c @@ -1200,14 +1200,15 @@ static int LookupNum2(Translator *tr, int value, int thousandplex, const int con sprintf(ph_out, "%s%s%s%s", ph_tens, ph_and, ph_digits, ph_ordinal); used_and = 1; } else { - if ((tr->langopts.numbers & NUM_SINGLE_VOWEL) && ph_digits[0] != 0) { + if (tr->langopts.numbers & NUM_SINGLE_VOWEL) { // remove vowel from the end of tens if units starts with a vowel (LANG=Italian) - ix = strlen(ph_tens) - 1; - if ((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS) - next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type; + if (((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0)) { + if ((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS) + next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type; - if ((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL)) - ph_tens[ix] = 0; + if ((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL)) + ph_tens[ix] = 0; + } } if ((tr->langopts.numbers2 & NUM2_ORDINAL_DROP_VOWEL) && (ph_ordinal[0] != 0)) { diff --git a/src/libespeak-ng/setlengths.c b/src/libespeak-ng/setlengths.c index ffea7384..fb4eed89 100644 --- a/src/libespeak-ng/setlengths.c +++ b/src/libespeak-ng/setlengths.c @@ -336,6 +336,8 @@ espeak_ng_STATUS SetParameter(int parameter, int value, int relative) translator->langopts.intonation_group = new_value & 0xff; option_tone_flags = new_value; break; + case espeakSSML_BREAK_MUL: + break; default: return EINVAL; } diff --git a/src/libespeak-ng/speech.c b/src/libespeak-ng/speech.c index c0bbd2ac..9f90d105 100644 --- a/src/libespeak-ng/speech.c +++ b/src/libespeak-ng/speech.c @@ -349,7 +349,7 @@ const int param_defaults[N_SPEECH_PARAM] = { 0, // wordgap 0, // options 0, // intonation - 0, + 100, // ssml break mul 0, 0, // emphasis 0, // line length diff --git a/src/libespeak-ng/ssml.c b/src/libespeak-ng/ssml.c index fe195d08..d01c0362 100644 --- a/src/libespeak-ng/ssml.c +++ b/src/libespeak-ng/ssml.c @@ -882,6 +882,8 @@ int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outbuf, con if ((attr2 = GetSsmlAttribute(px, "time")) != NULL) { value2 = attrnumber(attr2, 0, 1); // pause in mS + value2 = value2 * speech_parameters[espeakSSML_BREAK_MUL] / 100; + int wpm = speech_parameters[espeakRATE]; espeak_SetParameter(espeakRATE, wpm, 0); diff --git a/src/libespeak-ng/wavegen.c b/src/libespeak-ng/wavegen.c index ba14d707..43be736e 100644 --- a/src/libespeak-ng/wavegen.c +++ b/src/libespeak-ng/wavegen.c @@ -119,7 +119,7 @@ int wcmdq_tail = 0; // pitch,speed, const int embedded_default[N_EMBEDDED_VALUES] = { 0, 50, espeakRATE_NORMAL, 100, 50, 0, 0, 0, espeakRATE_NORMAL, 0, 0, 0, 0, 0, 0 }; -static const int embedded_max[N_EMBEDDED_VALUES] = { 0, 0x7fff, 750, 300, 99, 99, 99, 0, 750, 0, 0, 0, 0, 4, 0 }; +static const int embedded_max[N_EMBEDDED_VALUES] = { 0, 0x7fff, 2000, 300, 99, 99, 99, 0, 2000, 0, 0, 0, 0, 4, 0 }; #if USE_LIBSONIC static sonicStream sonicSpeedupStream = NULL; diff --git a/src/speechPlayer/CMakeLists.txt b/src/speechPlayer/CMakeLists.txt index ed92589c..137dda45 100644 --- a/src/speechPlayer/CMakeLists.txt +++ b/src/speechPlayer/CMakeLists.txt @@ -7,4 +7,3 @@ target_include_directories(speechPlayer PUBLIC include) if(NOT MSVC) target_compile_options(speechPlayer PRIVATE "-fPIC") endif() -install(TARGETS speechPlayer ARCHIVE) diff --git a/src/ucd-tools/CMakeLists.txt b/src/ucd-tools/CMakeLists.txt index 6ff61022..2050c114 100644 --- a/src/ucd-tools/CMakeLists.txt +++ b/src/ucd-tools/CMakeLists.txt @@ -7,4 +7,3 @@ add_library(ucd STATIC src/tostring.c ) target_include_directories(ucd PUBLIC src/include) -install(TARGETS ucd ARCHIVE) diff --git a/tests/language-numbers-cardinal.test b/tests/language-numbers-cardinal.test index 406cdb48..542f15d2 100755 --- a/tests/language-numbers-cardinal.test +++ b/tests/language-numbers-cardinal.test @@ -30,3 +30,4 @@ test_phon lv "d'esmit d'ivdesmit tR'i:sdesmit tS'etRdesmit p'ietsd,esmit s'eSdes test_phon lv "s'imts s'imts v'iens d'ivi s'imti d'ivi tR'i:s s'imti s'eSdesmit p'ietsi" "100 101 202 365" "hundreds" test_phon lv "s'imts t'u:kstuo:tis m'iljo:ns m'iljaRds tR'iljons kv'adRiljo:ns kv'intiljo:ns s'ekstiljo:ns s'eptiljo:ns 'oktiljo:ns n'oniljo:ns" "100 1000 1000000 1000000000 1000000000000 1000000000000000 1000000000000000000 1000000000000000000000 1000000000000000000000000 1000000000000000000000000000 1000000000000000000000000000000" "large" # 10^2 10^3 10^6 10^9 10^12 10^15 10^18 10^21 10^24 10^27 10^30 test_phon lv "p'ietsi s'eSdesmit tS'etRi s'imts d'ivdesmit tR'i:s tS'etRi t'u:kstuo:Si tR'i:s s'imti p'ietsd,esmit s'eptin^i tS'etRpadsmit t'u:kstuo:Si_! s'eSi s'imti_ 'astuon^desmit tR'i:s s'eptin^i s'imti tS'etRdesmit d'ivi t'u:kstuo:Si_! tR'i:s s'imti p'ietsd,esmit d'evin^i s'eSi m'iljo:ni_! tS'etRi s'imti s'eptin^desmit p'ietsi t'u:kstuo:Si_! tR'i:s s'imti d'ivdesmit 'astuon^i" "5 64 123 4357 14683 742359 6475328" "mixed" +test_phon it "dz'E*o_| 'items" "0 items" "NUM_SINGLE_VOWEL" diff --git a/tests/ssml.test b/tests/ssml.test index 6b60040e..bd2f214c 100755 --- a/tests/ssml.test +++ b/tests/ssml.test @@ -8,10 +8,11 @@ test_ssml_audio() { TEST_NAME=$1 EXPECTED=$2 TEST_TEXT=$3 + OPTS=$4 echo "testing ${TEST_NAME}" ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ - $VALGRIND src/espeak-ng --stdout -m "${TEST_TEXT}" \ + $VALGRIND src/espeak-ng --stdout -m "${TEST_TEXT}" ${OPTS} \ > actual.txt || exit 1 < actual.txt $sha1sum | awk '{ print $1 }' > sum.txt echo "${EXPECTED}" > expected.txt @@ -56,3 +57,6 @@ test_ssml_audio "" 64213dbaf593b139b0b21840ba938cf59 ( test_ssml_audio "" 4b4e30a2cfff1889972f013e514e81c1108283a4 "Breaktest" ) || \ ( test_ssml_audio "" 9849f0d27f5641db6da1a8aea82578e83656d323 "Breaktest" ) || \ ( test_ssml_audio "" 32a9c2887ec5b7d9d33d5503518ac0d384e43448 "Breaktest" ) || exit 1 + +# Test break multiplier +test_ssml_audio " mul=10" 9f3b0f34eb605fcecfc573fc215626f634b46756 "Breaktest" "--ssml-break=10"