mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-03 06:12:55 +00:00
Fix: Speak punctuation option also caused text after [[ to be spoken as phoneme codes even if espeakPHONEMES flag is not set. Speak sequences of letters and dots as individual letters, and don't speak 'dot', eg. "u.s.a." Don't announce punctuation in the alternative text inside <audio ... </audio> Vowelcharts, show the positions of multiple FMT() in vowel phonemes definitions. Phoneme definitions: New attributes: flag1, flag2, flag3 New attribute: nopause. Prevents the insertion of a short pause when this phoneme starts a word which follows a vowel. New conditions: isFlag1, isFlag2, isFlag3, isSibilant. New statement: InsertPhoneme() Phonemes: improve syllablic [m-] [n-] [N-] *_rules: add attributes $p_alt .. $p_alt3, $w_alt .. $w_alt3 *_list: add attributes: $sentence, $atstart klatt synthesizer: implement echo. espeakedit, Prosody display: Indicate stressed and secondary-stress syllables. espeakedit: remember window size and position. Intonation: New file, 'phsource/intonation' to define 'tunes' which can be used from voice files. espeakedit: add Compile -> Intonationm data Speed: Increase range to 80 to 450, with default=175. Improve speaking at high speeds. lang=en: Reduce consecutive unstressed syllables to 'diminished' stress, only in unstressed words. lang=de: Change 'r' phoneme. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@244 d46cf337-b52f-0410-862d-fd96e6ae7743
324 lines
4.9 KiB
Plaintext
324 lines
4.9 KiB
Plaintext
|
|
//*******************************************************************
|
|
// VOWELS
|
|
//*******************************************************************
|
|
|
|
|
|
phoneme 3 // Schwa, used for rhotic schwa in American
|
|
vowel starttype #@ endtype #@
|
|
unstressed
|
|
length 210
|
|
IfNextVowelAppend(r-)
|
|
FMT(vwl_en_us/3_us)
|
|
endphoneme
|
|
|
|
|
|
phoneme @ // Schwa
|
|
vowel starttype #@ endtype #@
|
|
unstressed
|
|
length 130
|
|
IF nextPh(isRhotic) THEN
|
|
ChangePhoneme(3)
|
|
ENDIF
|
|
FMT(vowel/@_4)
|
|
endphoneme
|
|
|
|
phoneme @/ // Schwa, end of word
|
|
vowel starttype #@ endtype #@
|
|
unstressed
|
|
length 130
|
|
FMT(vowel/@_low2)
|
|
endphoneme
|
|
|
|
phoneme @2 // Schwa, changes to I before a vowel
|
|
vowel starttype #@ endtype #@
|
|
unstressed
|
|
length 120
|
|
IF nextPh(isVowel) THEN
|
|
ChangePhoneme(I2)
|
|
ENDIF
|
|
FMT(vowel/@_low2)
|
|
endphoneme
|
|
|
|
phoneme @L
|
|
vowel starttype #@ endtype l
|
|
unstressed
|
|
length 160
|
|
FMT(vwl_en/@L)
|
|
endphoneme
|
|
|
|
|
|
phoneme a
|
|
vowel starttype #e endtype #@
|
|
length 210
|
|
|
|
ChangeIfDiminished(a#)
|
|
|
|
IF nextPh(isNasal) THEN
|
|
FMT(vnasal/ee_n2)
|
|
ENDIF
|
|
FMT(vwl_en_us/a)
|
|
endphoneme
|
|
|
|
|
|
phoneme aa // 'bath' etc.
|
|
import_phoneme en-us/a
|
|
endphoneme
|
|
|
|
|
|
phoneme a#
|
|
vowel starttype #@ endtype #@
|
|
unstressed
|
|
length 150
|
|
FMT(vowel/a#_3)
|
|
endphoneme
|
|
|
|
|
|
phoneme E
|
|
vowel starttype #e endtype #e
|
|
length 195
|
|
ChangeIfDiminished(I2)
|
|
FMT(vwl_en_us/ee)
|
|
endphoneme
|
|
|
|
|
|
phoneme I
|
|
vowel starttype #i endtype #i
|
|
length 160
|
|
IfNextVowelAppend(;)
|
|
ChangeIfDiminished(I2)
|
|
FMT(vowel/ii_4)
|
|
endphoneme
|
|
|
|
|
|
phoneme I2
|
|
vowel starttype #i endtype #i
|
|
unstressed
|
|
length 160
|
|
IfNextVowelAppend(;)
|
|
FMT(vowel/ii#_3)
|
|
endphoneme
|
|
|
|
|
|
phoneme i // optional variant of [I] for end of words
|
|
vowel starttype #i endtype #i
|
|
unstressed
|
|
length 170
|
|
IfNextVowelAppend(;)
|
|
FMT(vowel/ii_final)
|
|
endphoneme
|
|
|
|
|
|
phoneme 0
|
|
vowel starttype #a endtype #a
|
|
length 200
|
|
ChangeIfDiminished(@)
|
|
IF nextPh(r) THEN
|
|
FMT(vwl_en_us/oor)
|
|
ENDIF
|
|
FMT(vowel/aa_8)
|
|
endphoneme
|
|
|
|
|
|
phoneme V
|
|
vowel starttype #a endtype #@
|
|
length 170
|
|
ChangeIfDiminished(@)
|
|
FMT(vowel/V_6)
|
|
endphoneme
|
|
|
|
|
|
phoneme U
|
|
vowel starttype #o endtype #o
|
|
length 145
|
|
FMT(vowel/8_2)
|
|
endphoneme
|
|
|
|
|
|
phoneme A:
|
|
vowel starttype #a endtype #a
|
|
length 210
|
|
IF nextPh(r) THEN
|
|
FMT(vwl_en_us/ar)
|
|
ENDIF
|
|
FMT(vowel/aa_8)
|
|
endphoneme
|
|
|
|
|
|
phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American
|
|
vowel starttype #a endtype #a
|
|
length 260
|
|
IfNextVowelAppend(r-)
|
|
FMT(vwl_en_us/ar)
|
|
endphoneme
|
|
|
|
|
|
phoneme 3:
|
|
vowel starttype #@ endtype #@
|
|
length 240
|
|
IfNextVowelAppend(r-)
|
|
FMT(vwl_en_us/3_us2)
|
|
endphoneme
|
|
|
|
|
|
phoneme i:
|
|
vowel starttype #i endtype #i
|
|
length 170
|
|
IfNextVowelAppend(;)
|
|
FMT(vowel/i_en)
|
|
endphoneme
|
|
|
|
|
|
phoneme O:
|
|
vowel starttype #o endtype #o
|
|
length 210
|
|
ChangeIfDiminished(@)
|
|
IF nextPh(r) THEN
|
|
FMT(vwl_en_us/oor)
|
|
ENDIF
|
|
FMT(vowel/0_3)
|
|
endphoneme
|
|
|
|
|
|
phoneme O@
|
|
vowel starttype #o endtype #@
|
|
length 250
|
|
IfNextVowelAppend(r)
|
|
FMT(vwl_en_us/oor)
|
|
endphoneme
|
|
|
|
|
|
phoneme o@
|
|
vowel starttype #o endtype #@
|
|
length 250
|
|
IfNextVowelAppend(r)
|
|
FMT(vwl_en_us/or)
|
|
endphoneme
|
|
|
|
|
|
phoneme O
|
|
vowel starttype #o endtype #o
|
|
length 200
|
|
ChangeIfDiminished(@)
|
|
FMT(vowel/aa#)
|
|
endphoneme
|
|
|
|
|
|
phoneme u:
|
|
vowel starttype #u endtype #u
|
|
length 190
|
|
FMT(vdiph2/uw)
|
|
endphoneme
|
|
|
|
|
|
phoneme aU
|
|
vowel starttype #a endtype #o
|
|
length 235
|
|
FMT(vdiph/aoo)
|
|
endphoneme
|
|
|
|
|
|
phoneme oU
|
|
vowel starttype #@ endtype #u
|
|
length 230
|
|
FMT(vdiph/8u)
|
|
endphoneme
|
|
|
|
|
|
phoneme aI
|
|
vowel starttype #a endtype #i
|
|
length 250
|
|
FMT(vdiph/aae)
|
|
endphoneme
|
|
|
|
|
|
phoneme eI
|
|
vowel starttype #e endtype #i
|
|
length 230
|
|
FMT(vdiph2/ei_4)
|
|
endphoneme
|
|
|
|
|
|
phoneme OI
|
|
vowel starttype #o endtype #i
|
|
length 285
|
|
FMT(vdiph/ooi_4)
|
|
endphoneme
|
|
|
|
|
|
phoneme e@
|
|
vowel starttype #e endtype #@
|
|
length 280
|
|
IfNextVowelAppend(r)
|
|
FMT(vwl_en_us/er)
|
|
endphoneme
|
|
|
|
|
|
phoneme i@3
|
|
vowel starttype #i endtype #@
|
|
length 280
|
|
IfNextVowelAppend(r)
|
|
FMT(vwl_en_us/ir)
|
|
endphoneme
|
|
|
|
|
|
phoneme U@
|
|
vowel starttype #@ endtype #@
|
|
length 250
|
|
IfNextVowelAppend(r-)
|
|
FMT(vwl_en_us/ur)
|
|
endphoneme
|
|
|
|
|
|
phoneme aI@
|
|
vowel starttype #a endtype #@
|
|
length 300
|
|
IfNextVowelAppend(r-)
|
|
FMT(vwl_en_us/ai@)
|
|
endphoneme
|
|
|
|
|
|
phoneme aU@
|
|
vowel starttype #a endtype #@
|
|
length 300
|
|
IfNextVowelAppend(r-)
|
|
FMT(vwl_en_us/aU@)
|
|
endphoneme
|
|
|
|
|
|
//==============
|
|
// Consonants
|
|
//==============
|
|
|
|
phoneme r/ // used for [r] when not preceding a vowel
|
|
liquid
|
|
lengthmod 2 //
|
|
// formants NULL
|
|
endphoneme
|
|
|
|
|
|
phoneme t
|
|
vls alv stop
|
|
voicingswitch d
|
|
lengthmod 2
|
|
|
|
IF prevPh(isVowel) OR prevPh(n) THEN
|
|
IF nextPh(isVowel) AND nextPh(isUnstressed) AND thisPh(notWordStart) AND nextPh(notWordStart) THEN
|
|
ChangePhoneme(t#)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
|
|
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
|
|
|
|
IF nextPh(isPause2) THEN
|
|
WAV(ustop/t_)
|
|
ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
|
|
WAV(ustop/tr)
|
|
ELIF nextPh(@-) THEN
|
|
WAV(ustop/t_dnt, 50)
|
|
ENDIF
|
|
WAV(ustop/t, 90)
|
|
endphoneme
|
|
|