Browse Source

Merge branch 'master' into patch-1

master
Juho Hiltunen 2 years ago
parent
commit
7b27bb2d9c
No account linked to committer's email address

+ 5
- 0
CMakeLists.txt View File

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
)

+ 1
- 1
ChangeLog.md View File

* 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
- 0
cmake/config.cmake View File

else() else()
set(USE_ASYNC OFF) set(USE_ASYNC OFF)
endif() endif()

option(ESPEAK_COMPAT "Install compat binary symlinks" OFF)

+ 28
- 0
cmake/docs.cmake View File

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
- 0
cmake/package.cmake View File

/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
- 0
dictsource/en_list View File

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
dictsource/es_list View File

ñ 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

+ 21
- 54
dictsource/extra/ru_listx View File

бонусная $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

+ 2
- 0
dictsource/ru_list View File

или $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
dictsource/ru_rules View File

р) д (ц // Silent D(не произносимая д) р) д (ц // Silent D(не произносимая д)
мо) де (м dE% мо) де (м dE%
н) де (кс dE2 // яндекс, индекс/ yandex, index н) де (кс dE2 // яндекс, индекс/ yandex, index
мо) де (л dE
_мо) де (л dE
_мо) де (лир dE% _мо) де (лир dE%
мо) де (льер dE% мо) де (льер dE%
мо) де (лист dE% мо) де (лист dE%

+ 10
- 2
src/CMakeLists.txt View File

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()

+ 9
- 0
src/espeak-ng.c View File

"\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);



+ 1
- 1
src/include/espeak-ng/speak_lib.h View File

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
- 0
src/libespeak-ng/CMakeLists.txt View File

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)

+ 7
- 6
src/libespeak-ng/numbers.c View File

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)) {

+ 2
- 0
src/libespeak-ng/setlengths.c View File

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
src/libespeak-ng/speech.c View File

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
- 0
src/libespeak-ng/ssml.c View File

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
src/libespeak-ng/wavegen.c View File



// 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;

+ 0
- 1
src/speechPlayer/CMakeLists.txt View File

if(NOT MSVC) if(NOT MSVC)
target_compile_options(speechPlayer PRIVATE "-fPIC") target_compile_options(speechPlayer PRIVATE "-fPIC")
endif() endif()
install(TARGETS speechPlayer ARCHIVE)

+ 0
- 1
src/ucd-tools/CMakeLists.txt View File

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
- 0
tests/language-numbers-cardinal.test View File

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
tests/ssml.test View File

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"

Loading…
Cancel
Save