Browse Source

[1.47.03d]

Lang=ml, change aspirated voiced consonants.
Lang=ko, define temporary replacements for undefined consonant phonemes.
Lang=bn, fix numbers.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@334 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 12 years ago
parent
commit
473e9abc15

+ 89
- 46
dictsource/bn_list View File

// This file is UTF8 encoded // This file is UTF8 encoded


// Numbers // Numbers
devanagari numbers are changed to latin characters before translation
// Bengali numbers are changed to latin characters before translation
_0 S'unjO _0 S'unjO
_1 '&k _1 '&k
_2 duj _2 duj
_8 'at.# _8 'at.#
_9 n'Oj _9 n'Oj


_2a d'u // with hundreds etc.
_6a tS#'a
_9a n'O


_10 d'OS _10 d'OS
_11 '&garo _11 '&garo
_12 b'arO _12 b'arO
_13 t'erO _13 t'erO
_14 tS'owddO
_14 tS'oddO
_15 p'OnerO _15 p'OnerO
_16 S'olO _16 S'olO
_17 S'OterO _17 S'OterO
_19 'uniS _19 'uniS


_20 k'uri // or b'iS ?? _20 k'uri // or b'iS ??
_21 'ekuS
_21 ek'uS
_22 b'ajS _22 b'ajS
_23 t'ejS _23 t'ejS
_24 tS'ObbiS _24 tS'ObbiS
_25 p'O~tSiS _25 p'O~tSiS
_26 tSh'ObbiS
_27 S'ataS
_26 tSh'abbiS
_27 Sat'aS
_28 'at.#aS _28 'at.#aS
_29 'untriS

_30 t'iriS
_31 'ektriS
_32 b'OtriS
_33 t'etriS
_34 tSowtriS
_35 pO~jtriS
_36 tS#'OtriS
_37 S'a~itriS
_38 'at.riS
_39 'unOtSOlliS

_40 tS'OlliS
_41 'ektSOlliS
_42 b'ialliS
_43 t'etalliS
_44 tS'oalliS
_45 p'O~jtalliS
_46 tS'etSOlliS
_47 S'atSOllis
_48 'atSOlliS
_49 'unOpO~tSaS

// numbers above 50 need to be corrected
_50 p'O~tSaS
_5X p'O~tSaS
_59 'unOsat.

_60 s'at.
_6X s'at.
_69 'unOS'OttOr

_70 S'OttOr
_7X S'OttOr
_79 'unOaSi
_29 unOtr'iS

_30 tr'iS
_31 ekOtr'iS
_32 bOtr'iS
_33 tetr'iS
_34 tSowtr'iS
_35 pO~jtr'iS
_36 tS#'Otr'iS
_37 Sa~itr'iS
_38 at.tr'iS
_39 'unOtSOll'iS

_40 tSOll'iS
_41 ektSOll'iS
_42 biall'iS
_43 tetall'iS
_44 tSoall'iS
_45 pO~jtall'iS
_46 tSetSOll'iS
_47 SatSOll'is
_48 atSOll'iS
_49 unOpO~tSaS

_50 pO~tS'aS
_51 &kann'o
_52 bajann'o
_53 tepann'o
_54 tSujann'o
_55 pontSann'o
_56 tS#apann'o
_57 Satann'o
_58 at.ann'o
_59 unOS'at.


_80 'aSi
_8X 'aSi
_89 'unOnObbOj


_90 n'ObbOj
_9X n'ObbOj
_60 s'at.
_61 ekSOt.t.'i
_62 baSOt.t.'i
_63 teSOt.t.'i
_64 tSowSOt.t.'i
_65 pojSOt.t.'i
_66 SeSOt.t.'i
_67 SatSOt.t.'i
_68 at.SOt.t.'i
_6X sat.t.'i
_69 unOSOtt'ur

_70 SOtt'Or
_71 ekatt'Or
_72 bahatt'Or
_73 tehatt'Or
_74 tSuhatt'Or
_75 pOtSatt'Or
_76 tS#ijatt'Or
_77 Satatt'Or
_78 at.att'Or
_79 unOaS'i

_80 aS'i
_81 &kaS'i
_82 beraS'i
_83 teraS'i
_84 tSuraS'i
_85 po~tSaS'i
_86 tS#ijaS'i
_87 SataS'i
_88 at.aS'i
_89 ,unOnObb'oj

_90 nObb'oj
_91 &kanObb'oj
_92 beranObb'oj
_93 teranObb'oj
_94 tSuranObb'oj
_95 pOtSanObb'oj
_96 tS#ijanObb'oj
_97 SatanObb'oj
_98 at.anObb'oj
_99 niranObb'oj


_0C S'o _0C S'o
_0M1 h'ajar _0M1 h'ajar




// Exceptions // Exceptions
এত &to

+ 7
- 1
dictsource/bn_rules View File

.group অ .group অ
অ V অ V
অঁ O~ অঁ O~
অ্যা & // V,ja in [æmiba]


.group আ .group আ
.group এ .group এ
এ e এ e
এঁ e~ এঁ e~
এ্যা & // e,ja [ækademi]




