Browse Source

Added new language variant: en-us-nyc, a vintage New York City accent

master
Richard Calvi 3 years ago
parent
commit
d8c60d97ba

+ 14
- 0
espeak-ng-data/lang/gmw/en-US-nyc View File

@@ -0,0 +1,14 @@
name English (America, New York City)
language en-us-nyc

maintainer Richard Calvi <[email protected]>
status testing

phonemes en-us-nyc
dictrules 3 6

stressLength 140 120 190 170 0 0 255 300
stressAmp 17 16 19 19 19 19 21 19

replace 03 I i
replace 03 I2 i

+ 512
- 0
phsource/ph_english_us_nyc View File

@@ -0,0 +1,512 @@

//*******************************************************************
// VOWELS
//*******************************************************************


phoneme 3
CALL @
ipa ə
endphoneme

phoneme @ // Schwa
vwl starttype #@ endtype #@
unstressed
length 130
IfNextVowelAppend(r-)
IF thisPh(isWordEnd) THEN
FMT(vowel/@_6)
ENDIF
FMT(vowel/@_4)
endphoneme


phoneme @2 // Schwa, changes to I before a vowel
vwl starttype #@ endtype #@
unstressed
length 120
IF nextPh(isVowel) THEN
ChangePhoneme(I2)
ENDIF
FMT(vowel/@_low2)
endphoneme


phoneme a
vwl starttype #e endtype #@
ipa æ
length 210

