mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-30 21:25:36 +00:00
Merge branch 'master' into patch-1
This commit is contained in:
@@ -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
|
||||
)
|
||||
+1
-1
@@ -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
|
||||
|
||||
+29
-3
@@ -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
|
||||
|
||||
+21
-54
@@ -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
|
||||
|
||||
|
||||
+1
-1
@@ -155,7 +155,7 @@
|
||||
р) д (ц // Silent D(не произносимая д)
|
||||
мо) де (м dE%
|
||||
н) де (кс dE2 // яндекс, индекс/ yandex, index
|
||||
мо) де (л dE
|
||||
_мо) де (л dE
|
||||
_мо) де (лир dE%
|
||||
мо) де (льер dE%
|
||||
мо) де (лист dE%
|
||||
|
||||
+10
-2
@@ -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"
|
||||
|
||||
+5
-1
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user