.group ও .group ও
য় jV // nukta য় jV // nukta
য় (B j য় (B j


্) য (C & // ব্যস্ত [bæsto]
্) যা & // ব্যাকরণ [bækɔron]


.group র .group র
র rV র rV
র (B r র (B r

+ 482
- 311
dictsource/da_rules
File diff suppressed because it is too large
View File


+ 21
- 28
dictsource/dict_phonemes View File

T tS v w x x2 z Z T tS v w x x2 z Z




Dictionary ak_dict 2010-08-11

a e E i o O u

: b C d dZ dZ; f g
h j k l m n N n^
p R s t tS; v w z
z;


Dictionary am_dict 2011-11-22 Dictionary am_dict 2011-11-22


@ a e i o u y @ a e i o u y
t# tS w x t# tS w x




Dictionary te_dict 2013-03-26

a a: aI aU e E e: i
i: l- o o: r- u u:

#X1 #X2 : ; b b# c c#
d d# d. d.# dZ f g g#
h j J J# k k# l l.
m n N n. n^ p p# r
s s. S; t t# t. t.# tS
v v# w z


Dictionary bg_dict 2013-03-16 Dictionary bg_dict 2013-03-16


@ a e i o u @ a e i o u
Z z; Z z;




Dictionary bn_dict 2013-03-25
Dictionary bn_dict 2013-03-26


& a a~ e e~ i i~ l- & a a~ e e~ i i~ l-
o O o: O~ o~ r- u u~ o O o: O~ o~ r- u u~
x z x z




Dictionary da_dict 2013-03-15
Dictionary da_dict 2013-03-26


& &# 0 3 ?& ?&# ?0 ?A & &# 0 3 ?& ?&# ?0 ?A
?e ?E ?i ?o ?O ?u ?V ?W ?e ?E ?i ?o ?O ?u ?V ?W
ts v x z ts v x z




Dictionary en_dict 2013-03-25
Dictionary en_dict 2013-03-26


0 0# 3 3: @ @- @2 @5 0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3 @L a a# A: A@ aa aI aI3
v w z v w z




Dictionary ko_dict 2013-03-19
Dictionary ko_dict 2013-03-26


@ a e E i o u u- @ a e E i o u u-


* - ; b d dZ; g h
* ; b d d- dZ; g h
j k k- kh l L m n j k k- kh l L m n
N p p- ph q r R s
t t- tS tS; w
N p p- ph q q- r R
s s- t t- tS tS; tS;- w




Dictionary ku_dict 2008-04-14 Dictionary ku_dict 2008-04-14
ts; v w x z Z Z; ts; v w x z Z Z;




Dictionary pt_dict 2013-03-25
Dictionary pt_dict 2013-03-26


& &/ &U~ &~ @ @- a A & &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU aI aU e E eI EI eU EU
Z; Z;




Dictionary rw_dict 2008-03-27

a e i o u

* : b B c d dZ f
g h j J k l m n
N n^ p q R s S S;
t tS v w x z


Dictionary si_dict 2013-03-23 Dictionary si_dict 2013-03-23


& &: @ a a: aI aU e & &: @ a a: aI aU e

+ 1
- 0
dictsource/en_list View File

Oahu oU'A:hu: Oahu oU'A:hu:
Oklahoma oUkla#h'oUm@ Oklahoma oUkla#h'oUm@
Ohio oUh'aIoU Ohio oUh'aIoU
Ohioan oUh'aIoU@n
Omagh oUmA: Omagh oUmA:
Omaha oUma#hA: Omaha oUma#hA:
Oman oUm'an Oman oUm'an

+ 76
- 66
dictsource/en_rules View File

h) e (sion_ 'i: h) e (sion_ 'i:
@) e (tio i: @) e (tio i:
discr) e (tion E discr) e (tion E
eu ju:
?3 n) eu u:
?3 n) eu (r U@
r) eu (d OI
eu (m_ 'i:@
s) eu (m_ 'i@
l) eur 3:
?5 eur VR
eur (_ '3:
?3 eur (_ 'U@
?5 eur (_ 'VR
_) euro jU@roU
_) euro (pe jU@r-@
&) eus (_ =I2@s
@) euse (_ '3:z
?3 @) euse (_ 'u:z
d) eu (ts OI
ew ju: ew ju:
_s) ew u: _s) ew u:
?3 d) ew u: ?3 d) ew u:
m) etry (_ =@tr%I m) etry (_ =@tr%I
&) ett (_ I2t &) ett (_ I2t



.group eu
eu ju:
?3 n) eu u:
?3 n) eu (r U@
r) eu (d OI
eu (m_ 'i:@
s) eu (m_ 'i@
l) eur 3:
?5 eur VR
eur (_ '3:
?3 eur (_ 'U@
?5 eur (_ 'VR
_) euro jU@roU
_) euro (pe jU@r-@
&) eus (_ =I2@s
@) euse (_ '3:z
?3 @) euse (_ 'u:z
d) eu (ts OI


.group ev .group ev
_) ev I2v _) ev I2v
_) eva (ne Ev@ _) eva (ne Ev@
n) ihi aI|@ n) ihi aI|@
_) i (h aI _) i (h aI
ii (_ IaI ii (_ IaI
ij (C eI // Dutch
f) i (j i: f) i (j i:
h) i (j aI h) i (j aI
@b) il (_ @L
@Cc) il (_ @L
@p) il (_ @L
@r) il (_ @L
@s) il (_ @L
nt) il (_ @L
@v) il (_ @L
@) ila (_ 'Il@
?3 &) ile (_$w_alt2 @L
_C) i (lage aI
_d) i (lat %aI
l) il (ah_ aIl
_m) i (ld aI
_w) i (ld aI
ch) i (ld aI
w) i (lderC I
ch) i (ldr I
sacr) ile IlI
i (leA I
&) ile (ge @lI
il (ise @l
il (ize @l
s) i (len aI
C) i (ler aI
_) il (l@ %Il
@) illa (_ 'Il@
&) illard (_ i:A:
_) il (ln Il
@) i (less I @) i (less I
_) il (lust Il
_C) i (lo aI
&) ily (_S2i l%I
@) i (ness I @) i (ness I
i (o I2 i (o I2
_) i (o aI _) i (o aI
igu (e 'i:g igu (e 'i:g
igu (_ 'i:g igu (_ 'i:g


.group il
@b) il (_ @L
@Cc) il (_ @L
@p) il (_ @L
@r) il (_ @L
@s) il (_ @L
nt) il (_ @L
@v) il (_ @L
@) ila (_ 'Il@
?3 &) ile (_$w_alt2 @L
_C) il (age aIl
_d) il (at %aIl
l) il (ah_ aIl
_m) il (d aIl
_w) il (d aIl
ch) il (d aIl
w) il (derC Il
ch) il (dr Il
sacr) ile IlI
il (eA Il
&) ile (ge @lI
il (ise @l
il (ize @l
s) il (en aIl
C) il (er aIl
_) il (l@ %Il
@) illa (_ 'Il@
&) illard (_ i:A:
_) il (ln Il
_) il (lust Il
_C) il (o aIl
&) ily (_S2i l%I


.group im .group im
&) im (_ I#m &) im (_ I#m
cl) im aIm cl) im aIm
_) tsu tsu: _) tsu tsu:
_) two tu: _) two tu:
ttu (r t@ ttu (r t@
@) tu (al tSu:
@) tu (at tSu:
_sta) tu tSu:
?3 _sta) tu (to tS@
c) tu (al_ =tSu:
r) tue (_ tSu:
?3 tu (la_ tS@
@) tu (lat =tSU
?3 tu (Ant tSu:
?3 tu (Ancy tSu:

tu (ous tSu:
@) tur (A tS@r
@) tur (al_ tS=@r
&) tur (y tS@r
&) tur (_ tS3
&) ture (_ tS3
tz ts tz ts
tze (_ tsi tze (_ tsi


&) tious S=@s &) tious S=@s
AC) tive (_ =tIv AC) tive (_ =tIv



.group tu
@) tu (al tSu:
@) tu (at tSu:
_sta) tu tSu:
?3 _sta) tu (to tS@
c) tu (al_ =tSu:
r) tue (_ tSu:
?3 tu (la_ tS@
@) tu (lat =tSU
?3 tu (Ant tSu:
?3 tu (Ancy tSu:
tu (ous tSu:
@) tur (A tS@r
@) tur (al_ tS=@r
&) tur (y tS@r
&) tur (_ tS3
&) ture (_ tS3

.group u .group u
u V u V
man) u ju: man) u ju:

+ 3
- 3
dictsource/ko_list View File

_0C p'Eq_! _0C p'Eq_!


// Larger numbers // Larger numbers
_0M0 tS'h-@n // 10^3
_1M0 tS'h-@n
_0M0 tS'h@n // 10^3
_1M0 tS'h@n
_0M1 m'an // 10^4 _0M1 m'an // 10^4
_1M1 m'an _1M1 m'an
_0M2 '@q // 10^8 _0M2 '@q // 10^8
ᄋ i;'u-N ᄋ i;'u-N
ᄌ tS;i;'u-t ᄌ tS;i;'u-t
ᄍ 's-aNdZ;,i;u-t ᄍ 's-aNdZ;,i;u-t
ᄎ tSh-'i;u-t
ᄎ tSh'i;u-t
ᄏ khi;'u-k ᄏ khi;'u-k
ᄐ thi;'u-t- ᄐ thi;'u-t-
ᄑ phi;'u-p ᄑ phi;'u-p

+ 3
- 3
dictsource/ko_rules View File

ᄍ 'tS;- // TODO: phoneme ᄍ 'tS;- // TODO: phoneme


.group ᄎ // ㅊ .group ᄎ // ㅊ
ᄎ tSh- // TODO: phoneme
ᄎ tSh // TODO: phoneme


.group ᄂ // ㄴ .group ᄂ // ㄴ
ᄂ ;n ᄂ ;n
ᇀᄂ nn ᇀᄂ nn
ᇀᄆ mm ᇀᄆ mm
ᇀ (A th ᇀ (A th
ᇀ (L02 tSh;
ᇀ (L02 tS;h


.group ᆸ // ㅂ .group ᆸ // ㅂ
ᆸ p ᆸ p
ᆾ t ᆾ t
ᆾᄂ nn ᆾᄂ nn
ᆾᄆ mm ᆾᄆ mm
ᆾ (A tSh;
ᆾ (A tS;h


.group ᆫ // ㄴ .group ᆫ // ㄴ
ᆫ n ᆫ n

+ 2
- 0
dictsource/pt_list View File

lebre $alt lebre $alt
lembrete $alt2 lembrete $alt2
leste $alt2 $verb leste $alt2 $verb
lingueta $alt2
lopes $alt lopes $alt
macete $alt2 macete $alt2
maior $alt maior $alt
reitora $alt2 reitora $alt2
relevo $alt2 $noun relevo $alt2 $noun
remorso $alt remorso $alt
renovo $alt $verb
retorno $alt $verb retorno $alt $verb
rixa x'iS& rixa x'iS&
rocha $alt rocha $alt

+ 11
- 1
dictsource/pt_rules View File

g (Y Z // ge gi g (Y Z // ge gi
gu (Y g gu (Y g
a) gu (ent gw a) gu (ent gw
_ar) gu (i gw
enxa) gu (e gw enxa) gu (e gw
lin) gu (e gw lin) gu (e gw
lin) gu (i gw lin) gu (i gw
_pin) gu (im_ gw
_pin) gu (ins_ gw
_sa) gu )i gw
san) gu (ín gw san) gu (ín gw
san) gu (in gw san) gu (in gw
?1 n) gu (A gw // eg: língua, etc. ?1 n) gu (A gw // eg: língua, etc.
_ens) o (pL04_ O _ens) o (pL04_ O
_s) o (prL04_ O _s) o (prL04_ O
_) o (ptL04_ O _) o (ptL04_ O
p) o (rL02_ o
_dev) o (rL02_ O
_defl) o (rL02_ O _defl) o (rL02_ O
_impl) o (rL02_ O _impl) o (rL02_ O
_inod) o (rL03_ O _inod) o (rL03_ O
?1 _) qua kwa // quatro, etc. ?1 _) qua kwa // quatro, etc.
?1 _) que ke // quente, etc. ?1 _) que ke // quente, etc.
?1 _) quei (C k'eI // queira, queima, etc ?1 _) quei (C k'eI // queira, queima, etc
A) quên (C kw'eIN // frequência, etc.
A) quên (C kw'eN // frequência, etc.
C) quên (C kw'eN // delinquência, etc.
C) quên (A kw'eN // quinquênio, etc.
ade) qu (e kw ade) qu (e kw
e) qu (estr kw e) qu (estr kw
ese) qu (ív kw
_e) qu (in kw _e) qu (in kw
fre) qu (ent kw fre) qu (ent kw
li) qu (id kw li) qu (id kw
lí) qu (id kw lí) qu (id kw
n) qu (en kw n) qu (en kw
_) qu (inqu kw
se) qu (en kw se) qu (en kw
tran) qu (il kw tran) qu (il kw
?1 quec kes // esquece, etc. ?1 quec kes // esquece, etc.

+ 13
- 13
dictsource/te_list View File

t t#i: t t#i:
u ju: u ju:
v vi: v vi:
w dVbVlju:
w dabalju:
x Eks x Eks
y wa:j y wa:j
z zEd z zEd
_4 na:lgu _4 na:lgu
_5 aIdu _5 aIdu
_6 a:ru _6 a:ru
_7 e:d.u
_7 ;e:d.u
_8 ;enimidi _8 ;enimidi
_9 tommidi _9 tommidi
_1X padi _1X padi
_17 padihe:d.u _17 padihe:d.u
_18 padd#enimidi _18 padd#enimidi
_19 pamdommadi _19 pamdommadi
_2X iravaI
_2X irav#aI
_3X muppaI _3X muppaI
_4X nalub#aI _4X nalub#aI
_5X ja:b#aI _5X ja:b#aI
_6X aravaI
_6X arav#aI
_7X d.eb#baI _7X d.eb#baI
_8X jenab#aI _8X jenab#aI
_9X tomb#aI _9X tomb#aI
_0C vandala
_0C0 vandalu
_1C okavanda
_0M1 vela
_0M1x velu
_1M1 okavejji
_0C v#andala
_0C0 v#andalu
_1C okav#anda
_0M1 v#ela
_0M1x v#elu
_1M1 okav#ejji
_0M2 laks.ala _0M2 laks.ala
_0M2x laks.alu _0M2x laks.alu
_1M2 laks.a _1M2 laks.a
\ bja:kasla:s. \ bja:kasla:s.
/ sla:s. / sla:s.
© ka:pi:raIt. © ka:pi:raIt.
¶ ve:ra:
¶ v#e:ra:


_, ka:ma: _, ka:ma:
_; semi:ko:lan _; semi:ko:lan
U+c01 am U+c01 am
U+c02 an U+c02 an
U+c03 ah U+c03 ah
U+c4d vottu
U+c4d v#ottu


// consonants with virama // consonants with virama
క్ ik క్ ik
ఱ్ ir ఱ్ ir
ల్ il ల్ il
ళ్ il. ళ్ il.
వ్ iv
వ్ iv#
శ్ iS; శ్ iS;
ష్ is. ష్ is.
స్ is స్ is

+ 2
- 8
dictsource/te_rules View File

ళ (B l. ళ (B l.


.group వ .group వ
వ va
వ (B v
వ v#a
వ (B v#


.group శ .group శ
శ S;a శ S;a
ౖ : // ai length mark ?? ౖ : // ai length mark ??




.group 0xe0a4 // devanagari
0xe0a4 _^_HI // switch to hindi voice for devanagari characters
.group 0xe0a5 // devanagari
0xe0a5 _^_HI


.group .group
$ d.a:lar $ d.a:lar



+ 38
- 5
phsource/compile_report View File



74 phoneme tables
75 phoneme tables
new total new total
base 109 109 base 109 109
consonants 11 119 consonants 11 119
pa 15 151 pa 15 151
ta 23 153 ta 23 153
kn 17 149 kn 17 149
ml 21 152
ml 26 152
te 16 149
hu 25 124 hu 25 124
lt 44 139 lt 44 139
lv 29 127 lv 29 127
da 45 138 da 45 138
ka 20 115 ka 20 115
fa 9 112 fa 9 112
ko 15 116
ko 19 120
kl 18 119 kl 18 119
am 15 114 am 15 114
si 24 155 si 24 155
b/xb [b] base b/xb [b] base
[b] fr [b] fr
[b#] hi [b#] hi
[b#] ml
b/xbr [b] fr b/xbr [b] fr
d/d [d] base d/d [d] base
[d[] base [d[] base
[z] fr [z] fr
[d#] hi [d#] hi
[d] kn [d] kn
[d#] ml
[d] hu [d] hu
[d] lt [d] lt
[d] pl [d] pl
d/xdr [d] fr d/xdr [d] fr
[d.] hi [d.] hi
[d.#] hi [d.#] hi
[d.#] ml
d/xdz [dz] consonants d/xdz [dz] consonants
d/x_tap [t#] en d/x_tap [t#] en
[*] pt [*] pt
[dZ;] sq [dZ;] sq
dzh/xdz_pzd [J] base dzh/xdz_pzd [J] base
[J#] hi [J#] hi
[J#] ml
[J] tr [J] tr
[J] ku [J] ku
envelope/i_risefall [11] zh envelope/i_risefall [11] zh
[g-] en [g-] en
[g] cy [g] cy
[g] fr [g] fr
[g#] ml
[g] ru [g] ru
[g;] bg [g;] bg
[g] es [g] es
ustop/k_asp [k#] consonants ustop/k_asp [k#] consonants
[kh] consonants [kh] consonants
[g#] hi [g#] hi
[g#] ml
[kh] zh [kh] zh
[k#] ka [k#] ka
ustop/k_asp_a [k#] consonants ustop/k_asp_a [k#] consonants
[g#] ml
[k#] ka [k#] ka
ustop/k_asp_e [k#] consonants ustop/k_asp_e [k#] consonants
[g#] ml
[k#] ka [k#] ka
ustop/k_asp_u [k#] ka ustop/k_asp_u [k#] ka
ustop/k_ejc [k`] am ustop/k_ejc [k`] am
ustop/p_ [p] base ustop/p_ [p] base
[ph] consonants [ph] consonants
[p] fr [p] fr
[b#] ml
ustop/p_asp [ph] consonants ustop/p_asp [ph] consonants
[b#] hi [b#] hi
[b#] ml
[ph] zh [ph] zh
ustop/percus02 [#X2] hi ustop/percus02 [#X2] hi
ustop/percus10 [#X1] base ustop/percus10 [#X1] base
[ph] consonants [ph] consonants
[p] base2 [p] base2
[p] fr [p] fr
[b#] ml
[p] lv [p] lv
[p] sk [p] sk
[p] sq [p] sq
[t] en-us [t] en-us
[d.#] hi [d.#] hi
[t.#] hi [t.#] hi
[d.#] ml
[t] zhy [t] zhy
[t] da [t] da
ustop/t_ [t] base ustop/t_ [t] base
[t] et [t] et
[d#] hi [d#] hi
[t#] hi [t#] hi
[d#] ml
[t] hu [t] hu
[t] lt [t] lt
[t] pl [t] pl
ustop/tsh_unasp [tS`] am ustop/tsh_unasp [tS`] am
ustop/ts_pzd [tS;] base ustop/ts_pzd [tS;] base
[J#] hi [J#] hi
[J#] ml
[tS;] lt [tS;] lt
[tS;] ru [tS;] ru
[dZ;] sq [dZ;] sq
[aU] ne [aU] ne
[aU] kn [aU] kn
[aU] ml [aU] ml
[aU] te
vdiph/aau_4 [aU] vi vdiph/aau_4 [aU] vi
vdiph/aau_6 [aU] de vdiph/aau_6 [aU] de
vdiph/ae [E:] fr-ca vdiph/ae [E:] fr-ca
[aI] eo [aI] eo
[aI] kn [aI] kn
[aI] ml [aI] ml
[aI] te
[aI] lt [aI] lt
[aI] sk [aI] sk
[aI] hr [aI] hr
voc/dh_ [D] base voc/dh_ [D] base
[D] es [D] es
voc/j [J^] base voc/j [J^] base
voc/murmur1 [J#] ml
[b#] ml
[d#] ml
[g#] ml
[d.#] ml
voc/Q [Q] base voc/Q [Q] base
[Q^] base [Q^] base
[Q] ka [Q] ka
[V] cy [V] cy
[@/] ga [@/] ga
[@] kn [@] kn
[@] te
[@] hy [@] hy
[@] ka [@] ka
[@] sl [@] sl
vowel/a#_2 [A] nl vowel/a#_2 [A] nl
[a:] nl [a:] nl
[a] kn [a] kn
[a] ml
[a] te
[a#] pl [a#] pl
[&] hr [&] hr
[a] sv [a] sv
[a/] en-sc [a/] en-sc
[A:] en-sc [A:] en-sc
[aa] en-sc [aa] en-sc
[a] bn
[a:] kn [a:] kn
[A] lt [A] lt
[a] lt [a] lt
[a] es [a] es
[a] el [a] el
vowel/a#_4 [a:] nl vowel/a#_4 [a:] nl
[a] ml
[a] bg [a] bg
[a/] it [a/] it
[a] tr [a] tr
vowel/a_5 [a:] ta vowel/a_5 [a:] ta
[a:] ml [a:] ml
[a:] te
[a/] it [a/] it
[a] la [a] la
[a] sv [a] sv
vowel/aa_9 [a] fi vowel/aa_9 [a] fi
[a] et [a] et
[a:] hi [a:] hi
[a] bn
[a] ne [a] ne
[a] pa [a] pa
vowel/@_bck [@] hi vowel/@_bck [@] hi
[e:] kn [e:] kn
[e] ml [e] ml
[e:] ml [e:] ml
[e:] te
[e] hr [e] hr
[e/] it [e/] it
[e:] la [e:] la
[e] nci [e] nci
[e] fi [e] fi
[E] nl [E] nl
[e] te
[e] sk [e] sk
[e] bg [e] bg
[e/] it [e/] it
[i:] ta [i:] ta
[i:] kn [i:] kn
[i:] ml [i:] ml
[i:] te
[i:] hu [i:] hu
[i] it [i] it
[i] es [i] es
[i] ta [i] ta
[i] kn [i] kn
[i] ml [i] ml
[i] te
[i:] lt [i:] lt
[i] lv [i] lv
[i:] lv [i:] lv
[o:] kn [o:] kn
[o] ml [o] ml
[o:] ml [o:] ml
[o] te
[o:] te
[o] it [o] it
[o/] it [o/] it
[O] la [O] la
vowel/u_6 [u] ta vowel/u_6 [u] ta
[u2] ta [u2] ta
[u:] ta [u:] ta
[u] te
[u:] te
[U] pt-pt [U] pt-pt
[u] pt-pt [u] pt-pt
[u] ku [u] ku

BIN
phsource/d/xd View File


+ 1
- 1
phsource/ph_bengali View File

phoneme a phoneme a
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 225 length 225
FMT(vowel/aa_9)
FMT(vowel/a_3)
endphoneme endphoneme





+ 193
- 150
phsource/ph_danish View File

ipa NULL // @-* is used to make 'r' ipa NULL // @-* is used to make 'r'
ENDIF ENDIF
length 40 length 40
// "femten", "manden" - only a short "n" sound
IF nextPhW(n) THEN
length 20
ENDIF
IF prevPhW(isNotVowel) AND thisPh(isWordEnd) THEN
length 15
ENDIF
// "lige" [li@-]
IF prevPhW(i) AND thisPh(isWordEnd) THEN
length 15
ENDIF
FMT(vowel/@-) FMT(vowel/@-)
endphoneme endphoneme




phoneme i phoneme i
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 95 //150
length 140 //225
// PB long vowel followed by consonant and certain vowels "gide" // PB long vowel followed by consonant and certain vowels "gide"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
length 150
length 225
ENDIF ENDIF
// "gider", vrider" // "gider", vrider"
IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN
length 95
length 140
ENDIF ENDIF
// PB long vowel followed by certain vowels - "pigen" [p'i@-n]
IF nextPhW(#@) OR nextPhW(#e) THEN
length 150
// PB long vowel followed by [@-] - "pigen" [p'i@-n]
IF nextPhW(@-) OR nextPhW(V) THEN
length 225
ENDIF ENDIF
// Only this vowel (in this case [i]) // Only this vowel (in this case [i])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 150
length 225
ENDIF ENDIF
// This vowel is word end - longer because it sounds too short // This vowel is word end - longer because it sounds too short
// "sig", "si" // "sig", "si"
ENDIF ENDIF
// "vilje" - short followed by 2 consonants // "vilje" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 95
length 140
ENDIF ENDIF
// PB "tie", "stige", "krige" vowel + vowel: extra length // PB "tie", "stige", "krige" vowel + vowel: extra length
// What is causing this very short [i] in words with final [@-]? // What is causing this very short [i] in words with final [@-]?
// NOT "galleriet" [g,?&lVR'i@-D] NOT "krigen" [kR'i@-n]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) AND NOT next2PhW(n) THEN
// NOT "galleriet" [g,?&lVR'i@-D]
IF nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN
length 240 length 240
ENDIF ENDIF
//"skider" short
IF nextPhW(D) AND next2PhW(V) THEN
length 140
ENDIF
//"skideren" long
IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN
length 225
ENDIF

FMT(vowel/i_4) FMT(vowel/i_4)
endphoneme endphoneme


// sviret vs. svirret // sviret vs. svirret
phoneme ?i phoneme ?i
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 90
length 100
IfNextVowelAppend(;) IfNextVowelAppend(;)
FMT(vowel/i_4) FMT(vowel/i_4)
endphoneme endphoneme


phoneme e phoneme e
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 95 //150
length 140 //225
// "delte", "mente" // "delte", "mente"
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN
length 150
length 225
ENDIF ENDIF
// PB "ring", "ringe" // PB "ring", "ringe"
IF nextPhW(N) THEN IF nextPhW(N) THEN
length 95
length 140
ENDIF ENDIF
// PB "enig", "enige", "evig" // PB "enig", "enige", "evig"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
length 225
ENDIF ENDIF
// Only "e" // Only "e"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
length 225
ENDIF ENDIF
// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short // "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 95
length 140
ENDIF
// "et"
IF thisPh(isWordStart) AND nextPhW(isWordEnd) THEN
length 120
ENDIF ENDIF
FMT(vowel/e) FMT(vowel/e)
endphoneme endphoneme
// "skille" vs. "skele", "pille" vs. "pile" // "skille" vs. "skele", "pille" vs. "pile"
phoneme ?e phoneme ?e
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 90
length 140
FMT(vowel/e) FMT(vowel/e)
endphoneme endphoneme


phoneme E phoneme E
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 100 //150
// "værelse", "breve"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN
// length 150
length 140 //225
// no link with next vowel
IF thisPh(isWordEnd) THEN
IfNextVowelAppend(_!)
ENDIF ENDIF
// "ræve"
// "ræve"
IF nextVowel(#@) OR nextVowel(#e) THEN IF nextVowel(#@) OR nextVowel(#e) THEN
length 160 length 160
ENDIF ENDIF
ENDIF ENDIF
// "længe" - short - 2 consonants => 1 consonant // "længe" - short - 2 consonants => 1 consonant
IF nextPhW(N) THEN IF nextPhW(N) THEN
length 120
length 100
ENDIF ENDIF
// "værelse" [v'E3-Vls@_!] // "værelse" [v'E3-Vls@_!]
IF nextPhW(3-) AND next2PhW(V) THEN IF nextPhW(3-) AND next2PhW(V) THEN
length 120
length 100
ENDIF ENDIF
// "mælkebøtte" - short followed by 2 consonants // "mælkebøtte" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 120
length 140
ENDIF ENDIF
FMT(vowel/e_mid2) FMT(vowel/e_mid2)
endphoneme endphoneme
phoneme ?E phoneme ?E
vowel starttype #e endtype #e vowel starttype #e endtype #e
ipa ε ipa ε
length 100
length 140
FMT(vowel/e_mid2) FMT(vowel/e_mid2)
endphoneme endphoneme


phoneme & phoneme &
vowel starttype #e endtype #e vowel starttype #e endtype #e
ipa a ipa a
length 90 //150
// "same", "sale", "bade" - consonant + gooup #e or group #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
length 140 //225
// "same", "sale", "bade" - consonant + @-: long
// but NOT "hinanden"
IF next2PhW(@-) OR next2PhW(@) AND NOT next3PhW(n) THEN
length 225
ENDIF ENDIF
// ThisPh + gooup #e or group #@
// ThisPh + V or group #@
// "ae", "aer" vowel + vowel: extra length // "ae", "aer" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 220
IF nextPhW(@-) OR nextPhW(V) THEN
length 260
ENDIF ENDIF
// This vowel is word end - longer because it sounds too short // This vowel is word end - longer because it sounds too short
// "ja", "Omaha" // "ja", "Omaha"
ENDIF ENDIF
// Only this vowel (in this case [&]) // Only this vowel (in this case [&])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 150
length 225
ENDIF ENDIF
// "stadig" [st&Di], "stadigt" [st&Dit] // "stadig" [st&Di], "stadigt" [st&Dit]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN IF nextPhW(isNotVowel) AND next2PhW(i) THEN
ENDIF ENDIF
// "Alfie", "alfer" - short before 2 consonants // "Alfie", "alfer" - short before 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
length 140
ENDIF ENDIF
FMT(vowel/ee_2) FMT(vowel/ee_2)
endphoneme endphoneme
phoneme ?& phoneme ?&
ipa a ipa a
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 90
length 140
FMT(vowel/ee_2) FMT(vowel/ee_2)
endphoneme endphoneme


// PB added for the æ in "dræbt" // PB added for the æ in "dræbt"
phoneme &# phoneme &#
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 120
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
length 140 //120
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
length 120
ENDIF ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
// "drenge"
IF nextPhW(N) THEN
length 140
ENDIF ENDIF
FMT(vowel/&) FMT(vowel/&)
endphoneme endphoneme
// "revl" vs. "tremme" // "revl" vs. "tremme"
phoneme ?&# phoneme ?&#
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 90
length 140
FMT(vowel/&) FMT(vowel/&)
endphoneme endphoneme


//phoneme a
// vowel starttype #a endtype #a
// length 90 //150
//IF nextPhW(#@) OR nextPhW(#e) THEN
// length 150
//ENDIF
// FMT(vowel/a_2)
//endphoneme

// PB short (glottal) a
// "bragt"
//phoneme ?a
// vowel starttype #a endtype #a
// length 90
// FMT(vowel/a_2)
//endphoneme

phoneme A // PB changed to a_8 phoneme A // PB changed to a_8
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 90 //150
length 140 //225
// PB long vowel followed by consonant and certain vowels - "drabelig" // PB long vowel followed by consonant and certain vowels - "drabelig"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN
length 225
ENDIF ENDIF
// "far", "bastard" - a bit longer followed by [r] // "far", "bastard" - a bit longer followed by [r]
IF nextPhW(r) AND nextPhW(isWordEnd) THEN IF nextPhW(r) AND nextPhW(isWordEnd) THEN
ENDIF ENDIF
// "bange" [bAN@-] - [N] = 2 consonants (ng) => short // "bange" [bAN@-] - [N] = 2 consonants (ng) => short
IF nextPhW(N) THEN IF nextPhW(N) THEN
length 90
length 140
ENDIF ENDIF
// "fare" [f'A:A] // "fare" [f'A:A]
IF nextPhW(A) THEN IF nextPhW(A) THEN
length 150
length 225
ENDIF
// "av" [Au] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
ENDIF
// "magnat" [mAun&d] - sounds too short
IF nextPhW(u) OR nextPhW(w) THEN
length 130
ENDIF ENDIF
FMT(vowel/a_8) FMT(vowel/a_8)
endphoneme endphoneme
// "drab" vs. "drabelig" // "drab" vs. "drabelig"
phoneme ?A phoneme ?A
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 90
length 140
// "straffeattest", "straffe", "rapid" - a bit longer after R // "straffeattest", "straffe", "rapid" - a bit longer after R
IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN
length 110 length 110


phoneme u phoneme u
vowel starttype #u endtype #u vowel starttype #u endtype #u
length 90 //150
length 140 //225
// "fugl" [ful] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
ENDIF
// "suge", "uge", "bluse", "julegave" // "suge", "uge", "bluse", "julegave"
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN
length 150
IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN
length 225
ENDIF ENDIF
// "umulig" [u:m'uli] // "umulig" [u:m'uli]
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
ENDIF ENDIF
// Only "u" // Only "u"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "fugl" [ful] - a bit longer
IF nextPhW(isWordEnd) THEN
length 120
length 225
ENDIF ENDIF
FMT(vowel/u_bck) FMT(vowel/u_bck)
endphoneme endphoneme
// "tude" vs. "tuden" - [tuD3] [t?uD@n] // "tude" vs. "tuden" - [tuD3] [t?uD@n]
phoneme ?u phoneme ?u
vowel starttype #u endtype #u vowel starttype #u endtype #u
length 90
length 140
FMT(vowel/u_bck) FMT(vowel/u_bck)
endphoneme endphoneme


phoneme o phoneme o
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 90 //150
length 140 //225
// "bore", "borer" // "bore", "borer"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
length 150
IF nextPhW(V) OR nextPhW(#@) THEN
length 225
ENDIF
// "kone", "koner"
IF next2PhW(V) OR next2PhW(#@) THEN
length 225
ENDIF ENDIF
// "modig" - long vowel after consonant + [i] // "modig" - long vowel after consonant + [i]
IF nextPhW(D) AND next2PhW(i) THEN IF nextPhW(D) AND next2PhW(i) THEN
length 150
length 225
ENDIF
// Only "o"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 120
ENDIF
// This vowel is word end - longer because it sounds too short
// "ko"
IF thisPh(isWordEnd) THEN
length 120
ENDIF ENDIF
FMT(vowel/o_2) FMT(vowel/o_2)
endphoneme endphoneme
// "patron" vs. "kone" // "patron" vs. "kone"
phoneme ?o phoneme ?o
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 95
length 140
FMT(vowel/o_2) FMT(vowel/o_2)
endphoneme endphoneme


phoneme O phoneme O
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 90 // 150
length 140 // 150
// "sove", "sover" - consonant + #e or #@: long // "sove", "sover" - consonant + #e or #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
IF next2PhW(@-) OR next2PhW(V) THEN
length 225
ENDIF ENDIF
// PB "gået" - ThisPh + #e or #@
IF nextPhW(#e) OR nextPhW(#@) THEN
length 150
// PB "gået" - ThisPh + V or @-
IF nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF ENDIF
// "rådig" // "rådig"
IF nextVowel(i) AND nextVowel(isFinalVowel) THEN IF nextVowel(i) AND nextVowel(isFinalVowel) THEN
length 180 length 180
ENDIF
// This vowel is word end - longer because it sounds too short
// "på", "gå"
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// "såre", "sårede" [s'O:?OD@-]
IF nextPhW(O) OR nextPhW(?O) THEN
length 225
ENDIF ENDIF
FMT(vowel/o_5) FMT(vowel/o_5)
endphoneme endphoneme
// "toget" vs. "tåget" // "toget" vs. "tåget"
phoneme ?O phoneme ?O
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 90
length 140
// "hoven"
IF nextPhW(w) OR nextPhW(?u) AND next2PhW(@-) THEN
length 120
ENDIF
FMT(vowel/o_5) FMT(vowel/o_5)
endphoneme endphoneme


phoneme V phoneme V
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 150
// "sport" [spV:t]
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPh(3) OR nextPh(V) OR nextPh(@) THEN
length 150
ENDIF
// PB short V in "holder", "solder"
IF nextPhW(isNotVowel) AND next2Ph(V) THEN
length 90
ENDIF
// "snorke", "snorker", årlig
IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN
length 140 //225
// "forlig"
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 180 length 180
ENDIF ENDIF
// "sove" [sVw3] - longer followed by w + 3
IF nextPhW(w) AND next2PhW(3) THEN
length 220
ENDIF
// PB "konge"
// PB "konge" - ng=>n
IF nextPhW(N) THEN IF nextPhW(N) THEN
length 95
length 100
ENDIF
// Only [V] - "og"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 120
ENDIF
// This vowel is word end - longer because it sounds too short
// "for" [fV]
IF thisPh(isWordEnd) THEN
length 120
ENDIF ENDIF
FMT(vowel/V_4) FMT(vowel/V_4)
endphoneme endphoneme
// "forstår" vs. "kåre" // "forstår" vs. "kåre"
phoneme ?V phoneme ?V
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 90
length 140
FMT(vowel/V_4) FMT(vowel/V_4)
endphoneme endphoneme


phoneme 0 phoneme 0
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
length 140 //225
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN
length 225
ENDIF ENDIF
FMT(vowel/oo_2) FMT(vowel/oo_2)
endphoneme endphoneme
// Short 0 "sukker" // Short 0 "sukker"
phoneme ?0 phoneme ?0
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 90
length 140
FMT(vowel/oo_2) FMT(vowel/oo_2)
endphoneme endphoneme


vowel starttype #i endtype #i vowel starttype #i endtype #i
// Length changed to short since most vowels are short. // Length changed to short since most vowels are short.
// It's probably easier only to make rules for long vowels. // It's probably easier only to make rules for long vowels.
length 90 //150
length 140 //225


// PB long vowel followed by consonant and certain vowels // PB long vowel followed by consonant and certain vowels
// "lyde", "lyder"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
// "gyde", "gyder"
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN
length 225
ENDIF ENDIF
// Only this vowel (in this case [y]) // Only this vowel (in this case [y])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
length 225
ENDIF ENDIF
// "dydig" [dyDi] // "dydig" [dyDi]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
length 225
ENDIF ENDIF
// "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(#e) OR nextPhW(#@) AND NOT next2PhW(D) THEN
// "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN
length 200 length 200
ENDIF ENDIF
// "tyve" // "tyve"
IF nextPhW(?u) AND next2PhW(@-) THEN IF nextPhW(?u) AND next2PhW(@-) THEN
length 150
length 225
ENDIF ENDIF
FMT(vowel/y) FMT(vowel/y)
endphoneme endphoneme
// "kylling" vs. "kyle", "krybbe" vs. "krybe" // "kylling" vs. "kyle", "krybbe" vs. "krybe"
phoneme ?y phoneme ?y
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 90
length 140
FMT(vowel/y) FMT(vowel/y)
endphoneme endphoneme


phoneme Y phoneme Y
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 150
length 225
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop glstop
length 90
length 140
ENDIF ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
length 225
ENDIF ENDIF
FMT(vowel/yy) FMT(vowel/yy)
endphoneme endphoneme


phoneme W phoneme W
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 90 //160
length 140 //160
// "kløe" vowel + vowel: extra length // "kløe" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN IF nextPhW(#@) OR nextPhW(#e) THEN
length 220 length 220
ENDIF ENDIF
// "røveri" but NOT "surfer" [sWf?V] TEST // "røveri" but NOT "surfer" [sWf?V] TEST
IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN
length 90
length 140
ENDIF ENDIF
// PB "nødig", "nødigt", "kølige" // PB "nødig", "nødigt", "kølige"
IF nextVowel(i) THEN IF nextVowel(i) THEN
ENDIF ENDIF
// "børnebog" // "børnebog"
IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN
length 150
length 225
ENDIF
// This vowel is word end - longer because it sounds too short
// "dø" [dW]
IF thisPh(isWordEnd) THEN
length 120
ENDIF
// PB "synge"
IF nextPhW(N) THEN
length 140
ENDIF ENDIF
FMT(vowel/oe) FMT(vowel/oe)
endphoneme endphoneme
// "prøv" vs. "prøve" // "prøv" vs. "prøve"
phoneme ?W phoneme ?W
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 95
length 140
FMT(vowel/oe) FMT(vowel/oe)
endphoneme endphoneme


// Added for the ø in "røv", "røg", "øje" instead of [V3] // Added for the ø in "røv", "røg", "øje" instead of [V3]
phoneme W# phoneme W#
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 90 //150
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
// length 90
ENDIF
length 140 //225
// PB long vowel followed by consonant and certain vowels // PB long vowel followed by consonant and certain vowels
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN
length 150
length 225
ENDIF ENDIF
FMT(vowel/V) FMT(vowel/V)
endphoneme endphoneme
// "rømme" // "rømme"
phoneme ?W# phoneme ?W#
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 90
length 140
FMT(vowel/V) FMT(vowel/V)
endphoneme endphoneme


length 300 length 300
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN
glstop glstop
length 150
length 225
ENDIF ENDIF
// "dreje" [dR'aI@-_!] // "dreje" [dR'aI@-_!]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
phoneme l phoneme l
liquid liquid
lengthmod 7 lengthmod 7
// [ll] => [-l] - avoid double l
IF nextPhW(l) THEN
// ChangePhoneme(-)
ENDIF
ChangePhoneme(l/3) ChangePhoneme(l/3)
// CALL base/l // CALL base/l
endphoneme endphoneme
liquid liquid
lengthmod 7 lengthmod 7


IF nextPh(isVowel) THEN
IF nextPhW(isVowel) THEN
// ChangePhoneme(l) // ChangePhoneme(l)
ENDIF ENDIF


PrevVowelEndings PrevVowelEndings
VowelEnding(l/l_@) VowelEnding(l/l_@)
VowelEnding(l/l_a,-70) // kvalt, kapital
VowelEnding(l/l_e, -40)
VowelEnding(l/l_i, -70)
VowelEnding(l/l_o,-70) // stole, skole, pistol
VowelEnding(l/l_a)
VowelEnding(l/l_e, -50) // hjælpe
VowelEnding(l/l_i, -70) // flygte?
VowelEnding(l/l_o,-35) // stole, skole, pistol
VowelEnding(l/l_u, -70) VowelEnding(l/l_u, -70)
EndSwitch EndSwitch


phoneme j phoneme j
liquid palatal liquid palatal
lengthmod 7 lengthmod 7

// no link with next vowel
IF thisPh(isWordEnd) THEN
IfNextVowelAppend(_!)
ENDIF
IF nextPhW(isVowel) THEN IF nextPhW(isVowel) THEN
NextVowelStarts NextVowelStarts
VowelStart(j/j@) VowelStart(j/j@)
Vowelout len=70 Vowelout len=70
FMT(j/j_) FMT(j/j_)
ENDIF ENDIF
endphoneme
endphoneme

+ 1
- 1
phsource/ph_hindi View File



phoneme c# phoneme c#
CALL base/tS; CALL base/tS;
ipa ch
ipa cU+02B0
endphoneme endphoneme





+ 20
- 0
phsource/ph_korean View File

FMT(dzh/dzh) addWav(x/dz_pzd) FMT(dzh/dzh) addWav(x/dz_pzd)
endphoneme endphoneme


phoneme s-
import_phoneme base/s // temporary
endphoneme

phoneme q-
import_phoneme base/q // temporary
endphoneme

phoneme tS;-
import_phoneme base/tS; // temporary
endphoneme

phoneme d-
import_phoneme base/d
endphoneme

// phoneme tSh; ?? changed to [tS;h] in ko_rules
// phoneme h- in ko_list (for 10^3) ?? changed to [h]
// phoneme tSh- changed to tSh

phoneme * // r(ㄹ) at initial, medial phoneme * // r(ㄹ) at initial, medial
vcd alv flp rhotic vcd alv flp rhotic
ipa ɾ ipa ɾ

+ 119
- 1
phsource/ph_malayalam View File

length 130 length 130


IF thisPh(isStressed) OR thisPh(isFirstVowel) OR thisPh(isWordEnd) THEN IF thisPh(isStressed) OR thisPh(isFirstVowel) OR thisPh(isWordEnd) THEN
FMT(vowel/a#_2)
FMT(vowel/a#_4)
ELSE ELSE
ChangeIfUnstressed(@) ChangeIfUnstressed(@)


endphoneme endphoneme




// Aspirated voice stops, sound like aspirated unvoiced stops ?

phoneme b#
vls blb stop prevoice
lengthmod 2
voicingswitch b
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(b/xb)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF

IF nextPh(isPause2) THEN
WAV(ustop/p_)
ENDIF
IF nextPh(l) THEN
WAV(ustop/pl)
ENDIF
WAV(ustop/p_asp)
endphoneme


phoneme d#
vls dnt stop prevoice
lengthmod 2
voicingswitch d
Vowelin f1=0 f2=1500 -300 300 f3=-100 80 amp=16
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20

IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(d/xd)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF

IF nextPh(isPause2) THEN
WAV(ustop/t_dnt, 35)
ENDIF
WAV(ustop/t_dnt, 50)
endphoneme


phoneme d.#
vls rfx stop prevoice
lengthmod 2
ipa ʈU+02B0
Vowelin f1=0 f2=1800 -300 300 f3=-400 80
Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2

IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(d/xdr)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF

voicingswitch d.#
WAV(ustop/t)
endphoneme


phoneme J#
vls pal afr sibilant palatal prevoice
voicingswitch c#
lengthmod 2
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70

IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(dzh/xdz_pzd)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF

IF nextPh(isPause2) THEN
WAV(ustop/ts_pzd)
ENDIF
WAV(ustop/ts_pzd)
endphoneme


phoneme g#
vls vel stop prevoice
lengthmod 2
Vowelin f1=1 f2=1400 -100 100 f3=-150 80
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20

IF PreVoicing THEN
IF prevPhW(isVowel) THEN
FMT(g/xg)
ELSE
FMT(voc/murmur1)
ENDIF
ENDIF

IF nextPh(isPause2) THEN
WAV(ustop/k_asp, 40)
ENDIF
IF nextPhW(#e) OR nextPhW(#i) THEN
WAV(ustop/k_asp_e, 40)
ELIF nextPhW(#o) OR nextPhW(#u) THEN
WAV(ustop/k_asp_a, 25)
ELSE
WAV(ustop/k_asp_a, 30)
ENDIF
endphoneme



+ 3
- 3
phsource/phonemes View File

phonemetable ml hi phonemetable ml hi
include ph_malayalam include ph_malayalam


phonemetable te hi
include ph_telugu





phonemetable hu base phonemetable hu base
//phonemetable dv hi //phonemetable dv hi
//include ph_divehi //include ph_divehi


//phonemetable te hi
//include ph_telugu

//phonemetable tn base //phonemetable tn base
//include ph_setswana //include ph_setswana



BIN
phsource/voc/murmur1 View File


+ 1
- 1
src/phonemelist.cpp View File

phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed
} }


if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE)
if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE || (ph->phflags & phPREVOICE))
{ {
phlist[ix].length = 128; // length_mod phlist[ix].length = 128; // length_mod
phlist[ix].env = PITCHfall; phlist[ix].env = PITCHfall;

+ 1
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.47.03c 23.Mar.13";
const char *version_string = "1.47.03d 26.Mar.13";
const int version_phdata = 0x014701; const int version_phdata = 0x014701;


int option_device_number = -1; int option_device_number = -1;

+ 19
- 1
src/synthesize.cpp View File



EndAmplitude(); EndAmplitude();


if(p->prepause > 0)
if((p->prepause > 0) && !(p->ph->phflags & phPREVOICE))
DoPause(p->prepause,1); DoPause(p->prepause,1);


done_phoneme_marker = 0; done_phoneme_marker = 0;


case phSTOP: case phSTOP:
released = 0; released = 0;
ph = p->ph;
if(next->type==phVOWEL) if(next->type==phVOWEL)
{ {
released = 1; released = 1;
if(released == 0) if(released == 0)
p->synthflags |= SFLAG_NEXT_PAUSE; p->synthflags |= SFLAG_NEXT_PAUSE;


if(ph->phflags & phPREVOICE)
{
// a period of voicing before the release
memset(&fmtp, 0, sizeof(fmtp));
InterpretPhoneme(NULL, 0x01, p, &phdata, &worddata);
fmtp.fmt_addr = phdata.sound_addr[pd_FMT];
fmtp.fmt_amp = phdata.sound_param[pd_FMT];

if(last_pitch_cmd < 0)
{
DoAmplitude(next->amp,NULL);
DoPitch(envelope_data[p->env],next->pitch1,next->pitch2);
}

DoSpect2(ph, 0, &fmtp, p, 0);
}

InterpretPhoneme(NULL, 0, p, &phdata, &worddata); InterpretPhoneme(NULL, 0, p, &phdata, &worddata);
phdata.pd_control |= pd_DONTLENGTHEN; phdata.pd_control |= pd_DONTLENGTHEN;
DoSample3(&phdata, 0, 0); DoSample3(&phdata, 0, 0);

+ 1
- 1
src/tr_languages.cpp View File

{"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0}, {"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0},
{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, {"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0},
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS}, {"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0},
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, L('b','n'), 0},
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS}, {"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS},
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0}, {"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0},
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0}, {"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0},

+ 1
- 1
src/voices.cpp View File



// which directory to look for a named voice. List of voice names, must end in a space. // which directory to look for a named voice. List of voice names, must end in a space.
static const char *voices_asia = static const char *voices_asia =
"fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta tr vi vi-hue zh zh-yue ";
"bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue zh zh-yue ";
static const char *voices_europe = static const char *voices_europe =
"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";



Loading…
Cancel
Save