@@ -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 | |||
) |
@@ -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 |
@@ -12,3 +12,5 @@ if (HAVE_PTHREAD) | |||
else() | |||
set(USE_ASYNC OFF) | |||
endif() | |||
option(ESPEAK_COMPAT "Install compat binary symlinks" OFF) |
@@ -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() |
@@ -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 | |||
) |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 | |||
@@ -155,7 +155,7 @@ | |||
р) д (ц // Silent D(не произносимая д) | |||
мо) де (м dE% | |||
н) де (кс dE2 // яндекс, индекс/ yandex, index | |||
мо) де (л dE | |||
_мо) де (л dE | |||
_мо) де (лир dE% | |||
мо) де (льер dE% | |||
мо) де (лист dE% |
@@ -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() |
@@ -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=<percentage>\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); | |||
@@ -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 */ |
@@ -38,6 +38,8 @@ add_library(espeak-ng | |||
espeak_api.c | |||
) | |||
target_include_directories(espeak-ng BEFORE PRIVATE $<TARGET_PROPERTY:espeak-include,INTERFACE_INCLUDE_DIRECTORIES>) | |||
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) |
@@ -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)) { |
@@ -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; | |||
} |
@@ -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 |
@@ -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); | |||
@@ -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; |
@@ -7,4 +7,3 @@ target_include_directories(speechPlayer PUBLIC include) | |||
if(NOT MSVC) | |||
target_compile_options(speechPlayer PRIVATE "-fPIC") | |||
endif() | |||
install(TARGETS speechPlayer ARCHIVE) |
@@ -7,4 +7,3 @@ add_library(ucd STATIC | |||
src/tostring.c | |||
) | |||
target_include_directories(ucd PUBLIC src/include) | |||
install(TARGETS ucd ARCHIVE) |
@@ -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" |
@@ -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 "<prosody 200%><break 1000ms>" 64213dbaf593b139b0b21840ba938cf59 | |||
( test_ssml_audio "<prosody 260%><break 1000ms>" 4b4e30a2cfff1889972f013e514e81c1108283a4 "<speak><prosody rate=\"260%\">Break<break time=\"1000ms\"/>test</prosody></speak>" ) || \ | |||
( test_ssml_audio "<prosody 260%><break 1000ms>" 9849f0d27f5641db6da1a8aea82578e83656d323 "<speak><prosody rate=\"260%\">Break<break time=\"1000ms\"/>test</prosody></speak>" ) || \ | |||
( test_ssml_audio "<prosody 260%><break 1000ms>" 32a9c2887ec5b7d9d33d5503518ac0d384e43448 "<speak><prosody rate=\"260%\">Break<break time=\"1000ms\"/>test</prosody></speak>" ) || exit 1 | |||
# Test break multiplier | |||
test_ssml_audio "<break 1000ms> mul=10" 9f3b0f34eb605fcecfc573fc215626f634b46756 "<speak>Break<break time=\"1000ms\"/>test</speak>" "--ssml-break=10" |