Merge branch 'master' into patch-1

This commit is contained in:
Juho Hiltunen
2023-04-02 10:03:43 +03:00
committed by GitHub
23 changed files with 154 additions and 73 deletions
+5
View File
@@ -12,6 +12,7 @@ include(cmake/deps.cmake)
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)
@@ -29,3 +30,7 @@ message(STATUS " libpcaudio: ${USE_LIBPCAUDIO} (${PCAUDIO_LIB} ${PCAUDIO_INC})"
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
)
+1 -1
View File
@@ -17,7 +17,7 @@ updated languages:
* 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
+2
View File
@@ -12,3 +12,5 @@ if (HAVE_PTHREAD)
else() else()
set(USE_ASYNC OFF) set(USE_ASYNC OFF)
endif() endif()
option(ESPEAK_COMPAT "Install compat binary symlinks" OFF)
+28
View File
@@ -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()
+18
View File
@@ -15,3 +15,21 @@ list(APPEND CPACK_SOURCE_IGNORE_FILES
/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
)
+1
View File
@@ -3052,6 +3052,7 @@ purport $2
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
+29 -3
View File
@@ -284,7 +284,7 @@ n Ene
ñ 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
@@ -310,12 +310,17 @@ _ó 'o||aTEntw'aDa
ç $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
@@ -325,12 +330,18 @@ izqda izquierda $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
@@ -350,26 +361,36 @@ vietnam $2
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
@@ -377,16 +398,21 @@ mozilla moT'ila
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
@@ -394,4 +420,4 @@ window w'indow
// Main nouns Dictionary // Main nouns Dictionary
cataplum $3 cataplum $3
progrom $3
+21 -54
View File
@@ -35153,6 +35153,8 @@
бонусная $1 бонусная $1
бонусной $1 бонусной $1
бонусную $1 бонусную $1
бонусные $1
бонусный $1
бонусных $1 бонусных $1
бонусов $1 бонусов $1
бонусом $1 бонусом $1
@@ -44161,8 +44163,6 @@
варварство $1 варварство $1
варварством $1 варварством $1
варварству $1 варварству $1
варвару $1
варвары $1
варган $2 варган $2
варджаяны $3 варджаяны $3
вареанты $3 вареанты $3
@@ -44473,9 +44473,7 @@
варьирующуюся $2 варьирующуюся $2
варьируясь $2 варьируясь $2
варьяциями $2 варьяциями $2
варю $2
варюсь $2 варюсь $2
варя $2
варясь $2 варясь $2
варят $1 варят $1
варятся $1 варятся $1
@@ -56794,6 +56792,7 @@
видеопленки $4 видеопленки $4
видеопленку $4 видеопленку $4
видеоподсистема $6 видеоподсистема $6
видеоподсистемами $6
видеопособие $5 видеопособие $5
видеопотока $5 видеопотока $5
видеопрезентацию $6 видеопрезентацию $6
@@ -128722,7 +128721,6 @@
гордого $1 гордого $1
гордое $1 гордое $1
гордому $1 гордому $1
гордон $2
гордостей $1 гордостей $1
гордости $1 гордости $1
гордость $1 гордость $1
@@ -131854,8 +131852,6 @@
гренаж $2 гренаж $2
гренами $1 гренами $1
гренгуара $3 гренгуара $3
гренков $2
гренком $2
гренландец $2 гренландец $2
гренландок $2 гренландок $2
гренобль $2 гренобль $2
@@ -137292,7 +137288,6 @@
двоюродными $2 двоюродными $2
двоюродных $2 двоюродных $2
двоюсь $2 двоюсь $2
двоя $2
двояковогнут $4 двояковогнут $4
двояковогнута $4 двояковогнута $4
двояковогнуто $4 двояковогнуто $4
@@ -153366,31 +153361,6 @@
домелют $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
@@ -166157,7 +166127,6 @@
ешиботе $3 ешиботе $3
еще $2 еще $2
ещеж $2 ещеж $2
ёзефа $2
ёмиури $3 ёмиури $3
ёситака $3 ёситака $3
ёфикатор $3 ёфикатор $3
@@ -189341,6 +189310,7 @@
замещал $3 замещал $3
замещала $3 замещала $3
замещало $3 замещало $3
замещаться $3
замещаю $3 замещаю $3
замещая $3 замещая $3
замещен $3 замещен $3
@@ -225729,6 +225699,7 @@
ильчиным $1 ильчиным $1
илью $2 илью $2
илья $2 илья $2
ильяс $2
ильяшенко $3 ильяшенко $3
имажинизм $4 имажинизм $4
имажинизма $4 имажинизма $4
@@ -227973,6 +227944,7 @@
инклюзив $3 инклюзив $3
инклюзива $3 инклюзива $3
инклюзиве $3 инклюзиве $3
инклюзивно $3
инклюзиву $3 инклюзиву $3
инклюзивы $3 инклюзивы $3
инкорпорации $4 инкорпорации $4
@@ -267391,7 +267363,6 @@
кривеющими $2 кривеющими $2
кривеющих $2 кривеющих $2
кривеющую $2 кривеющую $2
криви $2
кривившаяся $2 кривившаяся $2
кривившегося $2 кривившегося $2
кривившееся $2 кривившееся $2
@@ -293818,7 +293789,6 @@
матвеенко $3 матвеенко $3
матвей $2 матвей $2
матвиенко $3 матвиенко $3
мате $2
матевосяна $4 матевосяна $4
мателота $3 мателота $3
мателоте $3 мателоте $3
@@ -303456,8 +303426,6 @@
минеральна $3 минеральна $3
минерально $3 минерально $3
минеральны $3 минеральны $3
минет $1
минете $1
минздрав $2 минздрав $2
миниаквапарк $5 миниаквапарк $5
миниально $3 миниально $3
@@ -306699,6 +306667,7 @@
модерированию $3 модерированию $3
модерирования $3 модерирования $3
модерируемой $3 модерируемой $3
модерируемые $3
модерирующие $3 модерирующие $3
модерирующим $3 модерирующим $3
модерирующих $3 модерирующих $3
@@ -311996,6 +311965,7 @@
мульчирование $2 мульчирование $2
мульчирования $2 мульчирования $2
мульчировать $2 мульчировать $2
мулюков $4
мулюр $2 мулюр $2
муляж $2 муляж $2
муляжа $3 муляжа $3
@@ -312128,13 +312098,11 @@
муниципальными $4 муниципальными $4
муниципальных $4 муниципальных $4
мунэатэ $3 мунэатэ $3
мура $2
мурав $2 мурав $2
мурава $3 мурава $3
муравах $3 муравах $3
мураве $3 мураве $3
муравей $3 муравей $3
муравейдревоточец $6
муравленая $2 муравленая $2
муравленее $2 муравленее $2
муравленей $2 муравленей $2
@@ -325237,6 +325205,7 @@
накручивалось $2 накручивалось $2
накручивался $2 накручивался $2
накручиванием $2 накручиванием $2
накручивания $2
накручивать $2 накручивать $2
накручиваться $2 накручиваться $2
накручиваюсь $2 накручиваюсь $2
@@ -346615,6 +346584,7 @@
неиндексированных $4 неиндексированных $4
неиндуктивный $4 неиндуктивный $4
неинженеров $4 неинженеров $4
неинклюзивную $4
неинклюзивным $4 неинклюзивным $4
неинспирированный $4 неинспирированный $4
неинтегрированная $4 неинтегрированная $4
@@ -347091,7 +347061,6 @@
нейросетевой $5 нейросетевой $5
нейросетевом $5 нейросетевом $5
нейросетей $4 нейросетей $4
нейросети $4
нейротерапию $5 нейротерапию $5
нейротоксина $4 нейротоксина $4
нейрофизиолог $5 нейрофизиолог $5
@@ -363281,8 +363250,6 @@
обеляющиеся $3 обеляющиеся $3
обеляющимися $3 обеляющимися $3
обеляющуюся $3 обеляющуюся $3
оберег $1
оберега $1
оберегавшая $4 оберегавшая $4
оберегавшейся $4 оберегавшейся $4
оберегавшемся $4 оберегавшемся $4
@@ -387369,6 +387336,11 @@
октавиана $4 октавиана $4
октавиане $4 октавиане $4
октавианом $4 октавианом $4
октагон $3
октагона $3
октагоне $3
октагону $3
октагоны $3
октан $2 октан $2
октановая $2 октановая $2
октановее $2 октановее $2
@@ -430879,10 +430851,6 @@
пашалыке $3 пашалыке $3
пашалыки $3 пашалыки $3
пашалыку $3 пашалыку $3
пашам $2
пашах $2
паше $2
пашей $2
пашемая $1 пашемая $1
пашемого $1 пашемого $1
пашемое $1 пашемое $1
@@ -462110,7 +462078,6 @@
платки $2 платки $2
платков $2 платков $2
платком $2 платком $2
платку $2
платная $1 платная $1
платнее $1 платнее $1
платники $1 платники $1
@@ -502471,6 +502438,7 @@
полномасштабная $4 полномасштабная $4
полномасштабное $4 полномасштабное $4
полномасштабный $4 полномасштабный $4
полномасштабным $4
полномасштабными $4 полномасштабными $4
полномасштабных $4 полномасштабных $4
полномерна $3 полномерна $3
@@ -507471,7 +507439,7 @@
помезентеральней $5 помезентеральней $5
помезоморфнее $4 помезоморфнее $4
помезоморфней $4 помезоморфней $4
помела $3 помела $2
помеланхоличнее $5 помеланхоличнее $5
помеланхоличней $5 помеланхоличней $5
помеле $3 помеле $3
@@ -507555,7 +507523,7 @@
помелом $3 помелом $3
помелочнее $2 помелочнее $2
помелочней $2 помелочней $2
помелу $2 помелу $3
помелькай $3 помелькай $3
помелькайте $3 помелькайте $3
помелькал $3 помелькал $3
@@ -589465,8 +589433,6 @@
пупсиком $1 пупсиком $1
пупсику $1 пупсику $1
пупсинька $1 пупсинька $1
пупу $2
пупы $2
пупыре $3 пупыре $3
пупырей $3 пупырей $3
пупырем $3 пупырем $3
@@ -682414,7 +682380,6 @@
соревнующимися $3 соревнующимися $3
соревнующуюся $3 соревнующуюся $3
соревнуя $3 соревнуя $3
сори $2
соригинальничавшая $4 соригинальничавшая $4
соригинальничавшего $4 соригинальничавшего $4
соригинальничавшее $4 соригинальничавшее $4
@@ -703405,6 +703370,7 @@
субфебрилитеты $5 субфебрилитеты $5
субфедеральная $4 субфедеральная $4
субфедеральные $4 субфедеральные $4
субфлагманским $2
субчик $1 субчик $1
субчика $1 субчика $1
субчикам $1 субчикам $1
@@ -715717,6 +715683,7 @@
теплопродукция $4 теплопродукция $4
теплопрозрачность $4 теплопрозрачность $4
теплопрозрачный $4 теплопрозрачный $4
теплорассеивателя $4
теплорассеивающая $4 теплорассеивающая $4
теплорассеивающей $4 теплорассеивающей $4
теплорассеивающими $4 теплорассеивающими $4
@@ -769243,7 +769210,6 @@
ховард $1 ховард $1
ховарда $1 ховарда $1
ховрина $1 ховрина $1
ховы $2
хогсхед $1 хогсхед $1
ходакова $3 ходакова $3
ходам $2 ходам $2
@@ -799632,6 +799598,7 @@
энергопотребитель $6 энергопотребитель $6
энергопотребление $6 энергопотребление $6
энергопотреблении $6 энергопотреблении $6
энергопотреблений $6
энергопотреблению $6 энергопотреблению $6
энергопотребления $6 энергопотребления $6
энергораспределения $7 энергораспределения $7
+2
View File
@@ -138,6 +138,8 @@ _, zVpit'aja
или $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
+1 -1
View File
@@ -155,7 +155,7 @@
р) д (ц // Silent D(не произносимая д) р) д (ц // Silent D(не произносимая д)
мо) де (м dE% мо) де (м dE%
н) де (кс dE2 // яндекс, индекс/ yandex, index н) де (кс dE2 // яндекс, индекс/ yandex, index
мо) де (л dE _мо) де (л dE
_мо) де (лир dE% _мо) де (лир dE%
мо) де (льер dE% мо) де (льер dE%
мо) де (лист dE% мо) де (лист dE%
+10 -2
View File
@@ -19,10 +19,18 @@ endif()
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 COMMAND ${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}/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()
+9
View File
@@ -77,6 +77,8 @@ static const char *help_text =
"\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"
@@ -331,6 +333,7 @@ int main(int argc, char **argv)
{ "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 }
}; };
@@ -361,6 +364,7 @@ int main(int argc, char **argv)
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;
@@ -586,6 +590,9 @@ int main(int argc, char **argv)
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);
} }
@@ -677,6 +684,8 @@ int main(int argc, char **argv)
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);
+1 -1
View File
@@ -416,8 +416,8 @@ typedef enum {
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 */
+7
View File
@@ -38,6 +38,8 @@ add_library(espeak-ng
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"
@@ -113,4 +115,9 @@ if (MINGW)
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)
+7 -6
View File
@@ -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); 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 (((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0)) {
if ((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS) if ((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS)
next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type; next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type;
if ((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL)) if ((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL))
ph_tens[ix] = 0; 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)) {
+2
View File
@@ -336,6 +336,8 @@ espeak_ng_STATUS SetParameter(int parameter, int value, int relative)
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;
} }
+1 -1
View File
@@ -349,7 +349,7 @@ const int param_defaults[N_SPEECH_PARAM] = {
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
+2
View File
@@ -882,6 +882,8 @@ int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outbuf, con
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);
+1 -1
View File
@@ -119,7 +119,7 @@ int wcmdq_tail = 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;
-1
View File
@@ -7,4 +7,3 @@ target_include_directories(speechPlayer PUBLIC include)
if(NOT MSVC) if(NOT MSVC)
target_compile_options(speechPlayer PRIVATE "-fPIC") target_compile_options(speechPlayer PRIVATE "-fPIC")
endif() endif()
install(TARGETS speechPlayer ARCHIVE)
-1
View File
@@ -7,4 +7,3 @@ add_library(ucd STATIC
src/tostring.c src/tostring.c
) )
target_include_directories(ucd PUBLIC src/include) target_include_directories(ucd PUBLIC src/include)
install(TARGETS ucd ARCHIVE)
+1
View File
@@ -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 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"
+5 -1
View File
@@ -8,10 +8,11 @@ test_ssml_audio() {
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
@@ -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>" 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"