mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
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
484 lines
6.5 KiB
Plaintext
Executable File
484 lines
6.5 KiB
Plaintext
Executable File
|
||
|
||
//=========================================================
|
||
// German
|
||
//=========================================================
|
||
|
||
|
||
|
||
phoneme @ // Schwa
|
||
vowel starttype #@ endtype #@
|
||
unstressed
|
||
length 120
|
||
IF nextPh(r) THEN
|
||
IF next2Ph(isVowel) THEN
|
||
ELSE
|
||
ChangePhoneme(3)
|
||
ENDIF
|
||
ENDIF
|
||
FMT(vowel/@_4)
|
||
endphoneme
|
||
|
||
|
||
phoneme 3 // open Schwa+r
|
||
vowel starttype #@ endtype #@
|
||
unstressed flag1
|
||
length 160
|
||
FMT(vowel/a#_3) // in eSpeak 1.44, this used vowel/V_3 at end-of-word
|
||
endphoneme
|
||
|
||
phoneme 3: // open Schwa+r
|
||
vowel starttype #@ endtype #@
|
||
unstressed flag1
|
||
length 210
|
||
FMT(vowel/a#_3)
|
||
endphoneme
|
||
|
||
|
||
phoneme a
|
||
vowel starttype #a endtype #a
|
||
length 110
|
||
IF nextPh(isRhotic) THEN
|
||
length 125
|
||
ENDIF
|
||
FMT(vowel/a)
|
||
endphoneme
|
||
|
||
|
||
phoneme E
|
||
vowel starttype #e endtype #e
|
||
length 120
|
||
IF nextPh(*) THEN
|
||
length 135
|
||
ENDIF
|
||
FMT(vowel/e_mid2)
|
||
endphoneme
|
||
|
||
|
||
phoneme E2 // as[E] but reduces to @ if unstressed
|
||
vowel starttype #e endtype #e
|
||
length 120
|
||
ChangeIfDiminished(@)
|
||
IF nextPh(*) THEN
|
||
length 135
|
||
ENDIF
|
||
FMT(vowel/e_mid2)
|
||
endphoneme
|
||
|
||
|
||
phoneme I
|
||
vowel starttype #i endtype #i
|
||
length 120
|
||
IF nextPh(*) THEN
|
||
length 135
|
||
ENDIF
|
||
IfNextVowelAppend(;)
|
||
FMT(vowel/ii)
|
||
endphoneme
|
||
|
||
|
||
phoneme I:
|
||
vowel starttype #i endtype #i
|
||
length 190
|
||
FMT(vowel/ii)
|
||
endphoneme
|
||
|
||
|
||
phoneme O
|
||
vowel starttype #o endtype #o
|
||
length 120
|
||
IF nextPh(*) THEN
|
||
length 135
|
||
ENDIF
|
||
FMT(vowel/oo)
|
||
endphoneme
|
||
|
||
|
||
phoneme U
|
||
vowel starttype #u endtype #u
|
||
length 120
|
||
IF nextPh(*) THEN
|
||
length 135
|
||
ENDIF
|
||
|
||
IF nextPh(r) THEN
|
||
IF next2Ph(isVowel) THEN
|
||
ELSE
|
||
ChangePhoneme(UR)
|
||
ENDIF
|
||
ENDIF
|
||
FMT(vowel/uu_2)
|
||
endphoneme
|
||
|
||
|
||
phoneme A:
|
||
vowel starttype #a endtype #a
|
||
length 250
|
||
FMT(vowel/aa_6)
|
||
endphoneme
|
||
|
||
|
||
phoneme A // reduces to [a] if not stressed
|
||
vowel starttype #a endtype #a
|
||
length 250
|
||
ChangeIfUnstressed(a)
|
||
FMT(vowel/aa_6)
|
||
endphoneme
|
||
|
||
|
||
phoneme i:
|
||
vowel starttype #i endtype #i
|
||
length 180
|
||
IF prevPh(w) THEN
|
||
VowelStart(w/wi2)
|
||
ENDIF
|
||
FMT(vowel/i_2)
|
||
endphoneme
|
||
|
||
|
||
phoneme i2
|
||
vowel starttype #i endtype #i
|
||
length 180
|
||
ChangeIfNotStressed(I)
|
||
IF prevPh(w) THEN
|
||
VowelStart(w/wi2)
|
||
ENDIF
|
||
FMT(vowel/i_2)
|
||
endphoneme
|
||
|
||
|
||
phoneme u:
|
||
vowel starttype #u endtype #u
|
||
length 190
|
||
FMT(vowel/u)
|
||
endphoneme
|
||
|
||
|
||
phoneme aU
|
||
vowel starttype #a endtype #u
|
||
length 220
|
||
FMT(vdiph/aau_6)
|
||
endphoneme
|
||
|
||
|
||
phoneme aI
|
||
vowel starttype #a endtype #i
|
||
length 210
|
||
FMT(vdiph/ai_5)
|
||
endphoneme
|
||
|
||
|
||
phoneme EI
|
||
vowel starttype #e endtype #i
|
||
length 210
|
||
FMT(vdiph/eei)
|
||
endphoneme
|
||
|
||
|
||
|
||
phoneme OY
|
||
vowel starttype #o endtype #i
|
||
length 220
|
||
FMT(vdiph/oi)
|
||
endphoneme
|
||
|
||
|
||
phoneme E:
|
||
vowel starttype #e endtype #e
|
||
length 200
|
||
FMT(vowel/e_8)
|
||
endphoneme
|
||
|
||
|
||
phoneme e:
|
||
vowel starttype #e endtype #e
|
||
length 200
|
||
FMT(vowel/e_2)
|
||
endphoneme
|
||
|
||
|
||
phoneme o:
|
||
vowel starttype #o endtype #o
|
||
length 210
|
||
FMT(vowel/o)
|
||
endphoneme
|
||
|
||
|
||
phoneme y:
|
||
vowel starttype #u endtype #u
|
||
length 200
|
||
FMT(vowel/y)
|
||
endphoneme
|
||
|
||
|
||
phoneme y
|
||
vowel starttype #u endtype #u
|
||
ipa ʏ
|
||
length 110
|
||
IF nextPh(*) THEN
|
||
length 115
|
||
ENDIF
|
||
FMT(vowel/yy_4)
|
||
endphoneme
|
||
|
||
|
||
phoneme Y:
|
||
vowel starttype #@ endtype #@
|
||
length 220
|
||
FMT(vowel/y#)
|
||
endphoneme
|
||
|
||
|
||
phoneme W
|
||
vowel starttype #@ endtype #@
|
||
length 150
|
||
IF nextPh(*) THEN
|
||
length 160
|
||
ENDIF
|
||
FMT(vowel/oe)
|
||
endphoneme
|
||
|
||
|
||
|
||
// CONSONANTS
|
||
//===========
|
||
|
||
phoneme ts
|
||
import_phoneme consonants/ts
|
||
endphoneme
|
||
|
||
|
||
phoneme pF
|
||
vls blb afr
|
||
ipa pf
|
||
Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
|
||
lengthmod 2
|
||
WAV(ufric/f) // could replace this with a [pf] wav file
|
||
endphoneme
|
||
|
||
|
||
phoneme g# // for "ig" -> [IC] or [Ig]
|
||
vls pal frc palatal
|
||
lengthmod 3
|
||
|
||
IF nextPhW(isVoiced) THEN
|
||
ChangePhoneme(g)
|
||
ELSE
|
||
ChangePhoneme(C)
|
||
ENDIF
|
||
endphoneme
|
||
|
||
|
||
|
||
phoneme l/ // used for [l] when not before a vowel
|
||
liquid
|
||
lengthmod 7
|
||
|
||
IF nextPh(isVowel) THEN
|
||
ChangePhoneme(l)
|
||
ENDIF
|
||
|
||
PrevVowelEndings
|
||
VowelEnding(l/L1_@L, -60)
|
||
VowelEnding(l/L1_aL, -40)
|
||
VowelEnding(l/L1_eL, -30)
|
||
VowelEnding(l/L1_iL, -30)
|
||
VowelEnding(l/L1_oL, -40)
|
||
VowelEnding(l/L1_uL, -40)
|
||
EndSwitch
|
||
|
||
FMT(l/l_3)
|
||
endphoneme
|
||
|
||
|
||
phoneme j
|
||
liquid palatal
|
||
lengthmod 7
|
||
|
||
IF nextPh(isVowel) THEN
|
||
NextVowelStarts
|
||
VowelStart(j/j@)
|
||
VowelStart(j/ja)
|
||
VowelStart(j/je)
|
||
VowelStart(j/ji)
|
||
VowelStart(j/jo)
|
||
VowelStart(j/ju)
|
||
EndSwitch
|
||
|
||
VowelEnding(j/xj, -30)
|
||
|
||
IF prevPh(isPause) THEN
|
||
FMT(j/_j_short) // difference from base/j
|
||
ENDIF
|
||
ELSE
|
||
// no vowel follows
|
||
Vowelout len=70
|
||
FMT(j/j_)
|
||
ENDIF
|
||
endphoneme
|
||
|
||
|
||
phoneme r
|
||
vcd alv flp rhotic
|
||
lengthmod 6
|
||
|
||
IF prevPhW(@-) THEN
|
||
ELSE
|
||
IF nextPhW(isVowel) THEN
|
||
IF prevPhW(isVowel) THEN
|
||
ChangePhoneme(R)
|
||
ELSE
|
||
// IF thisPh(isWordStart) THEN
|
||
// ELSE
|
||
InsertPhoneme(@-)
|
||
// ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF prevPh(isFlag1) THEN
|
||
ChangePhoneme(NULL) // 'r' is already included in the previous vowel
|
||
ENDIF
|
||
|
||
CALL base/*
|
||
endphoneme
|
||
|
||
|
||
// This version of [r] was used in eSpeak 1.44, but received complaints
|
||
phoneme r2 // uvular trill or fricative
|
||
vcd uvl frc
|
||
ipa ʀ
|
||
lengthmod 6
|
||
length 110
|
||
IF nextPhW(isVowel) THEN
|
||
FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 50)
|
||
ELSE
|
||
IF prevPh(isFlag1) THEN
|
||
ChangePhoneme(NULL) // 'r' is already included in the previous vowel
|
||
ELSE
|
||
ChangePhoneme(V#)
|
||
ENDIF
|
||
ENDIF
|
||
endphoneme
|
||
|
||
|
||
|
||
|
||
phoneme V# // used for 'r' after a vowel (to create a diphthong)
|
||
liquid
|
||
lengthmod 7
|
||
IF nextPhW(isVowel) THEN
|
||
ChangePhoneme(r)
|
||
ENDIF
|
||
|
||
ipa ɐ
|
||
IF prevPh(#a) OR prevPh(E) THEN
|
||
FMT(r/V_2_)
|
||
ENDIF
|
||
IF prevPh(#u) THEN
|
||
FMT(r/@_)
|
||
ENDIF
|
||
FMT(r/V_)
|
||
endphoneme
|
||
|
||
|
||
phoneme UR
|
||
vowel starttype #u endtype #@
|
||
ipa ʊɐ
|
||
flag1
|
||
length 180
|
||
FMT(vwl_de/uu_@)
|
||
endphoneme
|
||
|
||
|
||
|
||
|
||
phoneme oU // for English words
|
||
import_phoneme en-us/oU
|
||
endphoneme
|
||
|
||
phoneme A~
|
||
vowel starttype #a endtype #a
|
||
length 260
|
||
FMT(vnasal/aa_n4)
|
||
endphoneme
|
||
|
||
|
||
|
||
// translate from English to German phonemes
|
||
equivalents en
|
||
0 O
|
||
3 3
|
||
3: W :
|
||
@ @
|
||
@- @-
|
||
@2 @
|
||
@5 @
|
||
@L U l
|
||
a a
|
||
a# a
|
||
A: A:
|
||
A@ A: r
|
||
aa a
|
||
aI aI
|
||
aI@ aI 3
|
||
aU aU
|
||
aU@ aU 3
|
||
A~ A~
|
||
E E
|
||
e: e:
|
||
e@ E: r
|
||
eI e j
|
||
i I
|
||
I I
|
||
I2 I
|
||
i: i:
|
||
i@ i: 3
|
||
i@3 i: r
|
||
O O
|
||
O: O :
|
||
o: o:
|
||
O@ O : r
|
||
o@ O : r
|
||
OI OY
|
||
oU oU
|
||
O~ O n
|
||
U U
|
||
u: u:
|
||
U@ U r
|
||
V W
|
||
IR I r
|
||
VR W r
|
||
b b
|
||
C C
|
||
d d
|
||
D D
|
||
dZ dZ
|
||
f f
|
||
g g
|
||
h h
|
||
j j
|
||
k k
|
||
l l
|
||
l# l#
|
||
m m
|
||
n n
|
||
N N
|
||
n^ n^
|
||
p p
|
||
Q Q
|
||
r r
|
||
r- r
|
||
s s
|
||
S S
|
||
t t
|
||
T T
|
||
t2 t
|
||
tS tS
|
||
v v
|
||
w w
|
||
x x
|
||
z z
|
||
Z Z
|
||
endphoneme
|