include(cmake/config.cmake) | include(cmake/config.cmake) | ||||
add_subdirectory(src) | add_subdirectory(src) | ||||
include(cmake/data.cmake) | include(cmake/data.cmake) | ||||
include(cmake/docs.cmake) | |||||
include(cmake/package.cmake) | include(cmake/package.cmake) | ||||
include(CPack) | include(CPack) | ||||
message(STATUS " klatt: ${USE_KLATT}") | message(STATUS " klatt: ${USE_KLATT}") | ||||
message(STATUS " speech-player: ${USE_SPEECHPLAYER}") | message(STATUS " speech-player: ${USE_SPEECHPLAYER}") | ||||
message(STATUS " async: ${USE_ASYNC}") | message(STATUS " async: ${USE_ASYNC}") | ||||
install( | |||||
DIRECTORY vim/ftdetect vim/syntax DESTINATION share/vim/vimfiles | |||||
) |
* be (Belarusian) -- Andiv06, bespsm, Alaksiej Stankievič | * be (Belarusian) -- Andiv06, bespsm, Alaksiej Stankievič | ||||
* cmn (Mandarin) -- Cameron Wong | * cmn (Mandarin) -- Cameron Wong | ||||
* en (English) -- Bill Dengler | * en (English) -- Bill Dengler | ||||
* es (Spanish) -- Sukil Etxenike | |||||
* es (Spanish) -- Sukil Etxenike, Rmcpantoja, gregodejesus | |||||
* fa (Persian) -- MH | * fa (Persian) -- MH | ||||
* gn (Guarani) -- Andiv06 | * gn (Guarani) -- Andiv06 | ||||
* he (Hebrew) -- Omer I.S, Andiv06 | * he (Hebrew) -- Omer I.S, Andiv06 |
else() | else() | ||||
set(USE_ASYNC OFF) | set(USE_ASYNC OFF) | ||||
endif() | endif() | ||||
option(ESPEAK_COMPAT "Install compat binary symlinks" OFF) |
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() |
/tools/ | /tools/ | ||||
/vim/ | /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 | |||||
) |
purportedly $2 | purportedly $2 | ||||
puree pjU@reI | puree pjU@reI | ||||
?3 puttin pU?n | ?3 puttin pU?n | ||||
puyallup pju:'al@p | |||||
pyjama p@dZA:m@ | pyjama p@dZA:m@ | ||||
pyrites paIr'aIti:z | pyrites paIr'aIti:z | ||||
pythagoras paIT'ag@r@s | pythagoras paIT'ag@r@s |
ñ En^e | ñ En^e | ||||
p pe | p pe | ||||
q ku | q ku | ||||
r ERRe | |||||
r ER2e | |||||
?2 r ER2e | ?2 r ER2e | ||||
s Ese | s Ese | ||||
t te | t te | ||||
ç $accent | ç $accent | ||||
// Abbreviations | // 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 | dña doña $text | ||||
DNI $abbrev | DNI $abbrev | ||||
dpto departamento $text | dpto departamento $text | ||||
dr doctor $text $capital $dot | dr doctor $text $capital $dot | ||||
dra doctora $text $capital $dot | dra doctora $text $capital $dot | ||||
(ee.uu) Est'aDos||un'iDos | (ee.uu) Est'aDos||un'iDos | ||||
ej Ejemplo $text $dot | |||||
etc etcétera $text | |||||
Excmo excelentísimo $text $dot | Excmo excelentísimo $text $dot | ||||
Excma excelentísima $text $dot | Excma excelentísima $text $dot | ||||
Ilmo ilustrísimo $text $dot | Ilmo ilustrísimo $text $dot | ||||
izqdo izquierdo $text $dot | izqdo izquierdo $text $dot | ||||
kg kilogramo $text $dot | kg kilogramo $text $dot | ||||
Mª maría $text $capital $dot | Mª maría $text $capital $dot | ||||
pag página $text $dot | |||||
Pte presidente $text $capital $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 | Sr señor $text $capital $dot | ||||
Sra señora $text $capital $dot | Sra señora $text $capital $dot | ||||
Sras señoras $text $capital $dot | Sras señoras $text $capital $dot | ||||
Sres señores $text $capital $dot | Sres señores $text $capital $dot | ||||
Srta señorita $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 | Ud usted $text $capital $dot | ||||
Uds ustedes $text $capital $dot | Uds ustedes $text $capital $dot | ||||
// (/ h) por||'ora | // (/ h) por||'ora | ||||
android 'androId | android 'androId | ||||
apple 'ap@l | apple 'ap@l | ||||
copyright k'opiRR2,aIt | |||||
copyright k'opiR2,aIt | |||||
chrome kr'owm | chrome kr'owm | ||||
curriculum $2 | curriculum $2 | ||||
diem d'i:em $only | diem d'i:em $only | ||||
down d'awn | |||||
eloquence 'elokwens | eloquence 'elokwens | ||||
english ínglish $text | english ínglish $text | ||||
espeak 'isp'ik | espeak 'isp'ik | ||||
ETI itj'aI $capital | |||||
eyes 'aIs | eyes 'aIs | ||||
facebook f'eIsbuk | facebook f'eIsbuk | ||||
file f'aIl | |||||
files f'aIls | |||||
firefox f'aIrfoks | firefox f'aIrfoks | ||||
free fr'i | free fr'i | ||||
google g'ug@l | google g'ug@l | ||||
hardware h'ardwer | hardware h'ardwer | ||||
hitler x'itler | |||||
instagram $1 | |||||
iphone 'aIfon | iphone 'aIfon | ||||
ipod 'aIpod | ipod 'aIpod | ||||
jaws dZ'os | jaws dZ'os | ||||
jazz dZ'as | jazz dZ'as | ||||
junior dZ'unjor | |||||
kepler $1 | |||||
linux $1 | linux $1 | ||||
live l'aIB | live l'aIB | ||||
drive dr'aIB | drive dr'aIB | ||||
freedom fr'idom | |||||
gmail dZimeIL | |||||
reaper R2'iper | reaper R2'iper | ||||
messenger m'esendZer | messenger m'esendZer | ||||
microsoft m'aIkrosoft | microsoft m'aIkrosoft | ||||
office 'ofis | office 'ofis | ||||
platform pl'atfom | platform pl'atfom | ||||
power p'awer | power p'awer | ||||
scientific $2 | |||||
service s'erBis | service s'erBis | ||||
skype sk'aIp | skype sk'aIp | ||||
snapshot sn'apS,ot // _^_en | snapshot sn'apS,ot // _^_en | ||||
software s'oftwer | software s'oftwer | ||||
spanish sp'aniS | spanish sp'aniS | ||||
speech sp'itS | speech sp'itS | ||||
telegram $1 | |||||
thunderbird t'anderbird | thunderbird t'anderbird | ||||
twit tw'it | twit tw'it | ||||
twitter tw'iter | twitter tw'iter | ||||
unigram $1 | |||||
up ap | |||||
window w'indow | window w'indow | ||||
YouTube iut'uB $capital | |||||
(e speak) 'isp'ik | (e speak) 'isp'ik | ||||
(i phone) 'aIfon | (i phone) 'aIfon | ||||
// Main nouns Dictionary | // Main nouns Dictionary | ||||
cataplum $3 | cataplum $3 | ||||
progrom $3 |
бонусная $1 | бонусная $1 | ||||
бонусной $1 | бонусной $1 | ||||
бонусную $1 | бонусную $1 | ||||
бонусные $1 | |||||
бонусный $1 | |||||
бонусных $1 | бонусных $1 | ||||
бонусов $1 | бонусов $1 | ||||
бонусом $1 | бонусом $1 | ||||
варварство $1 | варварство $1 | ||||
варварством $1 | варварством $1 | ||||
варварству $1 | варварству $1 | ||||
варвару $1 | |||||
варвары $1 | |||||
варган $2 | варган $2 | ||||
варджаяны $3 | варджаяны $3 | ||||
вареанты $3 | вареанты $3 | ||||
варьирующуюся $2 | варьирующуюся $2 | ||||
варьируясь $2 | варьируясь $2 | ||||
варьяциями $2 | варьяциями $2 | ||||
варю $2 | |||||
варюсь $2 | варюсь $2 | ||||
варя $2 | |||||
варясь $2 | варясь $2 | ||||
варят $1 | варят $1 | ||||
варятся $1 | варятся $1 | ||||
видеопленки $4 | видеопленки $4 | ||||
видеопленку $4 | видеопленку $4 | ||||
видеоподсистема $6 | видеоподсистема $6 | ||||
видеоподсистемами $6 | |||||
видеопособие $5 | видеопособие $5 | ||||
видеопотока $5 | видеопотока $5 | ||||
видеопрезентацию $6 | видеопрезентацию $6 | ||||
гордого $1 | гордого $1 | ||||
гордое $1 | гордое $1 | ||||
гордому $1 | гордому $1 | ||||
гордон $2 | |||||
гордостей $1 | гордостей $1 | ||||
гордости $1 | гордости $1 | ||||
гордость $1 | гордость $1 | ||||
гренаж $2 | гренаж $2 | ||||
гренами $1 | гренами $1 | ||||
гренгуара $3 | гренгуара $3 | ||||
гренков $2 | |||||
гренком $2 | |||||
гренландец $2 | гренландец $2 | ||||
гренландок $2 | гренландок $2 | ||||
гренобль $2 | гренобль $2 | ||||
двоюродными $2 | двоюродными $2 | ||||
двоюродных $2 | двоюродных $2 | ||||
двоюсь $2 | двоюсь $2 | ||||
двоя $2 | |||||
двояковогнут $4 | двояковогнут $4 | ||||
двояковогнута $4 | двояковогнута $4 | ||||
двояковогнуто $4 | двояковогнуто $4 | ||||
домелют $2 | домелют $2 | ||||
домеля $3 | домеля $3 | ||||
домен $2 | домен $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 | домеренного $2 | ||||
домеренное $2 | домеренное $2 | ||||
ешиботе $3 | ешиботе $3 | ||||
еще $2 | еще $2 | ||||
ещеж $2 | ещеж $2 | ||||
ёзефа $2 | |||||
ёмиури $3 | ёмиури $3 | ||||
ёситака $3 | ёситака $3 | ||||
ёфикатор $3 | ёфикатор $3 | ||||
замещал $3 | замещал $3 | ||||
замещала $3 | замещала $3 | ||||
замещало $3 | замещало $3 | ||||
замещаться $3 | |||||
замещаю $3 | замещаю $3 | ||||
замещая $3 | замещая $3 | ||||
замещен $3 | замещен $3 | ||||
ильчиным $1 | ильчиным $1 | ||||
илью $2 | илью $2 | ||||
илья $2 | илья $2 | ||||
ильяс $2 | |||||
ильяшенко $3 | ильяшенко $3 | ||||
имажинизм $4 | имажинизм $4 | ||||
имажинизма $4 | имажинизма $4 | ||||
инклюзив $3 | инклюзив $3 | ||||
инклюзива $3 | инклюзива $3 | ||||
инклюзиве $3 | инклюзиве $3 | ||||
инклюзивно $3 | |||||
инклюзиву $3 | инклюзиву $3 | ||||
инклюзивы $3 | инклюзивы $3 | ||||
инкорпорации $4 | инкорпорации $4 | ||||
кривеющими $2 | кривеющими $2 | ||||
кривеющих $2 | кривеющих $2 | ||||
кривеющую $2 | кривеющую $2 | ||||
криви $2 | |||||
кривившаяся $2 | кривившаяся $2 | ||||
кривившегося $2 | кривившегося $2 | ||||
кривившееся $2 | кривившееся $2 | ||||
матвеенко $3 | матвеенко $3 | ||||
матвей $2 | матвей $2 | ||||
матвиенко $3 | матвиенко $3 | ||||
мате $2 | |||||
матевосяна $4 | матевосяна $4 | ||||
мателота $3 | мателота $3 | ||||
мателоте $3 | мателоте $3 | ||||
минеральна $3 | минеральна $3 | ||||
минерально $3 | минерально $3 | ||||
минеральны $3 | минеральны $3 | ||||
минет $1 | |||||
минете $1 | |||||
минздрав $2 | минздрав $2 | ||||
миниаквапарк $5 | миниаквапарк $5 | ||||
миниально $3 | миниально $3 | ||||
модерированию $3 | модерированию $3 | ||||
модерирования $3 | модерирования $3 | ||||
модерируемой $3 | модерируемой $3 | ||||
модерируемые $3 | |||||
модерирующие $3 | модерирующие $3 | ||||
модерирующим $3 | модерирующим $3 | ||||
модерирующих $3 | модерирующих $3 | ||||
мульчирование $2 | мульчирование $2 | ||||
мульчирования $2 | мульчирования $2 | ||||
мульчировать $2 | мульчировать $2 | ||||
мулюков $4 | |||||
мулюр $2 | мулюр $2 | ||||
муляж $2 | муляж $2 | ||||
муляжа $3 | муляжа $3 | ||||
муниципальными $4 | муниципальными $4 | ||||
муниципальных $4 | муниципальных $4 | ||||
мунэатэ $3 | мунэатэ $3 | ||||
мура $2 | |||||
мурав $2 | мурав $2 | ||||
мурава $3 | мурава $3 | ||||
муравах $3 | муравах $3 | ||||
мураве $3 | мураве $3 | ||||
муравей $3 | муравей $3 | ||||
муравейдревоточец $6 | |||||
муравленая $2 | муравленая $2 | ||||
муравленее $2 | муравленее $2 | ||||
муравленей $2 | муравленей $2 | ||||
накручивалось $2 | накручивалось $2 | ||||
накручивался $2 | накручивался $2 | ||||
накручиванием $2 | накручиванием $2 | ||||
накручивания $2 | |||||
накручивать $2 | накручивать $2 | ||||
накручиваться $2 | накручиваться $2 | ||||
накручиваюсь $2 | накручиваюсь $2 | ||||
неиндексированных $4 | неиндексированных $4 | ||||
неиндуктивный $4 | неиндуктивный $4 | ||||
неинженеров $4 | неинженеров $4 | ||||
неинклюзивную $4 | |||||
неинклюзивным $4 | неинклюзивным $4 | ||||
неинспирированный $4 | неинспирированный $4 | ||||
неинтегрированная $4 | неинтегрированная $4 | ||||
нейросетевой $5 | нейросетевой $5 | ||||
нейросетевом $5 | нейросетевом $5 | ||||
нейросетей $4 | нейросетей $4 | ||||
нейросети $4 | |||||
нейротерапию $5 | нейротерапию $5 | ||||
нейротоксина $4 | нейротоксина $4 | ||||
нейрофизиолог $5 | нейрофизиолог $5 | ||||
обеляющиеся $3 | обеляющиеся $3 | ||||
обеляющимися $3 | обеляющимися $3 | ||||
обеляющуюся $3 | обеляющуюся $3 | ||||
оберег $1 | |||||
оберега $1 | |||||
оберегавшая $4 | оберегавшая $4 | ||||
оберегавшейся $4 | оберегавшейся $4 | ||||
оберегавшемся $4 | оберегавшемся $4 | ||||
октавиана $4 | октавиана $4 | ||||
октавиане $4 | октавиане $4 | ||||
октавианом $4 | октавианом $4 | ||||
октагон $3 | |||||
октагона $3 | |||||
октагоне $3 | |||||
октагону $3 | |||||
октагоны $3 | |||||
октан $2 | октан $2 | ||||
октановая $2 | октановая $2 | ||||
октановее $2 | октановее $2 | ||||
пашалыке $3 | пашалыке $3 | ||||
пашалыки $3 | пашалыки $3 | ||||
пашалыку $3 | пашалыку $3 | ||||
пашам $2 | |||||
пашах $2 | |||||
паше $2 | |||||
пашей $2 | |||||
пашемая $1 | пашемая $1 | ||||
пашемого $1 | пашемого $1 | ||||
пашемое $1 | пашемое $1 | ||||
платки $2 | платки $2 | ||||
платков $2 | платков $2 | ||||
платком $2 | платком $2 | ||||
платку $2 | |||||
платная $1 | платная $1 | ||||
платнее $1 | платнее $1 | ||||
платники $1 | платники $1 | ||||
полномасштабная $4 | полномасштабная $4 | ||||
полномасштабное $4 | полномасштабное $4 | ||||
полномасштабный $4 | полномасштабный $4 | ||||
полномасштабным $4 | |||||
полномасштабными $4 | полномасштабными $4 | ||||
полномасштабных $4 | полномасштабных $4 | ||||
полномерна $3 | полномерна $3 | ||||
помезентеральней $5 | помезентеральней $5 | ||||
помезоморфнее $4 | помезоморфнее $4 | ||||
помезоморфней $4 | помезоморфней $4 | ||||
помела $3 | |||||
помела $2 | |||||
помеланхоличнее $5 | помеланхоличнее $5 | ||||
помеланхоличней $5 | помеланхоличней $5 | ||||
помеле $3 | помеле $3 | ||||
помелом $3 | помелом $3 | ||||
помелочнее $2 | помелочнее $2 | ||||
помелочней $2 | помелочней $2 | ||||
помелу $2 | |||||
помелу $3 | |||||
помелькай $3 | помелькай $3 | ||||
помелькайте $3 | помелькайте $3 | ||||
помелькал $3 | помелькал $3 | ||||
пупсиком $1 | пупсиком $1 | ||||
пупсику $1 | пупсику $1 | ||||
пупсинька $1 | пупсинька $1 | ||||
пупу $2 | |||||
пупы $2 | |||||
пупыре $3 | пупыре $3 | ||||
пупырей $3 | пупырей $3 | ||||
пупырем $3 | пупырем $3 | ||||
соревнующимися $3 | соревнующимися $3 | ||||
соревнующуюся $3 | соревнующуюся $3 | ||||
соревнуя $3 | соревнуя $3 | ||||
сори $2 | |||||
соригинальничавшая $4 | соригинальничавшая $4 | ||||
соригинальничавшего $4 | соригинальничавшего $4 | ||||
соригинальничавшее $4 | соригинальничавшее $4 | ||||
субфебрилитеты $5 | субфебрилитеты $5 | ||||
субфедеральная $4 | субфедеральная $4 | ||||
субфедеральные $4 | субфедеральные $4 | ||||
субфлагманским $2 | |||||
субчик $1 | субчик $1 | ||||
субчика $1 | субчика $1 | ||||
субчикам $1 | субчикам $1 | ||||
теплопродукция $4 | теплопродукция $4 | ||||
теплопрозрачность $4 | теплопрозрачность $4 | ||||
теплопрозрачный $4 | теплопрозрачный $4 | ||||
теплорассеивателя $4 | |||||
теплорассеивающая $4 | теплорассеивающая $4 | ||||
теплорассеивающей $4 | теплорассеивающей $4 | ||||
теплорассеивающими $4 | теплорассеивающими $4 | ||||
ховард $1 | ховард $1 | ||||
ховарда $1 | ховарда $1 | ||||
ховрина $1 | ховрина $1 | ||||
ховы $2 | |||||
хогсхед $1 | хогсхед $1 | ||||
ходакова $3 | ходакова $3 | ||||
ходам $2 | ходам $2 | ||||
энергопотребитель $6 | энергопотребитель $6 | ||||
энергопотребление $6 | энергопотребление $6 | ||||
энергопотреблении $6 | энергопотреблении $6 | ||||
энергопотреблений $6 | |||||
энергопотреблению $6 | энергопотреблению $6 | ||||
энергопотребления $6 | энергопотребления $6 | ||||
энергораспределения $7 | энергораспределения $7 |
или $atend // stressed at the end | или $atend // stressed at the end | ||||
ибо $u $pause // for | ибо $u $pause // for | ||||
но $u $pause // but | но $u $pause // but | ||||
при $u | |||||
при $atend | |||||
хотя $2 $pause // although | хотя $2 $pause // although | ||||
чтобы $pause // in order that | чтобы $pause // in order that | ||||
р) д (ц // Silent D(не произносимая д) | р) д (ц // Silent D(не произносимая д) | ||||
мо) де (м dE% | мо) де (м dE% | ||||
н) де (кс dE2 // яндекс, индекс/ yandex, index | н) де (кс dE2 // яндекс, индекс/ yandex, index | ||||
мо) де (л dE | |||||
_мо) де (л dE | |||||
_мо) де (лир dE% | _мо) де (лир dE% | ||||
мо) де (льер dE% | мо) де (льер dE% | ||||
мо) де (лист dE% | мо) де (лист dE% |
if (NOT WIN32) | if (NOT WIN32) | ||||
add_custom_target( | add_custom_target( | ||||
speak-ng ALL | 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 | DEPENDS espeak-ng-bin | ||||
) | ) | ||||
endif() | endif() | ||||
install(TARGETS espeak-ng-bin) | install(TARGETS espeak-ng-bin) | ||||
install(DIRECTORY include/espeak include/espeak-ng TYPE INCLUDE) | 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() |
"\t Write speech to this WAV file, rather than speaking it directly\n" | "\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" | "-b\t Input text encoding, 1=UTF8, 2=8 bit, 4=16 bit \n" | ||||
"-m\t Interpret SSML markup, and ignore other < > tags\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" | "-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 phoneme mnemonics to stdout\n" | ||||
"-X\t Write phonemes mnemonics and translation trace to stdout\n" | "-X\t Write phonemes mnemonics and translation trace to stdout\n" | ||||
{ "compile-intonations", no_argument, 0, 0x10f }, | { "compile-intonations", no_argument, 0, 0x10f }, | ||||
{ "compile-phonemes", optional_argument, 0, 0x110 }, | { "compile-phonemes", optional_argument, 0, 0x110 }, | ||||
{ "load", no_argument, 0, 0x111 }, | { "load", no_argument, 0, 0x111 }, | ||||
{ "ssml-break", required_argument, 0, 0x112 }, | |||||
{ 0, 0, 0, 0 } | { 0, 0, 0, 0 } | ||||
}; | }; | ||||
int phoneme_options = 0; | int phoneme_options = 0; | ||||
int option_linelength = 0; | int option_linelength = 0; | ||||
int option_waveout = 0; | int option_waveout = 0; | ||||
int ssml_break = -1; | |||||
bool deterministic = 0; | bool deterministic = 0; | ||||
espeak_VOICE voice_select; | espeak_VOICE voice_select; | ||||
case 0x111: // --load | case 0x111: // --load | ||||
flag_load = 1; | flag_load = 1; | ||||
break; | break; | ||||
case 0x112: // --ssml-break | |||||
ssml_break = atoi(optarg2); | |||||
break; | |||||
default: | default: | ||||
exit(0); | exit(0); | ||||
} | } | ||||
espeak_SetParameter(espeakWORDGAP, wordgap, 0); | espeak_SetParameter(espeakWORDGAP, wordgap, 0); | ||||
if (option_linelength > 0) | if (option_linelength > 0) | ||||
espeak_SetParameter(espeakLINELENGTH, 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) | if (option_punctuation == 2) | ||||
espeak_SetPunctuationList(option_punctlist); | espeak_SetPunctuationList(option_punctlist); | ||||
espeakWORDGAP=7, | espeakWORDGAP=7, | ||||
espeakOPTIONS=8, // reserved for misc. options. not yet used | espeakOPTIONS=8, // reserved for misc. options. not yet used | ||||
espeakINTONATION=9, | espeakINTONATION=9, | ||||
espeakSSML_BREAK_MUL=10, | |||||
espeakRESERVED1=10, | |||||
espeakRESERVED2=11, | espeakRESERVED2=11, | ||||
espeakEMPHASIS, /* internal use */ | espeakEMPHASIS, /* internal use */ | ||||
espeakLINELENGTH, /* internal use */ | espeakLINELENGTH, /* internal use */ |
espeak_api.c | espeak_api.c | ||||
) | ) | ||||
target_include_directories(espeak-ng BEFORE PRIVATE $<TARGET_PROPERTY:espeak-include,INTERFACE_INCLUDE_DIRECTORIES>) | |||||
if (NOT MSVC) | if (NOT MSVC) | ||||
target_compile_options(espeak-ng PRIVATE | target_compile_options(espeak-ng PRIVATE | ||||
"-fPIC" | "-fPIC" | ||||
target_link_options(espeak-ng PRIVATE "-static-libstdc++" "-static") | target_link_options(espeak-ng PRIVATE "-static-libstdc++" "-static") | ||||
endif() | endif() | ||||
set_target_properties(espeak-ng PROPERTIES | |||||
SOVERSION ${PROJECT_VERSION_MAJOR} | |||||
VERSION ${PROJECT_VERSION} | |||||
) | |||||
install(TARGETS espeak-ng LIBRARY) | install(TARGETS espeak-ng LIBRARY) |
sprintf(ph_out, "%s%s%s%s", ph_tens, ph_and, ph_digits, ph_ordinal); | sprintf(ph_out, "%s%s%s%s", ph_tens, ph_and, ph_digits, ph_ordinal); | ||||
used_and = 1; | used_and = 1; | ||||
} else { | } 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) | // 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)) { | if ((tr->langopts.numbers2 & NUM2_ORDINAL_DROP_VOWEL) && (ph_ordinal[0] != 0)) { |
translator->langopts.intonation_group = new_value & 0xff; | translator->langopts.intonation_group = new_value & 0xff; | ||||
option_tone_flags = new_value; | option_tone_flags = new_value; | ||||
break; | break; | ||||
case espeakSSML_BREAK_MUL: | |||||
break; | |||||
default: | default: | ||||
return EINVAL; | return EINVAL; | ||||
} | } |
0, // wordgap | 0, // wordgap | ||||
0, // options | 0, // options | ||||
0, // intonation | 0, // intonation | ||||
0, | |||||
100, // ssml break mul | |||||
0, | 0, | ||||
0, // emphasis | 0, // emphasis | ||||
0, // line length | 0, // line length |
if ((attr2 = GetSsmlAttribute(px, "time")) != NULL) { | if ((attr2 = GetSsmlAttribute(px, "time")) != NULL) { | ||||
value2 = attrnumber(attr2, 0, 1); // pause in mS | value2 = attrnumber(attr2, 0, 1); // pause in mS | ||||
value2 = value2 * speech_parameters[espeakSSML_BREAK_MUL] / 100; | |||||
int wpm = speech_parameters[espeakRATE]; | int wpm = speech_parameters[espeakRATE]; | ||||
espeak_SetParameter(espeakRATE, wpm, 0); | espeak_SetParameter(espeakRATE, wpm, 0); | ||||
// pitch,speed, | // 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 }; | 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 | #if USE_LIBSONIC | ||||
static sonicStream sonicSpeedupStream = NULL; | static sonicStream sonicSpeedupStream = NULL; |
if(NOT MSVC) | if(NOT MSVC) | ||||
target_compile_options(speechPlayer PRIVATE "-fPIC") | target_compile_options(speechPlayer PRIVATE "-fPIC") | ||||
endif() | endif() | ||||
install(TARGETS speechPlayer ARCHIVE) |
src/tostring.c | src/tostring.c | ||||
) | ) | ||||
target_include_directories(ucd PUBLIC src/include) | target_include_directories(ucd PUBLIC src/include) | ||||
install(TARGETS ucd ARCHIVE) |
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 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 "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 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" |
TEST_NAME=$1 | TEST_NAME=$1 | ||||
EXPECTED=$2 | EXPECTED=$2 | ||||
TEST_TEXT=$3 | TEST_TEXT=$3 | ||||
OPTS=$4 | |||||
echo "testing ${TEST_NAME}" | echo "testing ${TEST_NAME}" | ||||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | 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 || exit 1 | ||||
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | < actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | ||||
echo "${EXPECTED}" > expected.txt | echo "${EXPECTED}" > expected.txt | ||||
( 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>" 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>" 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_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" |