mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
[1.44.42]
Phoneme definitions. New keyword "prevoice", always add murmer before a voiced stop, not only after a vowel. Fixed bug in nextVowel() condition. Fixed bug is condition "isRhotic". Command line options. On Windows, -- means don't treat following arguments as options. --help output now should the espeak-data path. Tools->Lexicon. Redesign Lexicon processing for Russian and Bulgarian. Numbers. Fixes for Hungarian ordinal numbers. Fixed bug where double .. was ignored. Fixed bug in reporting word event lengths in callbacks. Fixed bug in reporting marker event positions in callbacks, when non-ascii text. SSML. Allow single as well as double quotes around strings. Fix bugs in SSML "prosody rate". Speed. Only use Sonic speedups greater than x2. Use custom eSpeak speed settings when Sonic speedup is used. Mbrola. Look for Mbrola voice also at /usr/share/mbrola/xx/xx espeakedit. Try "aplay" and then "play" to play sound. Languages: Kannada (kn) now in official release. Esperanto (eo) change prosody. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@257 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
+294
-104
@@ -1,45 +1,154 @@
|
||||
|
||||
|
||||
phoneme g
|
||||
vcd vel stop prevoice
|
||||
voicingswitch k
|
||||
lengthmod 5
|
||||
Vowelin f1=2 f2=2300 200 300 f3=-300 80
|
||||
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
|
||||
|
||||
IF PreVoicing THEN
|
||||
FMT(g/xg)
|
||||
ENDIF
|
||||
|
||||
IF nextPh(isPause2) THEN
|
||||
FMT(g/g_) addWav(x/g_)
|
||||
ENDIF
|
||||
FMT(g/g) addWav(x/g3, 90)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme p
|
||||
import_phoneme consonants/p-
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
phoneme x
|
||||
vls vel frc
|
||||
lengthmod 3
|
||||
Vowelin f1=0 f2=2300 200 400 f3=-100 80
|
||||
Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
|
||||
// IF nextPh(isPause) THEN
|
||||
// WAV(ufric/x, 120)
|
||||
// ENDIF
|
||||
WAV(ufric/x_hr, 30)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme k
|
||||
import_phoneme consonants/k-
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
phoneme l
|
||||
import_phoneme en/l
|
||||
|
||||
liquid rfx
|
||||
ipa ɭ
|
||||
lengthmod 7
|
||||
length 40
|
||||
FMT(l^/l_rfx)
|
||||
endphoneme
|
||||
|
||||
phoneme l^
|
||||
liquid rfx palatal
|
||||
ipa ɭ
|
||||
// lengthmod 7
|
||||
length 80
|
||||
// FMT(l^/l^)
|
||||
FMT(l^/l_rfx)
|
||||
endphoneme
|
||||
|
||||
phoneme s
|
||||
vls alv frc sibilant
|
||||
// voicingswitch z
|
||||
lengthmod 3
|
||||
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
|
||||
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
|
||||
|
||||
// IF nextPh(isPause) THEN
|
||||
// WAV(ufric/s_)
|
||||
// ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
|
||||
// WAV(ufric/s!)
|
||||
// ENDIF
|
||||
WAV(ufric/s)
|
||||
endphoneme
|
||||
|
||||
phoneme s;
|
||||
import_phoneme en/s
|
||||
//CALL en/s
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
//phoneme n
|
||||
// vcd pal nasal
|
||||
// FMT(n/nru)
|
||||
//
|
||||
// import_phoneme en/n
|
||||
// length 200
|
||||
//endphoneme
|
||||
|
||||
phoneme n_
|
||||
// vcd pal nasal
|
||||
// FMT(n/nru)
|
||||
|
||||
import_phoneme en/n
|
||||
// length 200
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
|
||||
phoneme n#
|
||||
vcd pal nasal palatal
|
||||
ipa ɲ
|
||||
Vowelout f1=3 f2=2500 300 500 f3=100 80 len=45 brk rate
|
||||
lengthmod 4
|
||||
|
||||
IF KlattSynth THEN
|
||||
VowelStart(klatt/n^@)
|
||||
FMT(klatt/n^)
|
||||
ENDIF
|
||||
|
||||
NextVowelStarts
|
||||
VowelStart(n^/n^@)
|
||||
VowelStart(n^/n^a)
|
||||
VowelStart(n^/n^e)
|
||||
VowelStart(n^/n^i)
|
||||
VowelStart(n^/n^o)
|
||||
VowelStart(n^/n^u)
|
||||
EndSwitch
|
||||
|
||||
IF prevPh(isPause) THEN
|
||||
FMT(n^/_n^)
|
||||
ELIF nextPh(isNotVowel) THEN
|
||||
IF nextPhW(n^) THEN
|
||||
Length 75
|
||||
ELIF prevPhW(n^) THEN
|
||||
Length 100
|
||||
ENDIF
|
||||
FMT(n^/n^_)
|
||||
ENDIF
|
||||
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/)
|
||||
liquid rhotic nolink
|
||||
alv trill
|
||||
length 80
|
||||
IF prevPhW(isVowel) THEN
|
||||
ELSE
|
||||
InsertPhoneme(@-)
|
||||
ENDIF
|
||||
IF prevPhW(t) OR prevPhW(p) OR prevPhW(k) THEN
|
||||
FMT(r/trr)
|
||||
ENDIF
|
||||
FMT(r/rr)
|
||||
FMT(r3/r_trill,80) addWav(r3/r_trill.wav, 50)
|
||||
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
|
||||
Length 10
|
||||
import_phoneme consonants/ts
|
||||
endphoneme
|
||||
|
||||
@@ -51,11 +160,11 @@ phoneme dZ;
|
||||
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
|
||||
|
||||
IF PreVoicing THEN
|
||||
FMT(dzh/xdzh)
|
||||
FMT(dzh/xdzh)
|
||||
ENDIF
|
||||
|
||||
IF nextPh(isPause2) THEN
|
||||
FMT(dzh/dzh_) addWav(x/dzh_)
|
||||
FMT(dzh/dzh_) addWav(x/dzh_)
|
||||
ENDIF
|
||||
endphoneme
|
||||
|
||||
@@ -89,20 +198,54 @@ phoneme d;
|
||||
import_phoneme pl/d;
|
||||
endphoneme
|
||||
|
||||
//phoneme m;
|
||||
// import_phoneme ro/m;
|
||||
//endphoneme
|
||||
|
||||
phoneme m;
|
||||
import_phoneme ro/m;
|
||||
vcd blb nasal
|
||||
Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk
|
||||
lengthmod 4
|
||||
|
||||
IF KlattSynth THEN
|
||||
Vowelin f1=0 f2=1000 -50 -200 f3=-200 80
|
||||
IF nextPh(isPause2) THEN
|
||||
FMT(klatt/m_)
|
||||
ENDIF
|
||||
FMT(klatt/m)
|
||||
ENDIF
|
||||
|
||||
VowelStart(m/mi)
|
||||
|
||||
// NextVowelStarts
|
||||
// VowelStart(m/m@)
|
||||
// VowelStart(m/ma)
|
||||
// VowelStart(m/me)
|
||||
// VowelStart(m/mi)
|
||||
// VowelStart(m/mo)
|
||||
// VowelStart(m/mu)
|
||||
// EndSwitch
|
||||
|
||||
// IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
|
||||
FMT(m/mj)
|
||||
// ELIF prevPh(isPause) THEN
|
||||
// FMT(m/_m)
|
||||
// ELIF nextPh(isNotVowel) THEN
|
||||
// FMT(m/m_)
|
||||
// ENDIF
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme I^ // "silent i", palatilizes the preceding consonant
|
||||
|
||||
phoneme I^ // "silent i", palatilizes the preceding consonant
|
||||
vowel starttype #i endtype #i
|
||||
unstressed nonsyllabic
|
||||
Length 70
|
||||
IF nextPh(isVowel) THEN
|
||||
ChangePhoneme(;)
|
||||
ChangePhoneme(;)
|
||||
ENDIF
|
||||
IF prevPh(m;) THEN
|
||||
FMT(vwl_ro/mi)
|
||||
FMT(vwl_ro/mi)
|
||||
ENDIF
|
||||
FMT(vwl_ru/ii-)
|
||||
endphoneme
|
||||
@@ -114,9 +257,12 @@ endphoneme
|
||||
//*******************************************************************
|
||||
|
||||
phoneme i
|
||||
IF prevPh(Z) THEN
|
||||
ChangePhoneme(y)
|
||||
ENDIF
|
||||
vowel starttype #i endtype #i
|
||||
Length 100
|
||||
FMT(vwl_ru/i)
|
||||
Length 50
|
||||
FMT(vwl_ru/ii)
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -124,10 +270,10 @@ phoneme I#
|
||||
vowel starttype #i endtype #i
|
||||
Length 80
|
||||
IF nextVowel(isMaxStress) THEN
|
||||
ChangePhoneme(I)
|
||||
ChangePhoneme(I)
|
||||
ENDIF
|
||||
IF thisPh(isMaxStress) THEN
|
||||
ChangePhoneme(i)
|
||||
ChangePhoneme(i)
|
||||
ENDIF
|
||||
FMT(vwl_ru/ii#)
|
||||
endphoneme
|
||||
@@ -145,11 +291,11 @@ phoneme I
|
||||
Length 80
|
||||
|
||||
IF thisPh(isMaxStress) THEN
|
||||
IF prevPhW(j) THEN
|
||||
ChangePhoneme(a)
|
||||
ELSE
|
||||
ChangePhoneme(i)
|
||||
ENDIF
|
||||
IF prevPhW(j) THEN
|
||||
ChangePhoneme(a)
|
||||
ELSE
|
||||
ChangePhoneme(i)
|
||||
ENDIF
|
||||
ENDIF
|
||||
FMT(vwl_ru/ii)
|
||||
endphoneme
|
||||
@@ -159,10 +305,10 @@ phoneme I2
|
||||
vowel starttype #i endtype #i
|
||||
Length 80
|
||||
IF thisPh(isMaxStress) THEN
|
||||
ChangePhoneme(e)
|
||||
ChangePhoneme(e)
|
||||
ENDIF
|
||||
IF prevPhW(isPalatal) THEN
|
||||
ChangePhoneme(I)
|
||||
ChangePhoneme(I)
|
||||
ENDIF
|
||||
FMT(vwl_ru/ii)
|
||||
endphoneme
|
||||
@@ -172,14 +318,14 @@ phoneme I3
|
||||
vowel starttype #i endtype #i
|
||||
Length 80
|
||||
IF thisPh(isMaxStress) THEN
|
||||
IF prevPhW(j) THEN
|
||||
ChangePhoneme(e)
|
||||
ELSE
|
||||
ChangePhoneme(ja)
|
||||
ENDIF
|
||||
IF prevPhW(j) THEN
|
||||
ChangePhoneme(e)
|
||||
ELSE
|
||||
ChangePhoneme(ja)
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF prevPhW(isPalatal) THEN
|
||||
ChangePhoneme(I)
|
||||
ChangePhoneme(I)
|
||||
ENDIF
|
||||
FMT(vwl_ru/ii)
|
||||
endphoneme
|
||||
@@ -187,7 +333,7 @@ endphoneme
|
||||
|
||||
phoneme E
|
||||
vowel starttype #e endtype #e
|
||||
Length 200
|
||||
Length 100
|
||||
FMT(vwl_ru/e)
|
||||
endphoneme
|
||||
|
||||
@@ -196,11 +342,11 @@ phoneme E#
|
||||
vowel starttype #e endtype #e
|
||||
Length 100
|
||||
IF thisPh(isMaxStress) THEN
|
||||
IF prevPhW(j) THEN
|
||||
ChangePhoneme(e)
|
||||
ELSE
|
||||
ChangePhoneme(E)
|
||||
ENDIF
|
||||
IF prevPhW(j) THEN
|
||||
ChangePhoneme(e)
|
||||
ELSE
|
||||
ChangePhoneme(E)
|
||||
ENDIF
|
||||
ENDIF
|
||||
FMT(vwl_ru/E#)
|
||||
endphoneme
|
||||
@@ -210,19 +356,19 @@ phoneme E2
|
||||
vowel starttype #e endtype #e
|
||||
Length 80
|
||||
IF nextVowel(isMaxStress) THEN
|
||||
IF prevPh(j) THEN
|
||||
ChangePhoneme(I3)
|
||||
ELSE
|
||||
ChangePhoneme(E#)
|
||||
ENDIF
|
||||
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
|
||||
IF prevPhW(j) THEN
|
||||
ChangePhoneme(e)
|
||||
ELSE
|
||||
ChangePhoneme(E)
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
FMT(vwl_ru/E@)
|
||||
@@ -233,21 +379,29 @@ phoneme E3
|
||||
vowel starttype #e endtype #e
|
||||
Length 80
|
||||
IF nextVowel(isMaxStress) THEN
|
||||
ChangePhoneme(I)
|
||||
ChangePhoneme(I)
|
||||
ENDIF
|
||||
IF thisPh(isMaxStress) THEN
|
||||
ChangePhoneme(e)
|
||||
ChangePhoneme(e)
|
||||
ENDIF
|
||||
IF prevPhW(isPalatal) THEN
|
||||
ChangePhoneme(E2)
|
||||
ChangePhoneme(E2)
|
||||
ENDIF
|
||||
FMT(vwl_ru/E@)
|
||||
endphoneme
|
||||
|
||||
phoneme E% // е in prefix "интер"
|
||||
vowel
|
||||
// starttype #e endtype #e
|
||||
//ChangeIfNotStressed(y)
|
||||
ChangePhoneme(E#)
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme o
|
||||
vowel starttype #o endtype #o
|
||||
Length 100
|
||||
ChangeIfNotStressed(V)
|
||||
FMT(vwl_ru/o)
|
||||
endphoneme
|
||||
|
||||
@@ -256,10 +410,10 @@ phoneme O
|
||||
vowel starttype #o endtype #o
|
||||
Length 80
|
||||
IF prevPhW(isPalatal) THEN
|
||||
ChangePhoneme(8)
|
||||
ChangePhoneme(8)
|
||||
ENDIF
|
||||
IF thisPh(isMaxStress) THEN
|
||||
ChangePhoneme(o)
|
||||
ChangePhoneme(o)
|
||||
ENDIF
|
||||
FMT(vwl_ru/oo)
|
||||
endphoneme
|
||||
@@ -285,7 +439,7 @@ endphoneme
|
||||
|
||||
phoneme 8
|
||||
vowel starttype #o endtype #o
|
||||
Length 150
|
||||
Length 100
|
||||
ChangeIfNotStressed(V)
|
||||
FMT(vwl_ru/8)
|
||||
endphoneme
|
||||
@@ -293,6 +447,19 @@ endphoneme
|
||||
phoneme e
|
||||
vowel starttype #e endtype #e
|
||||
Length 100
|
||||
IF prevPh(Z) THEN
|
||||
ChangeIfNotStressed(y)
|
||||
ChangePhoneme(E)
|
||||
ENDIF
|
||||
IF prevPh(S) THEN
|
||||
ChangeIfNotStressed(y)
|
||||
ChangePhoneme(E)
|
||||
ENDIF
|
||||
IF prevPh(ts) THEN
|
||||
ChangeIfNotStressed(y)
|
||||
ChangePhoneme(E)
|
||||
ENDIF
|
||||
ChangeIfNotStressed(i)
|
||||
FMT(vwl_ru/ee)
|
||||
endphoneme
|
||||
|
||||
@@ -304,29 +471,51 @@ endphoneme
|
||||
|
||||
phoneme ja
|
||||
vowel starttype #i endtype #a
|
||||
Length 200
|
||||
FMT(vwl_ru/ja)
|
||||
IF thisPh(isMaxStress) THEN
|
||||
Length 200
|
||||
FMT(vwl_ru/ja)
|
||||
ELSE
|
||||
FMT(vdiph2/ii@)
|
||||
ENDIF
|
||||
endphoneme
|
||||
|
||||
phoneme ja#
|
||||
vowel starttype #i endtype #a
|
||||
IF thisPh(isMaxStress) THEN
|
||||
FMT(vowel/&)
|
||||
// ChangePhoneme(A)
|
||||
ELSE
|
||||
IF prevPhW(isPalatal) THEN
|
||||
ChangePhoneme(I)
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
// 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)
|
||||
// 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
|
||||
IF prevPhW(j) THEN
|
||||
ChangePhoneme(A)
|
||||
ELSE
|
||||
ChangePhoneme(ja)
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF prevPhW(isPalatal) THEN
|
||||
ChangePhoneme(V)
|
||||
ChangePhoneme(V)
|
||||
ENDIF
|
||||
|
||||
FMT(vowel/V_2)
|
||||
@@ -354,21 +543,21 @@ phoneme a
|
||||
|
||||
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
|
||||
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)
|
||||
FMT(vowel/a#_3)
|
||||
ENDIF
|
||||
FMT(vwl_ru/aa)
|
||||
endphoneme
|
||||
@@ -380,17 +569,17 @@ phoneme V
|
||||
unstressed
|
||||
|
||||
IF nextVowel(isMaxStress) THEN
|
||||
ChangePhoneme(a)
|
||||
ChangePhoneme(a)
|
||||
ENDIF
|
||||
|
||||
IF thisPh(isMaxStress) THEN
|
||||
IF prevPhW(j) THEN
|
||||
ChangePhoneme(a)
|
||||
ELIF prevPhW(isPalatal) THEN
|
||||
ChangePhoneme(ja)
|
||||
ELSE
|
||||
ChangePhoneme(A)
|
||||
ENDIF
|
||||
IF prevPhW(j) THEN
|
||||
ChangePhoneme(a)
|
||||
// ELIF prevPhW(isPalatal) THEN
|
||||
// ChangePhoneme(ja)
|
||||
ELSE
|
||||
ChangePhoneme(A)
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
FMT(vowel/V_2)
|
||||
@@ -412,3 +601,4 @@ phoneme R4
|
||||
FMT(r3/r_ru2) addWav(r3/r_ru, 50)
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user