mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
Fix crash when embedded control codes are followed by numbers of 5 or more digits. Fix lang=hu, First character of an abbreviation is missed after an ordinal number (eg."2. cd") Fix XML tag not recognized after "..." when announce punctuation is enabled. Fix lang=zh-yue, 'p' 't' 'k' after a vowel give a long pause. Fix lang=ru, "o" missing in unstressed syllables. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@241 d46cf337-b52f-0410-862d-fd96e6ae7743
415 lines
6.2 KiB
Plaintext
Executable File
415 lines
6.2 KiB
Plaintext
Executable File
|
|
|
|
phoneme l
|
|
import_phoneme en/l
|
|
endphoneme
|
|
|
|
|
|
phoneme r
|
|
liquid
|
|
trill
|
|
lengthmod 7
|
|
|
|
NextVowelStarts
|
|
VowelStart(r/r@, -15)
|
|
VowelStart(r/ra, -15)
|
|
VowelStart(r/re, -15)
|
|
VowelStart(r/ri, -15)
|
|
VowelStart(r/ro, -15)
|
|
VowelStart(r/ru, -15)
|
|
EndSwitch
|
|
|
|
IF nextPh(isNotVowel) THEN
|
|
ChangePhoneme(r/)
|
|
ENDIF
|
|
IF prevPhW(t) OR prevPhW(p) OR prevPhW(k) THEN
|
|
FMT(r/trr)
|
|
ENDIF
|
|
FMT(r/rr)
|
|
endphoneme
|
|
|
|
|
|
phoneme r/ // used for [r] when not preceding a vowel
|
|
liquid
|
|
lengthmod 2
|
|
IF nextPh(n) THEN
|
|
FMT(r3/r_n) addWav(r3/rx)
|
|
ENDIF
|
|
FMT(r3/r_) addWav(r3/rx)
|
|
endphoneme
|
|
|
|
|
|
phoneme ts
|
|
import_phoneme consonants/ts
|
|
endphoneme
|
|
|
|
|
|
phoneme dZ;
|
|
vcd pal afr sibilant palatal
|
|
voicingswitch tS;
|
|
lengthmod 5
|
|
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
|
|
|
|
IF PreVoicing THEN
|
|
FMT(dzh/xdzh)
|
|
ENDIF
|
|
|
|
IF nextPh(isPause2) THEN
|
|
FMT(dzh/dzh_) addWav(x/dzh_)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme tS;
|
|
vls pal afr sibilant palatal
|
|
voicingswitch dZ;
|
|
lengthmod 2
|
|
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
|
|
|
|
WAV(ustop/ts_pzd)
|
|
endphoneme
|
|
|
|
|
|
|
|
// Palatalized versions of consonants
|
|
|
|
phoneme t
|
|
import_phoneme pl/t
|
|
endphoneme
|
|
|
|
phoneme t;
|
|
import_phoneme pl/t;
|
|
endphoneme
|
|
|
|
phoneme d
|
|
import_phoneme pl/d
|
|
endphoneme
|
|
|
|
phoneme d;
|
|
import_phoneme pl/d;
|
|
endphoneme
|
|
|
|
phoneme m;
|
|
import_phoneme ro/m;
|
|
endphoneme
|
|
|
|
|
|
phoneme I^ // "silent i", palatilizes the preceding consonant
|
|
vowel starttype #i endtype #i
|
|
unstressed nonsyllabic
|
|
Length 70
|
|
IF nextPh(isVowel) THEN
|
|
ChangePhoneme(;)
|
|
ENDIF
|
|
IF prevPh(m;) THEN
|
|
FMT(vwl_ro/mi)
|
|
ENDIF
|
|
FMT(vwl_ru/ii-)
|
|
endphoneme
|
|
|
|
|
|
|
|
//*******************************************************************
|
|
// VOWELS
|
|
//*******************************************************************
|
|
|
|
phoneme i
|
|
vowel starttype #i endtype #i
|
|
Length 100
|
|
FMT(vwl_ru/i)
|
|
endphoneme
|
|
|
|
|
|
phoneme I#
|
|
vowel starttype #i endtype #i
|
|
Length 80
|
|
IF nextVowel(isMaxStress) THEN
|
|
ChangePhoneme(I)
|
|
ENDIF
|
|
IF thisPh(isMaxStress) THEN
|
|
ChangePhoneme(i)
|
|
ENDIF
|
|
FMT(vwl_ru/ii#)
|
|
endphoneme
|
|
|
|
|
|
phoneme y
|
|
vowel starttype #i endtype #i
|
|
Length 100
|
|
FMT(vwl_ru/i#)
|
|
endphoneme
|
|
|
|
|
|
phoneme I
|
|
vowel starttype #i endtype #i
|
|
Length 80
|
|
|
|
IF thisPh(isMaxStress) THEN
|
|
IF prevPhW(j) THEN
|
|
ChangePhoneme(a)
|
|
ELSE
|
|
ChangePhoneme(i)
|
|
ENDIF
|
|
ENDIF
|
|
FMT(vwl_ru/ii)
|
|
endphoneme
|
|
|
|
|
|
phoneme I2
|
|
vowel starttype #i endtype #i
|
|
Length 80
|
|
IF thisPh(isMaxStress) THEN
|
|
ChangePhoneme(e)
|
|
ENDIF
|
|
IF prevPhW(isPalatal) THEN
|
|
ChangePhoneme(I)
|
|
ENDIF
|
|
FMT(vwl_ru/ii)
|
|
endphoneme
|
|
|
|
|
|
phoneme I3
|
|
vowel starttype #i endtype #i
|
|
Length 80
|
|
IF thisPh(isMaxStress) THEN
|
|
IF prevPhW(j) THEN
|
|
ChangePhoneme(e)
|
|
ELSE
|
|
ChangePhoneme(ja)
|
|
ENDIF
|
|
ENDIF
|
|
IF prevPhW(isPalatal) THEN
|
|
ChangePhoneme(I)
|
|
ENDIF
|
|
FMT(vwl_ru/ii)
|
|
endphoneme
|
|
|
|
|
|
phoneme E
|
|
vowel starttype #e endtype #e
|
|
Length 200
|
|
FMT(vwl_ru/e)
|
|
endphoneme
|
|
|
|
|
|
phoneme E#
|
|
vowel starttype #e endtype #e
|
|
Length 100
|
|
IF thisPh(isMaxStress) THEN
|
|
IF prevPhW(j) THEN
|
|
ChangePhoneme(e)
|
|
ELSE
|
|
ChangePhoneme(E)
|
|
ENDIF
|
|
ENDIF
|
|
FMT(vwl_ru/E#)
|
|
endphoneme
|
|
|
|
|
|
phoneme E2
|
|
vowel starttype #e endtype #e
|
|
Length 80
|
|
IF nextVowel(isMaxStress) THEN
|
|
IF prevPh(j) THEN
|
|
ChangePhoneme(I3)
|
|
ELSE
|
|
ChangePhoneme(E#)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF thisPh(isMaxStress) THEN
|
|
IF prevPhW(j) THEN
|
|
ChangePhoneme(e)
|
|
ELSE
|
|
ChangePhoneme(E)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
FMT(vwl_ru/E@)
|
|
endphoneme
|
|
|
|
|
|
phoneme E3
|
|
vowel starttype #e endtype #e
|
|
Length 80
|
|
IF nextVowel(isMaxStress) THEN
|
|
ChangePhoneme(I)
|
|
ENDIF
|
|
IF thisPh(isMaxStress) THEN
|
|
ChangePhoneme(e)
|
|
ENDIF
|
|
IF prevPhW(isPalatal) THEN
|
|
ChangePhoneme(E2)
|
|
ENDIF
|
|
FMT(vwl_ru/E@)
|
|
endphoneme
|
|
|
|
|
|
phoneme o
|
|
vowel starttype #o endtype #o
|
|
Length 100
|
|
FMT(vwl_ru/o)
|
|
endphoneme
|
|
|
|
|
|
phoneme O
|
|
vowel starttype #o endtype #o
|
|
Length 80
|
|
IF prevPhW(isPalatal) THEN
|
|
ChangePhoneme(8)
|
|
ENDIF
|
|
IF thisPh(isMaxStress) THEN
|
|
ChangePhoneme(o)
|
|
ENDIF
|
|
FMT(vwl_ru/oo)
|
|
endphoneme
|
|
|
|
|
|
phoneme u
|
|
vowel starttype #u endtype #u
|
|
Length 80
|
|
FMT(vwl_ru/u)
|
|
endphoneme
|
|
|
|
phoneme u#
|
|
vowel starttype #u endtype #u
|
|
Length 80
|
|
FMT(vwl_ru/u#)
|
|
endphoneme
|
|
|
|
phoneme u"
|
|
vowel starttype #u endtype #u
|
|
Length 150
|
|
FMT(vwl_ru/u#u)
|
|
endphoneme
|
|
|
|
phoneme 8
|
|
vowel starttype #o endtype #o
|
|
Length 150
|
|
ChangeIfNotStressed(V)
|
|
FMT(vwl_ru/8)
|
|
endphoneme
|
|
|
|
phoneme e
|
|
vowel starttype #e endtype #e
|
|
Length 100
|
|
FMT(vwl_ru/ee)
|
|
endphoneme
|
|
|
|
phoneme ju
|
|
vowel starttype #u endtype #u
|
|
Length 190
|
|
FMT(vwl_ru/ju)
|
|
endphoneme
|
|
|
|
phoneme ja
|
|
vowel starttype #i endtype #a
|
|
Length 200
|
|
FMT(vwl_ru/ja)
|
|
endphoneme
|
|
|
|
phoneme V#
|
|
vowel starttype #a endtype #@
|
|
unstressed
|
|
Length 80
|
|
// IF nextVowel(isMaxStress) THEN
|
|
// not needed? because V# is only used at end-of-word
|
|
// ChangePhoneme(I3)
|
|
// ENDIF
|
|
|
|
IF thisPh(isMaxStress) THEN
|
|
IF prevPhW(j) THEN
|
|
ChangePhoneme(A)
|
|
ELSE
|
|
ChangePhoneme(ja)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF prevPhW(isPalatal) THEN
|
|
ChangePhoneme(V)
|
|
ENDIF
|
|
|
|
FMT(vowel/V_2)
|
|
endphoneme
|
|
|
|
|
|
phoneme Y // will not be used in future
|
|
vowel starttype #u endtype #u
|
|
unstressed
|
|
Length 140
|
|
FMT(vowel/ii#)
|
|
endphoneme
|
|
|
|
|
|
phoneme A
|
|
vowel starttype #a endtype #a
|
|
Length 100
|
|
FMT(vwl_ru/a)
|
|
endphoneme
|
|
|
|
|
|
phoneme a
|
|
vowel starttype #a endtype #a
|
|
Length 100
|
|
|
|
IF prevPhW(j) THEN
|
|
ELSE
|
|
IF thisPh(isMaxStress) THEN
|
|
IF prevPhW(isPalatal) THEN
|
|
ChangePhoneme(ja)
|
|
ELSE
|
|
ChangePhoneme(A)
|
|
ENDIF
|
|
ELSE
|
|
IF prevPhW(isPalatal) THEN
|
|
ChangePhoneme(I)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF thisPh(isWordEnd) THEN
|
|
FMT(vowel/a#_3)
|
|
ENDIF
|
|
FMT(vwl_ru/aa)
|
|
endphoneme
|
|
|
|
|
|
phoneme V
|
|
vowel starttype #a endtype #@
|
|
Length 80
|
|
unstressed
|
|
|
|
IF nextVowel(isMaxStress) THEN
|
|
ChangePhoneme(a)
|
|
ENDIF
|
|
|
|
IF thisPh(isMaxStress) THEN
|
|
IF prevPhW(j) THEN
|
|
ChangePhoneme(a)
|
|
ELIF prevPhW(isPalatal) THEN
|
|
ChangePhoneme(ja)
|
|
ELSE
|
|
ChangePhoneme(A)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
FMT(vowel/V_2)
|
|
endphoneme
|
|
|
|
|
|
phoneme a#
|
|
vowel starttype #a endtype #a
|
|
Length 100
|
|
FMT(vowel/a#_3)
|
|
endphoneme
|
|
|
|
|
|
phoneme R4
|
|
liquid
|
|
lengthmod 6
|
|
Vowelin f1=0 f2=1500 -300 300 f3=-200 80 rms=60 brk
|
|
Vowelout f1=2 f2=1500 -300 300 f3=-200 80
|
|
FMT(r3/r_ru2) addWav(r3/r_ru, 50)
|
|
endphoneme
|
|
|