| 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" |