ChangeIfDiminished(a#)

IF nextPh(m) OR nextPh(n) OR nextPh(g) OR nextPh(b) OR nextPh(d) OR nextPh(S) OR nextPh(f) OR nextPh(T) OR nextPh(s) THEN
IF NOT next2Ph(isVowel) THEN
ipa ɛə
FMT(vwl_en_us_nyc/a_raised)
ENDIF
ELSEIF nextPh(r) AND thisPh(isStressed) THEN
length 190
FMT(vwl_en_us/ar)
ENDIF
FMT(vwl_en_us_nyc/a)
endphoneme


phoneme aa // 'bath' etc.
import_phoneme en-us-nyc/a
endphoneme


phoneme a#
vwl starttype #@ endtype #@
ipa ɐ
unstressed
length 150

IF thisPh(isStressed) THEN
ChangePhoneme(a)
ENDIF

IF nextPhW(r) THEN
ChangePhoneme(3)
ENDIF
FMT(vowel/a#_3)
endphoneme


phoneme E
vwl starttype #e endtype #e
length 190
IF nextPhW(n) THEN
ChangeIfDiminished(@)
ELSE
ChangeIfDiminished(I2)
ENDIF
FMT(vwl_en_us/ee)
endphoneme


phoneme I
vwl starttype #i endtype #i
length 160
IfNextVowelAppend(;)
ChangeIfDiminished(I2)
IF nextPhW(r) THEN
length 200
ENDIF

FMT(vowel/ii_4)
endphoneme


phoneme I2
vwl starttype #i endtype #i
unstressed
length 160
IfNextVowelAppend(;)
FMT(vowel/ii#_3)
endphoneme


phoneme I#
vwl starttype #i endtype #i
unstressed
length 160
ipa ᵻ
// FMT(vowel/@_fnt)
FMT(vowel/ii#)
endphoneme


phoneme I2#
vwl starttype #i endtype #i
unstressed
ChangePhoneme(I#)
endphoneme


phoneme 0
vwl starttype #a endtype #a
length 140
ChangeIfDiminished(@)
IF nextPhW(r) AND next2PhW(isVowel) THEN
ChangePhoneme(A:)
ELIF nextPh(r) THEN
ChangePhoneme(O:)
ENDIF
FMT(vowel/0)
endphoneme


phoneme 02 // becomes V in en-us
vwl starttype #o endtype #o
length 140
ChangePhoneme(V)
endphoneme


phoneme O2
vwl starttype #o endtype #o
length 220
IF nextPhW(r) AND next2PhW(isVowel) THEN
ChangePhoneme(A:)
ENDIF
FMT(vwl_en_us_nyc/0_3)
endphoneme


phoneme V
vwl starttype #a endtype #@
length 170
ChangeIfDiminished(@)
FMT(vowel/V_6)
endphoneme


phoneme U
vwl starttype #o endtype #o
length 145
FMT(vowel/8_2)
endphoneme


phoneme A:
vwl starttype #a endtype #a
length 220
IF nextPhW(r) THEN
FMT(vwl_en_us/aar)
ENDIF
FMT(vwl_en_us_nyc/aa_8)
endphoneme


phoneme A@
vwl starttype #a endtype #a
ipa ɑː
length 230
IfNextVowelAppend(r-)
FMT(vowel/aa_2)
endphoneme


phoneme A# // [a] in British [A:] in American
vwl starttype #a endtype #a
ChangePhoneme(A:)
endphoneme


phoneme 3:
vwl starttype #@ endtype #i
ipa əɪ
length 210
IfNextVowelAppend(r-)
ChangeIfDiminished(3)
FMT(vwl_en_us_nyc/@i)
endphoneme


phoneme i:
vwl starttype #i endtype #i
length 180
IfNextVowelAppend(;)
FMT(vowel/i_en)
endphoneme


phoneme O:
vwl starttype #o endtype #@
length 220
ChangeIfDiminished(@)
IF nextPhW(r) AND next2PhW(isVowel) THEN
ChangePhoneme(A:)
ENDIF
IF nextPhW(r) THEN
FMT(vwl_en_us/oor)
ENDIF
FMT(vwl_en_us_nyc/0_3)
endphoneme


phoneme O@
vwl starttype #o endtype #@
length 240
ipa ɔː
IfNextVowelAppend(r)
FMT(vowel/oo_en)
endphoneme


phoneme o@
vwl starttype #o endtype #o
length 250
ipa ɔː
IfNextVowelAppend(r)
FMT(vowel/oo_en)
endphoneme


phoneme O
vwl starttype #o endtype #o
length 200
ChangeIfDiminished(@)
IF nextPhW(r) AND next2PhW(isVowel) THEN
ChangePhoneme(A:)
ENDIF
FMT(vwl_en_us_nyc/0_3)
endphoneme


phoneme u:
vwl starttype #u endtype #u
length 190
IF prevPhW(j) AND NOT thisPh(isWordEnd) THEN
length 160
ENDIF
FMT(vdiph2/uw_6)
endphoneme


phoneme aU
vwl starttype #a endtype #o
length 235
FMT(vdiph/aoo)
endphoneme


phoneme oU
vwl starttype #@ endtype #u
length 230
FMT(vdiph/8u)
endphoneme


phoneme aI
vwl starttype #a endtype #i
length 240
IF nextPh(#a) OR nextPh(#o) THEN
AppendPhoneme(;)
ENDIF
FMT(vwl_en_us/ai)
endphoneme


phoneme eI
vwl starttype #e endtype #i
length 220
FMT(vdiph2/ei_4)
endphoneme


phoneme OI
vwl starttype #o endtype #i
length 270
FMT(vdiph/oi)
endphoneme

phoneme e@
vwl starttype #e endtype #@
length 230
IfNextVowelAppend(r-)
FMT(vowel/ee_1)
endphoneme

phoneme i
vwl starttype #i endtype #i
unstressed
ipa i
length 170
IfNextVowelAppend(;)

IF NOT thisPh(isFinalVowel) THEN
length 130
FMT(vowel/ii_4)
ENDIF

FMT(vowel/ii_final)
endphoneme


phoneme i@
vwl starttype #i endtype #@
length 250
FMT(vdiph2/ii@) // don't append [r] before a vowel
endphoneme

phoneme i@3
vwl starttype #i endtype #@
length 250
IF MbrolaSynth THEN
ChangePhoneme(i@)
ENDIF

IfNextVowelAppend(r-)
FMT(vdiph2/ii@)
endphoneme


phoneme U@
vwl starttype #u endtype #@
length 200
IfNextVowelAppend(r-)
IF thisPh(isUnstressed) THEN
FMT(vdiph2/8@)
ENDIF
FMT(vdiph2/uu@)
endphoneme

phoneme aI@
vwl starttype #a endtype #@
length 300
ipa aɪə
IfNextVowelAppend(r-)
FMT(vwl_en_us/ai@)
endphoneme


phoneme aI3
vwl starttype #a endtype #@
length 280
ChangePhoneme(aI@)
endphoneme

phoneme aU@ // h**our**
vwl starttype #a endtype #@
length 280
IfNextVowelAppend(r-)
FMT(vwl_en/aU@)
endphoneme


//==============
// Consonants
//==============

phoneme h
vls glt apr
lengthmod 3
ipa h

IF nextPh(j) THEN
ChangePhoneme(NULL) // drop "h" for "human", "huge", etc.
ELIF nextPh(#@) THEN
WAV(h/h@)
ELIF nextPh(#a) THEN
WAV(h/ha)
ELIF nextPh(#e) THEN
WAV(h/he)
ELIF nextPh(#i) THEN
WAV(h/hi)
ELIF nextPh(#o) THEN
WAV(h/ho)
ELIF nextPh(#u) THEN
WAV(h/hu)
ENDIF
WAV(h/h_, 70) // no vowel following
endphoneme


phoneme r/ // used for [r] when not preceding a vowel
liquid
lengthmod 2 //
// formants NULL
endphoneme


phoneme t# // reduced [t] as in "city"
vcd alv stp
ipa ɾ
lengthmod 5
Vowelin f1=1 f2=1700 -300 300 f3=-100 80
Vowelout f1=2 f2=1700 -300 300 f3=-100 80

IF nextPh(isNotVowel) THEN
ChangePhoneme(t)
ENDIF

IF KlattSynth THEN
IF PreVoicing THEN
FMT(klatt/x_tap)
ENDIF
FMT(klatt/tap2) addWav(x/d, 70)
ENDIF

IF PreVoicing THEN
FMT(d/x_tap)
ENDIF
FMT(d/tap2) addWav(x/d, 50)
endphoneme


phoneme t
vls alv stp
voicingswitch d
lengthmod 2
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20

IF nextPhW(isVowel) AND nextPh(isUnstressed) THEN
IF NOT next2PhW(n) OR nextPhW(3:) THEN
IF prevPhW(isVowel) THEN
ChangePhoneme(t#)
ELIF prevPhW(n) THEN
WAV(ustop/t_hi, 60)
ENDIF
ENDIF
ENDIF

IF nextPh(isPause2) THEN
WAV(ustop/t_dnt)
ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
WAV(ustop/tr)
ELIF nextPh(@-) THEN
WAV(ustop/t_hi, 50)
ENDIF
WAV(ustop/t_dnt, 90)
endphoneme

phoneme d
CALL d[
endphoneme


phoneme t2 // [t] which doesn't reduce
import_phoneme base1/t
endphoneme

phoneme ? // glottal stp
vls glt stp
lengthmod 1 // 5? longer preceding vowel
nolink
Vowelin glstop
Vowelout glstop
WAV(ustop/null)
endphoneme


phoneme l/2 // 'dark' [l] after a vowel
liquid
lengthmod 7

CALL vowelstart_l

IF prevPhW(j) THEN
FMT(l/L2_eL)
ENDIF
IF prevPhW(w) THEN
FMT(l/L2_uL)
ENDIF

PrevVowelEndings
VowelEnding(l/L2_@L, -60)
VowelEnding(l/L2_aL, -50)
VowelEnding(l/L2_eL, -40)
VowelEnding(l/L2_iL, -30)
VowelEnding(l/L2_oL, -50)
VowelEnding(l/L2_uL, -40)
EndSwitch
endphoneme

+ 3
- 0
phsource/phonemes View File

@@ -1887,6 +1887,9 @@ include ph_english_sc
phonemetable en-us en
include ph_english_us

phonemetable en-us-nyc en
include ph_english_us_nyc

phonemetable en-wi en
include ph_english_wi


BIN
phsource/vwl_en_us_nyc/0_3 View File


BIN
phsource/vwl_en_us_nyc/@i View File


BIN
phsource/vwl_en_us_nyc/a View File


BIN
phsource/vwl_en_us_nyc/a_raised View File


BIN
phsource/vwl_en_us_nyc/aa_8 View File


Loading…
Cancel
Save