mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
[1.31.03]
lang=en-r: change to phoneme [t#] (reduced "t") Added "consonants" attribute to voice files. Minor change to intonation types 2 and 3. lang=zh: adjust tone levels lang=fr: adjust stressAmp, adjust consonant strengths. Platform RISC_OS. Disable the "breath" attribute in voices because floating point is not allowed in callbacks. Platform RISC_OS. Implement ListVoices() git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@132 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
+16
-13
@@ -91,10 +91,10 @@ Dictionary es_dict
|
||||
@- a aI e E eI eU i
|
||||
o oI u
|
||||
|
||||
* b B d D f g j
|
||||
J J^ k l l^ m n n^
|
||||
p Q r R s t T tS
|
||||
v w x
|
||||
* ** b B d D f g
|
||||
j J J^ k l l^ m n
|
||||
n^ p Q r R s t T
|
||||
tS v w x
|
||||
|
||||
|
||||
Dictionary fi_dict
|
||||
@@ -115,11 +115,10 @@ Dictionary fr_dict
|
||||
E~ i i: o O O~ u W
|
||||
w^i W~ y Y
|
||||
|
||||
* - : ; b c d dZ
|
||||
f g h j k l L m
|
||||
n N n^ p r R s S
|
||||
t t2 tS v w z Z z2
|
||||
z3
|
||||
* : ; b c d dZ f
|
||||
g h j k l L m n
|
||||
N n^ p r R s S t
|
||||
t2 tS v w z Z z2 z3
|
||||
|
||||
|
||||
Dictionary hi_dict
|
||||
@@ -214,10 +213,10 @@ Dictionary sk_dict
|
||||
l- l: o o: oU r- r: u
|
||||
u:
|
||||
|
||||
* b d d; dZ f g h
|
||||
j k l l^ m n N n^
|
||||
p r R R^ R^/ s S t
|
||||
t; tS ts v x z Z
|
||||
* : b d d; dZ f g
|
||||
h j k l l^ m n N
|
||||
n^ p r R R^ R^/ s S
|
||||
t t; tS ts v x z Z
|
||||
|
||||
|
||||
Dictionary sv_dict
|
||||
@@ -387,3 +386,7 @@ O u
|
||||
j k l m n N n^ p
|
||||
r R s S t tS v w
|
||||
x z
|
||||
|
||||
|
||||
Dictionary ja_dict
|
||||
|
||||
|
||||
@@ -2567,6 +2567,7 @@ he %hi: $verbsf
|
||||
she %Si: $only $verbsf
|
||||
it %It $verbsf
|
||||
(it has) I2t||h'az $atend
|
||||
it $allcaps $abbrev
|
||||
we %wi: $verbf $only
|
||||
you %ju: $verbf
|
||||
they %DeI $verbf
|
||||
|
||||
+3
-1
@@ -3151,7 +3151,7 @@
|
||||
lle (_ l
|
||||
@@o) lled (_$3v d
|
||||
@@) lled (_$3v d
|
||||
B) l (_N @L
|
||||
B) l (_ @L
|
||||
w) l (_ l
|
||||
r) l (_ l
|
||||
Al) l (_
|
||||
@@ -4743,8 +4743,10 @@
|
||||
j) une (_ u:n
|
||||
l) une (_ u:n
|
||||
r) une (_ u:n
|
||||
?3 t) une (_ u:n
|
||||
_) una (b ,Vna2
|
||||
t) un (e ju:n
|
||||
?3 t) un (e u:n
|
||||
_) un (if ju:n
|
||||
un (ani %ju:n
|
||||
_) under (@P5 ,Vnd3 // prefix
|
||||
|
||||
+1
-1
@@ -148,7 +148,7 @@ siquiera $pause
|
||||
porque $pause // because
|
||||
|
||||
// questions
|
||||
que $u+ $pause // what
|
||||
que $u $pause // what
|
||||
cuál $pause // which
|
||||
cuáles $pause
|
||||
cómo $pause // how
|
||||
|
||||
+1
-1
@@ -129,7 +129,7 @@
|
||||
_) r (_ E*e
|
||||
r R
|
||||
_) r R
|
||||
A) r (A *
|
||||
A) r (A **
|
||||
C) r (A @-*
|
||||
rr *R
|
||||
|
||||
|
||||
+27
-34
@@ -1,10 +1,11 @@
|
||||
|
||||
|
||||
|
||||
// This file in UTF8 encoded
|
||||
|
||||
// 2006-11-18 Gilles Casse <gcasse@oralux.org>
|
||||
//
|
||||
// Updated 2008-01-21 Michel Such <michel.such@free.fr>
|
||||
// Updated 2008-01-25 Michel Such <michel.such@free.fr>
|
||||
//
|
||||
// * Numbers, a few abbreviations and exceptions.
|
||||
//
|
||||
@@ -173,11 +174,13 @@ _dpt virg'yl
|
||||
abc $abbrev
|
||||
ac $abbrev
|
||||
adsl $abbrev
|
||||
alt $pause
|
||||
amd $abbrev
|
||||
api $abbrev
|
||||
avh $abbrev
|
||||
cci $abbrev
|
||||
cio $abbrev
|
||||
ctrl kO~tRol
|
||||
ctrl kO~tRol $pause
|
||||
dept depaRt@mA~
|
||||
etc etseteRa
|
||||
hmm h@m
|
||||
@@ -364,23 +367,27 @@ y i:gR'Ek $atend
|
||||
// pronunciation exceptions
|
||||
|
||||
consent kO~s'A~t2
|
||||
divers div'Erz2
|
||||
scient si
|
||||
bénéficient benefisi $verb
|
||||
concurrent kO~kyR'A~
|
||||
couvent k'uvt2 $verb
|
||||
dessus d@sy
|
||||
dessous d@su
|
||||
divers divErz2
|
||||
►évident evid'A~
|
||||
évident evidt2 $verb
|
||||
ferment fErm'A~
|
||||
ferment f'Ermt2 $verb
|
||||
parent paR'A~
|
||||
parent p'art2 $verb
|
||||
pastis pastis
|
||||
président pRezid'A~
|
||||
président pRezidt2 $verb
|
||||
résident Rezid'A~
|
||||
résident Rezidt2 $verb
|
||||
ressent r@s'A~t2
|
||||
►évident evid'A~
|
||||
évident evidt2 $verb
|
||||
couvent k'uvt2 $verb
|
||||
concurrent kO~kyR'A~
|
||||
récurrent RekyR'A~
|
||||
ferment fErm'A~
|
||||
ferment f'Ermt2 $verb
|
||||
parent paR'A~
|
||||
parent p'art2 $verb
|
||||
riz ri
|
||||
sergent sErZ'A~
|
||||
serment sErm'A~
|
||||
serpent sErp'A~
|
||||
@@ -405,23 +412,18 @@ accident aksidA~
|
||||
adéquat adekuat2
|
||||
adéquate adekuat
|
||||
ardent aRdA~
|
||||
boeufs bY
|
||||
bus bys
|
||||
choeur kWr
|
||||
choeur k@r
|
||||
discident disidA~
|
||||
fils fis
|
||||
haillon _|ajO~
|
||||
haricot _|aRiko
|
||||
imprudent E~pRydA~
|
||||
juin ZwE~
|
||||
juin ZuE~
|
||||
mars maRs
|
||||
occident OksidA~
|
||||
oeufs Y
|
||||
orient ORjA~
|
||||
pays pEi
|
||||
prudent pRydA~
|
||||
secret sYkRE
|
||||
secrets sYkREz2
|
||||
souris suri
|
||||
|
||||
|
||||
@@ -435,9 +437,6 @@ s'y si $verbf
|
||||
qu'y ki $verbf
|
||||
(sud est) sydEst
|
||||
(nord est) nOREst
|
||||
cci $abbrev
|
||||
nvda $abbrev
|
||||
open Op'@n
|
||||
potentiomètre pOtA~sjOmEtR@-
|
||||
|
||||
processus pROsEsys
|
||||
@@ -462,11 +461,10 @@ out aut
|
||||
rut Ryt
|
||||
scorbut skORbyt
|
||||
scout skut
|
||||
scouts skut
|
||||
stout staut
|
||||
uppercut ypERkyt
|
||||
ut yt
|
||||
zut syt
|
||||
zut zyt
|
||||
|
||||
|
||||
// et (t is said)
|
||||
@@ -509,8 +507,6 @@ flirt fl@Rt
|
||||
(sweat shirt) swEtS@Rt
|
||||
(tee shirt) tiS@Rt
|
||||
|
||||
parfum paRfW~
|
||||
forum fOROm
|
||||
|
||||
// words from other languages
|
||||
amazon amaz'On
|
||||
@@ -551,6 +547,7 @@ new nj'u
|
||||
news nj'uz
|
||||
night najt
|
||||
ok oke
|
||||
open Op'@n
|
||||
outlook autluk
|
||||
player plEj'@r
|
||||
reader Ri:d@R
|
||||
@@ -563,7 +560,7 @@ skype sk'ajp@-
|
||||
spybot spajbOt
|
||||
sun s@n
|
||||
sunlight s@nlajt
|
||||
(text aloud) tEkst||@lau-d
|
||||
(text aloud) tEkst||@lawd
|
||||
thunderbird f@ndERb@Rd
|
||||
ubuntu ubuntu
|
||||
update @pd'E:jt
|
||||
@@ -578,26 +575,23 @@ yacht jot
|
||||
|
||||
// tions (tjO~ instead of sjO~)
|
||||
achetions aS@tjO~z2
|
||||
ajoutions aZutjO~z2
|
||||
apportions apORtjO~z2
|
||||
apprêtions apREtjO~z2
|
||||
arrêtions aREtjO~z2
|
||||
chantions SA~tjO~z2
|
||||
citions sitjO~z2
|
||||
comptions kO~tjO~z2
|
||||
constations kO~statjO~z2
|
||||
contentions kO~tA~tjO~z2
|
||||
dations datjO~z2
|
||||
discutions diskytjO~z2
|
||||
doutions dutjO~z2
|
||||
débutions debytjO~z2
|
||||
désertions dezERtjO~z2
|
||||
désertions dezERtjO~z2 $verb
|
||||
détentions detA~tjO~z2
|
||||
escomptions EskO~tjO~z2
|
||||
exploitions EksplwatjO~z2
|
||||
exportions EkspORtjO~z2
|
||||
habitions abitjO~z2
|
||||
heurtions @RtjO~z2
|
||||
heurtions _!@RtjO~z2
|
||||
jetions Z@tjO~z2
|
||||
limitions limitjO~z2
|
||||
méritions meRitjO~z2
|
||||
@@ -605,8 +599,7 @@ partions paRtjO~z2
|
||||
pressentions pREsA~tjO~z2
|
||||
présentions pRezA~tjO~z2
|
||||
prêtions pREtjO~z2
|
||||
rations RatjO~z2
|
||||
redoutions R@dutjO~z2
|
||||
rations RatjO~z2 $verb
|
||||
représentions R@pRezA~tjO~z2
|
||||
respections REspEktjO~z2
|
||||
ressentions R@sA~tjO~z2
|
||||
@@ -618,7 +611,6 @@ supportions sypORtjO~z2
|
||||
tentions tA~tjO~z2
|
||||
traitions tREtjO~z2
|
||||
votions vOtjO~z2 $u
|
||||
écoutions ekutjO~z2
|
||||
étions etjO~z2
|
||||
évitions evitjO~z2
|
||||
|
||||
@@ -634,3 +626,4 @@ vincent vE~sA~
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+32
-24
@@ -3,7 +3,7 @@
|
||||
|
||||
// 2006-11-18 Gilles Casse <gcasse@oralux.org>
|
||||
//
|
||||
// Updated: 2008-01-21 Michel Such <michel.such@free.fr>
|
||||
// Updated: 2008-01-25 Michel Such <michel.such@free.fr>
|
||||
//
|
||||
// * The rules are based on Cicero TTS.
|
||||
//
|
||||
@@ -107,15 +107,14 @@
|
||||
quon) d (_ t2
|
||||
|
||||
dt (_ t // Schmidt
|
||||
_ni) d (_ // nid
|
||||
_noeu) d (_ // noeud
|
||||
r) d (_ // lourd placard
|
||||
d d // don bled
|
||||
|
||||
|
||||
.group e
|
||||
e (Ce_ E
|
||||
AC) e (_ @- // e muet
|
||||
CC) e (_ @- // e muet
|
||||
gu) e (_ @- // e muet
|
||||
eau o // bateau cheveaux
|
||||
j) e (a // Jean Jeanne
|
||||
sp) ea (k i: // speak speaker
|
||||
@@ -210,6 +209,7 @@
|
||||
en (s_ A~
|
||||
en (CA A~ // pentathlon
|
||||
en (CC A~ // entre
|
||||
en (ch_ En // french
|
||||
|
||||
_C) er (_ ER // fer
|
||||
_Ch) er (_ ER // cher
|
||||
@@ -249,14 +249,15 @@
|
||||
_r) es (A @s // resaisir resaluer
|
||||
|
||||
_r) e (ss @ // ressembler
|
||||
_r) e (ssu e // ressusciter
|
||||
_r) e (stra @
|
||||
_r) e (stre @
|
||||
_r) e (stro @
|
||||
_r) e (stru @ // restructurer
|
||||
-) est (_ Est // -est
|
||||
|
||||
@Cr) es (_C =@
|
||||
rC) es (_C =@ // fortes dames
|
||||
@Cr) es (_C @-
|
||||
rC) es (_C @- // fortes dames
|
||||
|
||||
') eu (_ y // eu
|
||||
eu (r_ @ // peur
|
||||
@@ -282,17 +283,20 @@
|
||||
|
||||
ez (_ ez2 // nez mangez chez
|
||||
_C) e (_ @ // je te
|
||||
_CC) e (_ @
|
||||
_CC) e (_ @-
|
||||
_qu) e (_ @ // que
|
||||
|
||||
@Cr) e (_C =@ // quatre pattes
|
||||
rC) e (_C =@
|
||||
@Cr) e (_C @- // quatre pattes
|
||||
CC) e (_C @-
|
||||
ch) e (_C @-
|
||||
gu) e (_C @-
|
||||
qu) e (_C @-
|
||||
|
||||
e (_ // montre
|
||||
|
||||
g) e (A // mangeons
|
||||
|
||||
AC) e (ment // vitement sûrement
|
||||
AC) e (ment @- // vitement sûrement
|
||||
Aqu) e (ment
|
||||
enC) e (ment
|
||||
enqu) e (ment
|
||||
@@ -386,11 +390,13 @@
|
||||
|
||||
.group h
|
||||
_) h (ac _! // hache
|
||||
_) h (ai _! // haine haillon
|
||||
_) h (al _! // halte
|
||||
_) h (amp _! // hampe
|
||||
_) h (an _! // hanche
|
||||
_) h (app _! // happer
|
||||
_) h (arc _! // harceler
|
||||
_) h (ari _! // haricot haridelle
|
||||
_) h (arna _! // harnais
|
||||
_) h (ard _! // hardi
|
||||
_) h (arp _! // harpe
|
||||
@@ -398,6 +404,7 @@ _) h (au _! // haut
|
||||
_) h (av _! // havre
|
||||
_) h (ern _! // hernie
|
||||
_) h (ers _! // herse
|
||||
_) h (eurt _! // heurter
|
||||
_) h (ibo _! // hibou
|
||||
_) h (ide _! // hideux
|
||||
_) h (oll _! // hollandais
|
||||
@@ -500,19 +507,22 @@ _) h (utte_ _! // hutte
|
||||
cr) oc (_ o // escroc
|
||||
|
||||
o (ch o // cochon
|
||||
o (che_ O // poche, cloche
|
||||
oe (ll wa // moelleux
|
||||
_) oe (C Y // oesophage
|
||||
o (eu // soeur oeuf
|
||||
oeu @ // soeur coeur
|
||||
oeufs @ // oeufs boeufs
|
||||
o (eC o // coefficient
|
||||
_) oi (gnon O // oignons
|
||||
oin (C wE~
|
||||
oin (_ wE~ // coin
|
||||
oi wa // poil
|
||||
oid (_ wa // froid
|
||||
oê (l wE // poêle
|
||||
oê (l wa // poêle
|
||||
oî wa // boîte
|
||||
o (mm O // comme
|
||||
dr) o (me_ o // vélodrome
|
||||
radi) o (C o // radiophonique
|
||||
dr) o (me_ O // vélodrome
|
||||
ph) o (ne_ O // téléphone
|
||||
om (b O~ // bombe
|
||||
om (p O~ // pompe
|
||||
@@ -606,7 +616,6 @@ _) h (utte_ _! // hutte
|
||||
_A) qu (a ku // équateur
|
||||
qu k // quatre
|
||||
_) que (_ k@ // que
|
||||
que (_ k@- // puisque banque...
|
||||
_) qu' (P3 k // qu'il
|
||||
n) q (_ k // cinq cent
|
||||
|
||||
@@ -616,8 +625,6 @@ _) h (utte_ _! // hutte
|
||||
_su) rr RR // surréaliste
|
||||
cou) rr RR // courrai
|
||||
mou) rr RR // mourrai
|
||||
rre (_ R@- // barre
|
||||
C) re (_ R@- // litre
|
||||
rr R // erreur
|
||||
r r // rien
|
||||
|
||||
@@ -682,16 +689,11 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe
|
||||
Vn) t (_ t2 // silent at end of verb unless next word starts with a vowel
|
||||
n) t (_ // silent at end of word
|
||||
r) t (_ t2 // fort
|
||||
tte (_ t@- // fillette
|
||||
C) te (_ t@- // patte
|
||||
a) te (_ t@- // tomate
|
||||
|
||||
aul) t (_ // Renault
|
||||
|
||||
tt t // attitude
|
||||
tte (_ t@- // fillette
|
||||
A) te (_ t@- // tomate
|
||||
C) te (_ t@- // pente
|
||||
|
||||
s) th (m // asthme
|
||||
th t // théorie
|
||||
@@ -712,6 +714,9 @@ C) te (_ t@- // pente
|
||||
|
||||
|
||||
t (ion s // programmation
|
||||
Cisi) t (ion t // visitions
|
||||
ci) t (ion t // citions
|
||||
ou) t (ion t // ajoutions
|
||||
s) t (ion t // gestion
|
||||
t) t (ion t // combattions
|
||||
|
||||
@@ -739,13 +744,14 @@ C) te (_ t@- // pente
|
||||
u y // cruel nuage brut
|
||||
ui w^i
|
||||
|
||||
c) ueill Wj // cueillir
|
||||
c) ueil (_ Wj // recueil
|
||||
g) ueill Wj // orgueilleux
|
||||
g) ueil (_ Wj // orgueil
|
||||
|
||||
c) ueill Wj
|
||||
c) ueil (_ Wj
|
||||
|
||||
um (_ Om // album
|
||||
f) um (_ W~ // parfum
|
||||
um (b W~ // humble
|
||||
um (p W~
|
||||
un (C W~ // emprunt lundi
|
||||
@@ -763,7 +769,8 @@ C) te (_ t@- // pente
|
||||
|
||||
.group w
|
||||
w w
|
||||
ware (_ _^_EN // hardware, software
|
||||
wa (Ce_ wE // hardware software wave
|
||||
w (agon v // wagon
|
||||
|
||||
|
||||
.group x
|
||||
@@ -853,3 +860,4 @@ C) te (_ t@- // pente
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+85
-45
@@ -2,54 +2,94 @@
|
||||
// This file is UTF-8 encoded
|
||||
|
||||
// Letters
|
||||
_a a:
|
||||
á d,l-he:'a:
|
||||
ä 'a:prehlasovane:
|
||||
b be:
|
||||
c tse:
|
||||
č tSe:
|
||||
d de:
|
||||
ď d;e:
|
||||
e e:
|
||||
é d,l-he:'e:
|
||||
f ef
|
||||
g ge:
|
||||
h ha:
|
||||
i i:
|
||||
í d,l-he:'i:
|
||||
j je:
|
||||
_k ka:
|
||||
l el
|
||||
ľ el^
|
||||
ĺ d,l-he:'el
|
||||
m em
|
||||
n en
|
||||
ň en^
|
||||
_o o:
|
||||
ó d,l-he:'o:
|
||||
ô 'o:sv,oka:n^om
|
||||
p pe:
|
||||
q kve:
|
||||
r er
|
||||
_s es
|
||||
š eS
|
||||
t te:
|
||||
ť t;e:
|
||||
u u:
|
||||
ú dl-he:'u:
|
||||
_v ve:
|
||||
w dv'ojite:,ve:
|
||||
x iks
|
||||
y ipsilon
|
||||
ý d,l-he:'i:
|
||||
_z zet
|
||||
ž Zet
|
||||
_a a:
|
||||
á d,l-he:'a:
|
||||
ä 'a:pRehlasovane:
|
||||
b be:
|
||||
c tse:
|
||||
č tSe:
|
||||
d de:
|
||||
ď d;e:
|
||||
e e:
|
||||
é d,l-he:'e:
|
||||
f ef
|
||||
g ge:
|
||||
h ha:
|
||||
i i:
|
||||
í d,l-he:'i:
|
||||
j je:
|
||||
_k ka:
|
||||
l el
|
||||
ľ el^
|
||||
ĺ d,l-he:'el
|
||||
m em
|
||||
n en
|
||||
ň en^
|
||||
_o o:
|
||||
ó d,l-he:'o:
|
||||
ô 'o:sv,oka:n^om
|
||||
p pe:
|
||||
q kve:
|
||||
r eR
|
||||
ř eR^
|
||||
_s es
|
||||
š eS
|
||||
t te:
|
||||
ť t;e:
|
||||
u u:
|
||||
ú dl-he:'u:
|
||||
ů 'u:s_kR'oUZkem
|
||||
_v ve:
|
||||
w dv'ojite:,ve:
|
||||
x iks
|
||||
y ipsilon
|
||||
ý d,l-he:'i:
|
||||
_z zet
|
||||
ž Zet
|
||||
|
||||
// character names
|
||||
_cap vel^ke:
|
||||
_?? simbol
|
||||
_#9 tab
|
||||
_#32 'medzeRa
|
||||
_?A znak
|
||||
|
||||
_! vi:kRitSn^i:k
|
||||
_" u:vodzovki
|
||||
_# kRi:Zik
|
||||
_$ dola:R
|
||||
_& ampeRsand
|
||||
_' apostRof
|
||||
_( za:tvoRka
|
||||
_) zatvoRit;
|
||||
_* hviezda
|
||||
+ plus
|
||||
_, tSiaRka
|
||||
_- pomltSka
|
||||
_. bodka
|
||||
_/ lomeno
|
||||
_: dvojbodka
|
||||
_; bodkotSiaRka
|
||||
_< menSi:
|
||||
_= Rovna:sa
|
||||
_> vetSSi:
|
||||
_? ota:zn^ik
|
||||
_@ zavin:atS
|
||||
_[ hRanata:||za:tvoRka
|
||||
_\ opatSne:||lomeno
|
||||
_] hRanata:||zatvoRit;
|
||||
_^ stRieZka
|
||||
_` aktsent
|
||||
_{ zloZena:||za:tvoRka
|
||||
_| zvisla:||tSiaRa
|
||||
_} zloZena:||zatvoRit;
|
||||
_~ vlnovka
|
||||
€ euRo
|
||||
|
||||
|
||||
// Numbers
|
||||
_0 n'ula
|
||||
_1 j'ed;en
|
||||
_1 j'eden
|
||||
_2 dv'a
|
||||
_3 t'@-*i
|
||||
_4 St'i*i
|
||||
@@ -59,7 +99,7 @@ _7 s'ed;em
|
||||
_8 'osem
|
||||
_9 d;'ev&t;
|
||||
_10 d;'esat;
|
||||
_11 j'ed;ena:st;
|
||||
_11 j'edena:st;
|
||||
_12 dv'ana:st;
|
||||
_13 t@-*'ina:st;
|
||||
_14 Str-n'a:st;
|
||||
@@ -82,7 +122,7 @@ _0M1 t;'isi:ts
|
||||
_1M1 t;'isi:ts
|
||||
_2M1 dv'et;'isi:ts
|
||||
_0M2 m'ilio:n
|
||||
_0M3 m'iljarda
|
||||
_0M3 m'iljaRda
|
||||
_dpt _:tSj,arka_
|
||||
|
||||
|
||||
|
||||
+3
-3
@@ -639,7 +639,7 @@ _charak) te (r te
|
||||
.group
|
||||
ě e
|
||||
ů u: // czech
|
||||
$ dola:r
|
||||
% pertsento
|
||||
+ plus
|
||||
$ dola:R
|
||||
% peRtsento
|
||||
D_) % peRtsent
|
||||
|
||||
|
||||
+39
-9
@@ -1,4 +1,4 @@
|
||||
45 phoneme tables
|
||||
46 phoneme tables
|
||||
new total
|
||||
base 98 98
|
||||
base2 24 117
|
||||
@@ -15,7 +15,7 @@
|
||||
eo 13 110
|
||||
jbo 4 111
|
||||
fi 40 129
|
||||
fr 38 122
|
||||
fr 42 122
|
||||
fr_ca 11 122
|
||||
hi 50 134
|
||||
ta 15 136
|
||||
@@ -45,6 +45,7 @@
|
||||
sw 14 107
|
||||
th 50 141
|
||||
id 14 119
|
||||
ja 7 103
|
||||
|
||||
Data file Used by
|
||||
b/b [b] base
|
||||
@@ -83,6 +84,7 @@ d/d [d] base
|
||||
[d[] base
|
||||
[d] base2
|
||||
[d] fi
|
||||
[d] fr
|
||||
[d] hi
|
||||
[d.] hi
|
||||
[d] hu
|
||||
@@ -98,6 +100,7 @@ d/d_ [d] base
|
||||
[d[] base
|
||||
[d] base2
|
||||
[d] fi
|
||||
[d] fr
|
||||
[d] hi
|
||||
[d.] hi
|
||||
[d] hu
|
||||
@@ -115,6 +118,7 @@ d/dr [*] base
|
||||
[d[] base
|
||||
[d] base2
|
||||
[d] fi
|
||||
[d] fr
|
||||
[d] hi
|
||||
[d.] hi
|
||||
[d] hu
|
||||
@@ -128,6 +132,7 @@ d/dr [*] base
|
||||
[d] sw
|
||||
d/tap [*;] ro
|
||||
d/tap1 [*] base
|
||||
d/tap2 [t#] en_us
|
||||
d/tap3 [*] base
|
||||
d/tap4 [r] es
|
||||
d/tap_i [*;] ro
|
||||
@@ -135,6 +140,7 @@ d/xd [d] base
|
||||
[d[] base
|
||||
[d] base2
|
||||
[d] fi
|
||||
[d] fr
|
||||
[d] hi
|
||||
[d.] hi
|
||||
[d] hu
|
||||
@@ -146,6 +152,7 @@ d/xd [d] base
|
||||
[d] sw
|
||||
d/xd_pzd [d;] pl
|
||||
[d;] ru
|
||||
d/x_tap [t#] en_us
|
||||
dzh/dzh [dZ] base
|
||||
[dZ;] base
|
||||
[dz;] base
|
||||
@@ -192,11 +199,11 @@ envelope/p_fallrise [4] vi
|
||||
envelope/p_level [1] vi
|
||||
[3] zhy
|
||||
[6] zhy
|
||||
[44] zh
|
||||
[55] zh
|
||||
envelope/p_rise [3] vi
|
||||
[2] zhy
|
||||
[5] zhy
|
||||
[44] zh
|
||||
[35] zh
|
||||
[4] th
|
||||
envelope/vi_5 [5] vi
|
||||
@@ -209,14 +216,17 @@ g2/xg [g-] base
|
||||
[g] hi
|
||||
g/g [g] base
|
||||
[g] cy
|
||||
[g] fr
|
||||
[g] hi
|
||||
[g] es
|
||||
g/g_ [g] base
|
||||
[g] cy
|
||||
[g] fr
|
||||
[g] hi
|
||||
[g] es
|
||||
g/xg [g] base
|
||||
[g] cy
|
||||
[g] fr
|
||||
[g] es
|
||||
h/h_ [h] base
|
||||
[h] fi
|
||||
@@ -303,6 +313,7 @@ l/_l [l] base
|
||||
[l] en_wi
|
||||
[l] af
|
||||
[l/] de
|
||||
[l] fr
|
||||
[l] hu
|
||||
[l] sk
|
||||
[l] ru
|
||||
@@ -353,6 +364,7 @@ l/tl [l] base
|
||||
[l] en
|
||||
[l] en_wi
|
||||
[l] af
|
||||
[l] fr
|
||||
[l] hu
|
||||
[l] sk
|
||||
[l] ru
|
||||
@@ -551,11 +563,14 @@ ufric/f_ [f] base
|
||||
ufric/ll [L] base
|
||||
[l#] is
|
||||
ufric/s [s] base
|
||||
[s] fr
|
||||
[s] es
|
||||
[s#] pt
|
||||
ufric/s_ [s] base
|
||||
[z] base
|
||||
[s2] fi
|
||||
[s] fr
|
||||
[z] fr
|
||||
[z2] fr
|
||||
[z3] fr
|
||||
[s2] hu
|
||||
@@ -564,14 +579,17 @@ ufric/s_ [s] base
|
||||
[z;] ro
|
||||
ufric/s! [s] base
|
||||
[s2] fi
|
||||
[s] fr
|
||||
[s2] hu
|
||||
[s] es
|
||||
[s#] pt
|
||||
ufric/s_continue [s2] fi
|
||||
[s2] hu
|
||||
ufric/sh [S] base
|
||||
[S] fr
|
||||
[s#] pt_pt
|
||||
ufric/sh_ [S] base
|
||||
[S] fr
|
||||
[s#] pt_pt
|
||||
ufric/sh_pzd [S;] base
|
||||
[S;] ro
|
||||
@@ -753,6 +771,7 @@ ustop/t_pzd [t;] pl
|
||||
ustop/tr [t] base
|
||||
[t[] base
|
||||
[t2] en
|
||||
[t] fr
|
||||
[t.h] hi
|
||||
[t] ru
|
||||
ustop/ts [ts] base2
|
||||
@@ -1022,8 +1041,8 @@ vdiph/y#y_2 [Yy] af
|
||||
[eoi] zhy
|
||||
vdiph/y#y_3 [Y:] nl
|
||||
vnasal/aa_n [A~] en
|
||||
vnasal/aa_n2 [A~] fr
|
||||
vnasal/aa_n3 [A~] af
|
||||
[A~] fr
|
||||
vnasal/a#_n [&~] pt
|
||||
vnasal/a#u_n [&U~] pt
|
||||
[&U~] pt_pt
|
||||
@@ -1083,6 +1102,7 @@ voc/v_ [B] base
|
||||
[v;] ro
|
||||
[v] is
|
||||
voc/vj [v] base
|
||||
[v] fr
|
||||
vocw/dh [D] base
|
||||
[D] es
|
||||
vocw/Q [Q] base
|
||||
@@ -1100,10 +1120,12 @@ vocw/zh [Z] base
|
||||
[Z;] ro
|
||||
vocw/zh_rfx [z.] base
|
||||
voc/z [z] base
|
||||
[z] fr
|
||||
[z2] fr
|
||||
[z3] fr
|
||||
[z;] ro
|
||||
voc/z_ [z] base
|
||||
[z] fr
|
||||
[z2] fr
|
||||
[z3] fr
|
||||
[z;] ro
|
||||
@@ -1131,7 +1153,6 @@ vowel/@ [@] base
|
||||
[@4] hi
|
||||
[@] th
|
||||
vowel/@- [@-] base
|
||||
[@-] fr
|
||||
[r*] hr
|
||||
vowel/& [a] en_rp
|
||||
[&] fi
|
||||
@@ -1148,8 +1169,7 @@ vowel/0_2 [0] en_n
|
||||
vowel/0_3 [O] en_sc
|
||||
[0] en_rp
|
||||
[A] hu
|
||||
vowel/@_2 [@] fr
|
||||
[W] fr
|
||||
vowel/@_2 [W] fr
|
||||
vowel/@_3 [@] en_sc
|
||||
[I] en_sc
|
||||
[@2] en_sc
|
||||
@@ -1187,6 +1207,7 @@ vowel/a [a] en_n
|
||||
[a] th
|
||||
[a:] th
|
||||
[a] id
|
||||
[a] ja
|
||||
vowel/a# [a/] base2
|
||||
[a2] en_sc
|
||||
[a2] en_wi
|
||||
@@ -1341,6 +1362,7 @@ vowel/e_mid [E] en_rp
|
||||
[E] is
|
||||
[E] id
|
||||
[E2] id
|
||||
[e] ja
|
||||
vowel/e_mid2 [E] af
|
||||
[E] de
|
||||
[E2] de
|
||||
@@ -1354,6 +1376,7 @@ vowel/e_mid2 [E] af
|
||||
vowel/@_fnt [@] en_wi
|
||||
[@2] en_wi
|
||||
[@2] hr
|
||||
vowel/@_fr [@] fr
|
||||
vowel/@_hgh [@] hr
|
||||
vowel/i [i] base2
|
||||
[i:] en_n
|
||||
@@ -1377,6 +1400,7 @@ vowel/i [i] base2
|
||||
[i] sw
|
||||
[i] th
|
||||
[i:] th
|
||||
[i] ja
|
||||
vowel/i# [i] en_us
|
||||
[i] en_rp
|
||||
[y:] cy
|
||||
@@ -1507,6 +1531,7 @@ vowel/oo [O:] en_sc
|
||||
[O] th
|
||||
[O:] th
|
||||
[O] id
|
||||
[o] ja
|
||||
vowel/oo_1 [O:] en_n
|
||||
[O:] en_rp
|
||||
[O@] en_rp
|
||||
@@ -1565,7 +1590,6 @@ vowel/u [u:] en_wi
|
||||
vowel/u# [u-] en
|
||||
[u:] en_sc
|
||||
vowel/u_2 [u1] fi
|
||||
[u] fr
|
||||
[u] sk
|
||||
[U] hr
|
||||
[u] ro
|
||||
@@ -1576,13 +1600,14 @@ vowel/u_4 [u:] en_n
|
||||
vowel/u#_4 [U] en_sc
|
||||
[u:] en_sc
|
||||
vowel/u_5 [u] sw
|
||||
vowel/u#_5 [u:] en_us
|
||||
vowel/u_6 [U] pt_pt
|
||||
[u] pt_pt
|
||||
vowel/u#_6 [u:] en_us
|
||||
vowel/u_7 [u] vi
|
||||
vowel/u_bck [u] base2
|
||||
[U] cy
|
||||
[u] fi
|
||||
[u] fr
|
||||
[u] fr_ca
|
||||
[u:] hi
|
||||
[u:] hu
|
||||
@@ -1615,6 +1640,7 @@ vowel/uu_bck [U] en_n
|
||||
[U] pt
|
||||
[U] no
|
||||
[u] zhy
|
||||
vowel/u_unr [u] ja
|
||||
vowel/V [3] en_sc
|
||||
vowel/V_2 [V] en
|
||||
[a] af
|
||||
@@ -1824,6 +1850,7 @@ x/b [b] base
|
||||
x/b_ [b] base
|
||||
x/d [d] base
|
||||
[t#] en_us
|
||||
[d] fr
|
||||
[d.] hi
|
||||
[d] hr
|
||||
[d] el
|
||||
@@ -1832,6 +1859,7 @@ x/d_ [d] base
|
||||
[d[] base
|
||||
[d] base2
|
||||
[d] fi
|
||||
[d] fr
|
||||
[d] hi
|
||||
[d.] hi
|
||||
[d] pl
|
||||
@@ -1870,10 +1898,12 @@ x/dz_pzd [dZ;] base
|
||||
x/dz_pzd_ [J2] hi
|
||||
x/g_ [g] base
|
||||
[g] cy
|
||||
[g] fr
|
||||
[g] es
|
||||
[g] is
|
||||
x/g2 [g] base
|
||||
[g] cy
|
||||
[g] fr
|
||||
[g] hi
|
||||
[g] es
|
||||
[g] is
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+12
-13
@@ -27,7 +27,7 @@ endphoneme
|
||||
|
||||
phoneme a
|
||||
vowel starttype (a) endtype (@)
|
||||
length 200
|
||||
length 210
|
||||
formants vwl_en_us/a
|
||||
reduceto a2 0
|
||||
endphoneme
|
||||
@@ -52,7 +52,7 @@ endphoneme
|
||||
|
||||
phoneme E
|
||||
vowel starttype (e) endtype (e)
|
||||
length 180
|
||||
length 185
|
||||
// formants vowel/ee_2
|
||||
formants vwl_en_us/ee
|
||||
reduceto I 0
|
||||
@@ -161,7 +161,7 @@ endphoneme
|
||||
|
||||
phoneme o@
|
||||
vowel starttype (o) endtype (@)
|
||||
length 260
|
||||
length 250
|
||||
formants vwl_en_us/or
|
||||
appendph r
|
||||
endphoneme
|
||||
@@ -178,8 +178,8 @@ endphoneme
|
||||
phoneme u:
|
||||
vowel starttype (u) endtype (u)
|
||||
length 170
|
||||
formants vowel/u#_5
|
||||
// before l/2 vwl_en/u_L-40+l/L2_uL
|
||||
formants vowel/u#_6
|
||||
// formants vowel/u#_5
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -228,7 +228,7 @@ endphoneme
|
||||
|
||||
phoneme i@3
|
||||
vowel starttype (i) endtype (@)
|
||||
length 260
|
||||
length 250
|
||||
formants vwl_en_us/ir
|
||||
appendph r
|
||||
endphoneme
|
||||
@@ -271,12 +271,11 @@ endphoneme
|
||||
|
||||
|
||||
phoneme t# // reduced [t] as in "city"
|
||||
vls alv stop
|
||||
vowelin f1=0 f2=1700 -300 300 f3=-100 80
|
||||
vowelout f1=0 f2=1700 -300 300 f3=-100 80
|
||||
lengthmod 5
|
||||
wave x/d%70
|
||||
vcd alv stop
|
||||
vowelin f1=1 f2=1700 -300 300 f3=-100 80
|
||||
vowelout f1=2 f2=1700 -300 300 f3=-100 80
|
||||
formants d/tap2+x/d%70
|
||||
after @ d/x_tap
|
||||
lengthmod 2
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
|
||||
+150
-94
@@ -13,16 +13,7 @@ phoneme @
|
||||
vowel starttype (@) endtype (@)
|
||||
unstressed
|
||||
length 170
|
||||
formants vowel/@_2
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme @- // very short schwa
|
||||
vowel nonsyllabic
|
||||
starttype (@) endtype (@)
|
||||
formants vowel/@-
|
||||
unstressed
|
||||
length 20
|
||||
formants vowel/@_fr
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -80,8 +71,8 @@ endphoneme
|
||||
|
||||
phoneme u
|
||||
vowel starttype (u) endtype (u)
|
||||
length 170
|
||||
formants vowel/u_2
|
||||
length 160
|
||||
formants vowel/u_bck
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -101,7 +92,8 @@ endphoneme
|
||||
|
||||
phoneme w
|
||||
liquid
|
||||
length 130
|
||||
unstressed
|
||||
length 100
|
||||
beforenotvowel w/
|
||||
lengthmod 7
|
||||
formants w/w
|
||||
@@ -128,7 +120,7 @@ endphoneme
|
||||
phoneme A~
|
||||
vowel starttype (a) endtype (a)
|
||||
length 180
|
||||
formants vnasal/aa_n3
|
||||
formants vnasal/aa_n2
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -194,14 +186,74 @@ endphoneme
|
||||
//===========
|
||||
// uses the consonants in file "phonemes", unless overridden here
|
||||
|
||||
phoneme b
|
||||
vcd blb stop
|
||||
vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk
|
||||
formants b/b+x/b%45
|
||||
before _ b/b_+x/b%45
|
||||
before (a) b/ba+x/b%45
|
||||
before (@) b/b@+x/b%45
|
||||
before (e) b/be+x/b%45
|
||||
before (i) b/bi+x/b%45
|
||||
before (o) b/bo+x/b%45
|
||||
before (u) b/bu+x/b%45
|
||||
before @- b/b@2+x/b%45
|
||||
after _ NULL
|
||||
after @ b/xb%45
|
||||
lengthmod 5
|
||||
switchvoicing p
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme d
|
||||
vcd alv stop
|
||||
vowelin f1=0 f2=1700 -300 300 f3=-100 80
|
||||
vowelout f1=0 f2=1700 -300 300 f3=-100 80
|
||||
formants d/d%30+x/d%30
|
||||
before _ d/d_%30+x/d_%30
|
||||
before r d/dr%60+x/d%60
|
||||
after _ NULL
|
||||
after @ d/xd%40
|
||||
lengthmod 5
|
||||
switchvoicing t
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme g
|
||||
vcd vel stop
|
||||
vowelin f1=2 f2=2300 200 300 f3=-300 80
|
||||
vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
|
||||
formants g/g%30+x/g2%30
|
||||
before _ g/g_+x/g_
|
||||
after _ NULL
|
||||
after @ g/xg%30
|
||||
lengthmod 5
|
||||
switchvoicing k
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme k
|
||||
vls vel stop
|
||||
vowelin f1=0 f2=2300 200 400 f3=-100 80
|
||||
vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
|
||||
lengthmod 2
|
||||
wave ustop/k%45 // reduce strength of noise burst
|
||||
before _ ustop/k_%45
|
||||
before r ustop/kr%45
|
||||
before l ustop/kl%45
|
||||
before (i) ustop/ki%45
|
||||
switchvoicing g
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme l
|
||||
liquid
|
||||
length 100
|
||||
lengthmod 7
|
||||
// beforenotvowel l/
|
||||
formants l/l
|
||||
// after _ l/_l
|
||||
// after t l/tl
|
||||
after _ l/_l
|
||||
after t l/tl
|
||||
after l/ l/l_long // double l, make it longer
|
||||
before (a) l/la
|
||||
before (e) l/le
|
||||
@@ -213,15 +265,31 @@ phoneme l
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme p
|
||||
vls blb stop
|
||||
vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
|
||||
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
|
||||
lengthmod 2
|
||||
wave ustop/p%45
|
||||
before _ ustop/p_%45
|
||||
before r ustop/pr%45
|
||||
before R ustop/pr%45
|
||||
before @- ustop/p_unasp%45
|
||||
before l ustop/pl%45
|
||||
switchvoicing b
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme r
|
||||
vcd uvl frc
|
||||
vowelin f1=0 f2=800 -100 100 f3=-400 100
|
||||
vowelout f1=0 f2=800 -100 100 f3=-400 100 len=0 rms=20
|
||||
length 100
|
||||
lengthmod 7
|
||||
beforenotvowel r/
|
||||
formants vwl_fr/@R%40
|
||||
after t r/tr
|
||||
before _ r3/r_
|
||||
formants vwl_fr/@R%60
|
||||
after t r/tr%60
|
||||
before _ r3/r_%60
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -231,8 +299,8 @@ phoneme R
|
||||
length 100
|
||||
lengthmod 7
|
||||
beforenotvowel r/
|
||||
formants vwl_fr/@R%40
|
||||
after r r/rr
|
||||
formants vwl_fr/@R%60
|
||||
after r r/rr%60
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -240,8 +308,34 @@ phoneme r/ // used for [r] when not preceding a vowel
|
||||
vcd uvl frc
|
||||
length 100
|
||||
lengthmod 2 //
|
||||
formants r3/r_+r3/rx
|
||||
before n r3/r_n+r3/rx
|
||||
formants r3/r_+r3/rx%60
|
||||
before n r3/r_n+r3/rx%60
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme s
|
||||
vls alv frc sibilant
|
||||
vowelin f1=0 f2=1700 -300 300 f3=-100 80
|
||||
vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
|
||||
lengthmod 3
|
||||
wave ufric/s%45
|
||||
before _ ufric/s_%45
|
||||
before p ufric/s!%45
|
||||
before t ufric/s!%45
|
||||
before k ufric/s!%45
|
||||
switchvoicing z
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme S
|
||||
vls pla frc sibilant
|
||||
vowelin f1=0 f2=2100 100 300 f3=-100 80
|
||||
vowelout f1=0 f2=2100 100 300 f3=-100 80
|
||||
length 100
|
||||
lengthmod 3
|
||||
wave ufric/sh%45
|
||||
before _ ufric/sh_%45
|
||||
switchvoicing Z
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -250,11 +344,11 @@ phoneme t
|
||||
vowelin f1=0 f2=1700 -100 100 f3=-100 80
|
||||
vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
|
||||
lengthmod 2
|
||||
wave ustop/t%50
|
||||
before _ ustop/t_%40
|
||||
before @- ustop/t%50
|
||||
// before r ustop/tr
|
||||
// before R ustop/tr
|
||||
wave ustop/t%30
|
||||
before _ ustop/t_%30
|
||||
before @- ustop/t%30
|
||||
before r ustop/tr%30
|
||||
before R ustop/tr%30
|
||||
switchvoicing d
|
||||
endphoneme
|
||||
|
||||
@@ -265,8 +359,30 @@ phoneme t2 // silent unless followed by vowel
|
||||
vowelin f1=0 f2=1600 -300 300 f3=-100 80
|
||||
vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20
|
||||
lengthmod 2
|
||||
wave ustop/t
|
||||
before _ ustop/t_
|
||||
wave ustop/t%45
|
||||
before _ ustop/t_%45
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme v
|
||||
vcd lbd frc
|
||||
vowelin f1=0 f2=1000 -300 -200 f3=-300 100
|
||||
vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=10
|
||||
lengthmod 6
|
||||
formants voc/v+vocw/v%75
|
||||
before (r) voc/vj+vocw/v%75
|
||||
before _ voc/v_+vocw/v%75
|
||||
switchvoicing f
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme z
|
||||
vcd alv frc sibilant
|
||||
vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
|
||||
formants voc/z+ufric/s_%45
|
||||
before _ voc/z_+ufric/s_%45
|
||||
lengthmod 6
|
||||
switchvoicing s
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -274,8 +390,8 @@ phoneme z2 // silent unless followed by vowel
|
||||
beforenotvowel NULL
|
||||
vcd alv frc sibilant
|
||||
vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
|
||||
formants voc/z+ufric/s_
|
||||
before _ voc/z_+ufric/s_
|
||||
formants voc/z+ufric/s_%45
|
||||
before _ voc/z_+ufric/s_%45
|
||||
lengthmod 6
|
||||
endphoneme
|
||||
|
||||
@@ -284,68 +400,8 @@ phoneme z3 // "six" and "dix". [s] before pause, [z] before vowel, else []
|
||||
beforenotvowel NULL
|
||||
vcd alv frc sibilant
|
||||
vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
|
||||
formants voc/z+ufric/s_
|
||||
before _ voc/z_+ufric/s_
|
||||
formants voc/z+ufric/s_%45
|
||||
before _ voc/z_+ufric/s_%45
|
||||
lengthmod 6
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
phoneme k
|
||||
vls vel stop
|
||||
vowelin f1=0 f2=2300 200 400 f3=-100 80
|
||||
vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
|
||||
lengthmod 2
|
||||
wave ustop/k%60 // reduce strength of noise burst
|
||||
before _ ustop/k_
|
||||
before r ustop/kr
|
||||
before l ustop/kl
|
||||
before (i) ustop/ki
|
||||
switchvoicing g
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme v
|
||||
vcd lbd frc
|
||||
vowelin f1=0 f2=1000 -300 -200 f3=-300 100
|
||||
vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
|
||||
lengthmod 6
|
||||
formants voc/v+vocw/v
|
||||
before _ voc/v_+vocw/v
|
||||
switchvoicing f
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme p
|
||||
vls blb stop
|
||||
vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
|
||||
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
|
||||
lengthmod 2
|
||||
wave ustop/p
|
||||
before _ ustop/p_
|
||||
before r ustop/pr%70
|
||||
before R ustop/pr
|
||||
before @- ustop/p_unasp
|
||||
before l ustop/pl
|
||||
switchvoicing b
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme b
|
||||
vcd blb stop
|
||||
vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk
|
||||
formants b/b+x/b
|
||||
before _ b/b_+x/b
|
||||
before (a) b/ba+x/b
|
||||
before (@) b/b@+x/b
|
||||
before (e) b/be+x/b
|
||||
before (i) b/bi+x/b
|
||||
before (o) b/bo+x/b
|
||||
before (u) b/bu+x/b
|
||||
before @- b/b@2+x/b
|
||||
after _ NULL
|
||||
after @ b/xb
|
||||
lengthmod 5
|
||||
switchvoicing p
|
||||
endphoneme
|
||||
|
||||
|
||||
+4
-4
@@ -5,7 +5,7 @@
|
||||
|
||||
phoneme 11 // tone: low level
|
||||
stress
|
||||
tone 15 10 envelope/p_fall NULL
|
||||
tone 12 9 envelope/p_fall NULL
|
||||
endphoneme
|
||||
|
||||
phoneme 21 // tone: low fall
|
||||
@@ -20,12 +20,12 @@ endphoneme
|
||||
|
||||
phoneme 22 // tone: mid-low level
|
||||
stress
|
||||
tone 21 19 envelope/p_fall NULL
|
||||
tone 22 20 envelope/p_fall NULL
|
||||
endphoneme
|
||||
|
||||
phoneme 33 // tone: mid level
|
||||
stress
|
||||
tone 31 29 envelope/p_fall NULL
|
||||
tone 32 30 envelope/p_fall NULL
|
||||
endphoneme
|
||||
|
||||
phoneme 35 // tone: mid rise
|
||||
@@ -35,7 +35,7 @@ endphoneme
|
||||
|
||||
phoneme 44 // tone: mid-high level
|
||||
stress
|
||||
tone 41 39 envelope/p_level NULL
|
||||
tone 38 41 envelope/p_rise NULL
|
||||
endphoneme
|
||||
|
||||
phoneme 51 // tone: high fall
|
||||
|
||||
+6
-4
@@ -594,13 +594,13 @@ endphoneme
|
||||
|
||||
phoneme ** // TEST flap after consonant
|
||||
liquid alv
|
||||
vowelout f1=3 f2=1700 -300 300 f3=-300 80 rms=35 len=15
|
||||
vowelin f1=0 f2=1700 -300 300 f3=-300 80
|
||||
vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15
|
||||
vowelin f1=0 f2=1600 -300 300 f3=-300 80
|
||||
formants r3/@tap+r3/rx
|
||||
vowelin f1=0 f2=1700 -300 300 f3=-400 80
|
||||
vowelin f1=3 f2=1600 -300 300 f3=-300 80
|
||||
before (i) r3/@tap_i+r3/rx
|
||||
before (e) r3/@tap_i+r3/rx
|
||||
vowelin f1=2 f2=1700 -300 300 f3=-300 80
|
||||
vowelin f1=2 f2=1600 -300 300 f3=-300 80
|
||||
before (a) r3/@tap+r3/rx
|
||||
endphoneme
|
||||
|
||||
@@ -1270,3 +1270,5 @@ include ph_thai
|
||||
phonemetable id base2
|
||||
include ph_indonesian
|
||||
|
||||
phonemetable ja base
|
||||
include ph_japanese
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -177,7 +177,7 @@ int Translator::LoadDictionary(const char *name, int no_error)
|
||||
length = pw[1];
|
||||
if(size <= (N_HASH_DICT + sizeof(int)*2))
|
||||
{
|
||||
fprintf(stderr,"Empty dictionary: '%s\n",fname);
|
||||
fprintf(stderr,"Empty _dict file: '%s\n",fname);
|
||||
return(2);
|
||||
}
|
||||
if((pw[0] != N_HASH_DICT) || (length <= 0) || (length > 0x8000000))
|
||||
|
||||
+21
-13
@@ -247,7 +247,8 @@ static int drops_0[8] = {0x400,0x400,0x700,0x700,0x700,0xa00,0x1800,0x0e00};
|
||||
|
||||
static short oflow[] = {0, 20, 12, 4, 0};
|
||||
static short oflow_emf[] = {5, 24, 15, 10, 5};
|
||||
static short oflow_less[] = {1, 17, 10, 5, 1};
|
||||
static short oflow_less[] = {3, 19, 12, 7, 2};
|
||||
static short oflow_test2[] = {20, 0, 20, 0, 20};
|
||||
static short back_emf[] = {35, 32, 0};
|
||||
|
||||
typedef struct {
|
||||
@@ -278,7 +279,7 @@ typedef struct {
|
||||
unsigned char tail_shape;
|
||||
} TONE_TABLE;
|
||||
|
||||
#define N_TONE_TABLE 11
|
||||
#define N_TONE_TABLE 13
|
||||
|
||||
static TONE_TABLE tone_table[N_TONE_TABLE] = {
|
||||
{PITCHfall, 30, 5, PITCHfall, 30, 8, // 0 statement
|
||||
@@ -297,14 +298,14 @@ static TONE_TABLE tone_table[N_TONE_TABLE] = {
|
||||
20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0},
|
||||
|
||||
|
||||
{PITCHfall, 28, 6, PITCHfall, 28, 10, // 5 statement, less intonation
|
||||
20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 12, 6, 0},
|
||||
{PITCHfall, 28, 5, PITCHfall, 28, 9, // 5 statement, less intonation
|
||||
20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less, NULL, 12, 7, 0},
|
||||
|
||||
{PITCHfrise2, 33,11, PITCHfall, 28,10, // 6 comma, less intonation
|
||||
20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 9,14, 0},
|
||||
{PITCHfrise2, 32,8, PITCHfrise2, 28,9, // 6 comma, less intonation
|
||||
20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less, NULL, 10,16, 0},
|
||||
|
||||
{PITCHfrise2, 28, 7, PITCHfall, 28, 12, // 7 comma, less intonation, less rise
|
||||
20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 14, 8, 0},
|
||||
{PITCHfrise2, 28, 7, PITCHfall, 29, 14, // 7 comma, less intonation, less rise
|
||||
20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less, NULL, 14, 8, 0},
|
||||
|
||||
{PITCHrise, 30, 20, PITCHfall, 19, 14, // 8 pitch raises at end of sentence
|
||||
20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 24, 30, 0},
|
||||
@@ -315,6 +316,12 @@ static TONE_TABLE tone_table[N_TONE_TABLE] = {
|
||||
{PITCHfrise, 39, 15, PITCHfall, 28, 14, // 10 question
|
||||
20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 20, 36, 0},
|
||||
|
||||
{PITCHfall, 28, 6, PITCHfall, 28, 10, // 11 test
|
||||
20, 25, 24, 22, drops_0, 3, 3, 5, oflow_less, NULL, 12, 6, 0},
|
||||
|
||||
{PITCHfall, 35, 9, PITCHfall, 35, 12, // 12 test
|
||||
19, 26, 36, 20, drops_0, 2, 4, 5, oflow_test2, NULL, 16, 10, 0},
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -327,8 +334,9 @@ unsigned char punctuation_to_tone[INTONATION_TYPES][PUNCT_INTONATIONS] = {
|
||||
{5,7,1,0,0,4},
|
||||
{8,9,10,3,0,0},
|
||||
{8,8,10,3,0,0},
|
||||
{0,1,2,3,0,4},
|
||||
{0,1,2,3,0,0} };
|
||||
{11,11,11,11,0,0}, // 6 test
|
||||
{12,12,12,12,0,0}
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -738,10 +746,10 @@ void Translator::CalcPitches_Tone(int clause_tone)
|
||||
PHONEME_TAB *prev2_tph; // 2 tones previous
|
||||
PHONEME_LIST *prev_p;
|
||||
|
||||
int pitch_adjust = 10; // pitch gradient through the clause - inital value
|
||||
int pitch_adjust = 0; // pitch gradient through the clause - inital value
|
||||
int pitch_decrement = 0; // decrease by this for each stressed syllable
|
||||
int pitch_low = 10; // until it drops to this
|
||||
int pitch_high = 10; // then reset to this
|
||||
int pitch_low = 0; // until it drops to this
|
||||
int pitch_high = 0; // then reset to this
|
||||
|
||||
p = &phoneme_list[0];
|
||||
|
||||
|
||||
+6
-2
@@ -1759,7 +1759,7 @@ f_input = f_in; // for GetC etc
|
||||
c2 = GetC();
|
||||
}
|
||||
|
||||
while(!Eof())
|
||||
while(!Eof() || (ungot_char != 0))
|
||||
{
|
||||
if(!iswalnum(c1))
|
||||
{
|
||||
@@ -1791,7 +1791,7 @@ f_input = f_in; // for GetC etc
|
||||
|
||||
if((option_ssml) && (phoneme_mode==0))
|
||||
{
|
||||
if((c1 == '&') && ((c2=='#') || isalpha(c2)))
|
||||
if((c1 == '&') && ((c2=='#') || ((c2 >= 'a') && (c2 <= 'z'))))
|
||||
{
|
||||
n_xml_buf = 0;
|
||||
c1 = c2;
|
||||
@@ -1818,6 +1818,10 @@ f_input = f_in; // for GetC etc
|
||||
{
|
||||
c1 = j;
|
||||
}
|
||||
else
|
||||
{
|
||||
c1 = '&';
|
||||
}
|
||||
}
|
||||
if((sayas_mode == 0x14) && (c1 <= 0x20))
|
||||
{
|
||||
|
||||
+119
-12
@@ -76,6 +76,7 @@ char textbuffile[L_tmpnam];
|
||||
int sample_rate_index; // current value
|
||||
int current_voice_num=0;
|
||||
int n_voice_files = 0;
|
||||
int n_voice_variant_files = 0;
|
||||
|
||||
// output sound buffer, 2 bytes per sample
|
||||
static unsigned short SoundBuf[4096];
|
||||
@@ -84,7 +85,9 @@ static int callback_inhibit = 0;
|
||||
static int more_text=0;
|
||||
|
||||
#define N_VOICE_NAMES 60
|
||||
static char *voice_names[40];
|
||||
#define N_VOICE_VARIANT_NAMES 30
|
||||
static char *voice_names[N_VOICE_NAMES];
|
||||
static char *voice_variant_names[N_VOICE_VARIANT_NAMES];
|
||||
|
||||
#define N_STATIC_BUF 8000
|
||||
static char static_buf[N_STATIC_BUF];
|
||||
@@ -127,9 +130,9 @@ static const char *help_text =
|
||||
"--punct=\"<characters>\"\n"
|
||||
"\t Speak the names of punctuation characters during speaking. If\n"
|
||||
"\t =<characters> is omitted, all punctuation is spoken.\n"
|
||||
//"--voices=<langauge>\n"
|
||||
//"\t List the available voices for the specified language.\n"
|
||||
//"\t If <language> is omitted, then list all voices.\n"
|
||||
"--voices=<langauge>\n"
|
||||
"\t List the available voices for the specified language.\n"
|
||||
"\t If <language> is omitted, then list all voices.\n"
|
||||
"-k <integer>\n"
|
||||
"\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n"
|
||||
"\t higher values = a pitch increase (try -k20).\n";
|
||||
@@ -169,6 +172,7 @@ int GetFileLength(const char *filename)
|
||||
void ReadVoiceNames2(char *directory)
|
||||
{//==================================
|
||||
int len;
|
||||
int path_len;
|
||||
int *type;
|
||||
char *p;
|
||||
_kernel_swi_regs regs;
|
||||
@@ -184,6 +188,8 @@ void ReadVoiceNames2(char *directory)
|
||||
regs.r[5] = sizeof(buf);
|
||||
regs.r[6] = 0;
|
||||
|
||||
path_len = strlen(directory);
|
||||
|
||||
while(regs.r[3] > 0)
|
||||
{
|
||||
error = _kernel_swi(0x0c+os_X,®s,®s); /* OS_GBPB 10, read directory entries */
|
||||
@@ -202,11 +208,25 @@ void ReadVoiceNames2(char *directory)
|
||||
}
|
||||
else
|
||||
{
|
||||
p = Alloc(len+1);
|
||||
p = (char *)malloc(len+1);
|
||||
strcpy(p,&buf[20]);
|
||||
voice_names[n_voice_files++] = p;
|
||||
if(n_voice_files >= (N_VOICE_NAMES-1))
|
||||
break;
|
||||
|
||||
if(strcmp(&directory[path_len-3],".!v")==0)
|
||||
{
|
||||
if(n_voice_variant_files >= (N_VOICE_VARIANT_NAMES-1))
|
||||
continue;
|
||||
voice_variant_names[n_voice_variant_files++] = p;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(n_voice_files >= (N_VOICE_NAMES-1))
|
||||
continue;
|
||||
voice_names[n_voice_files++] = p;
|
||||
if(strcmp(p,"en")==0)
|
||||
{
|
||||
voice_names[n_voice_files++] = "en+f2";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -216,13 +236,15 @@ void ReadVoiceNames()
|
||||
{//===================
|
||||
char directory[sizeof(path_home)+10];
|
||||
|
||||
for(n_voice_files=0; n_voice_files<N_VOICE_NAMES; n_voice_files++)
|
||||
voice_names[n_voice_files] = NULL;
|
||||
|
||||
n_voice_files = 0;
|
||||
n_voice_variant_files = 0;
|
||||
|
||||
sprintf(directory,"%s.voices",path_home);
|
||||
|
||||
ReadVoiceNames2(directory);
|
||||
|
||||
voice_names[n_voice_files] = NULL;
|
||||
voice_variant_names[n_voice_variant_files] = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -557,10 +579,13 @@ void set_say_options(int reg2, int reg3)
|
||||
void jsd_swi_functions(int *r)
|
||||
/****************************/
|
||||
{
|
||||
espeak_VOICE voice_select;
|
||||
|
||||
switch(r[0])
|
||||
{
|
||||
case 0: /* major version */
|
||||
r[0] = 3;
|
||||
r[0] = 4;
|
||||
r[1] = 331;
|
||||
break;
|
||||
|
||||
case 1: /* register user */
|
||||
@@ -579,6 +604,7 @@ void jsd_swi_functions(int *r)
|
||||
|
||||
case 5: /* get table of voice names */
|
||||
r[0] = (int)voice_names;
|
||||
r[1] = (int)voice_variant_names;
|
||||
break;
|
||||
|
||||
case 6: /* update voice data, r1 = voice_number */
|
||||
@@ -594,6 +620,15 @@ void jsd_swi_functions(int *r)
|
||||
// init_voice((char *)r[1]);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
// list voices, r[1] contains optional language name (or "variant")
|
||||
voice_select.languages = (char *)r[1];
|
||||
voice_select.age = 0;
|
||||
voice_select.gender = 0;
|
||||
voice_select.name = NULL;
|
||||
r[0] = (int)espeak_ListVoices(&voice_select);
|
||||
break;
|
||||
|
||||
default:
|
||||
r[0] = 0;
|
||||
r[1] = 0;
|
||||
@@ -709,6 +744,72 @@ void PitchAdjust(int pitch_adjustment)
|
||||
|
||||
|
||||
|
||||
void DisplayVoices(FILE *f_out, char *language)
|
||||
{//============================================
|
||||
int ix;
|
||||
const char *p;
|
||||
int len;
|
||||
int count;
|
||||
int scores = 0;
|
||||
const espeak_VOICE *v;
|
||||
const char *lang_name;
|
||||
char age_buf[12];
|
||||
const espeak_VOICE **voices;
|
||||
espeak_VOICE voice_select;
|
||||
|
||||
static char genders[4] = {' ','M','F',' '};
|
||||
|
||||
if(language[0] == '=')
|
||||
{
|
||||
// display only voices for the specified language, in order of priority
|
||||
voice_select.languages = &language[1];
|
||||
voice_select.age = 0;
|
||||
voice_select.gender = 0;
|
||||
voice_select.name = NULL;
|
||||
voices = espeak_ListVoices(&voice_select);
|
||||
scores = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
voices = espeak_ListVoices(NULL);
|
||||
}
|
||||
|
||||
fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n");
|
||||
|
||||
for(ix=0; (v = voices[ix]) != NULL; ix++)
|
||||
{
|
||||
count = 0;
|
||||
p = v->languages;
|
||||
while(*p != 0)
|
||||
{
|
||||
len = strlen(p+1);
|
||||
lang_name = p+1;
|
||||
|
||||
if(v->age == 0)
|
||||
strcpy(age_buf," ");
|
||||
else
|
||||
sprintf(age_buf,"%3d",v->age);
|
||||
|
||||
if(count==0)
|
||||
{
|
||||
fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ",
|
||||
p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(f_out,"(%s %d)",lang_name,p[0]);
|
||||
}
|
||||
count++;
|
||||
p += len+2;
|
||||
}
|
||||
// if(scores)
|
||||
// fprintf(f_out,"%3d ",v->score);
|
||||
fputc('\n',f_out);
|
||||
}
|
||||
} // end of DisplayVoices
|
||||
|
||||
|
||||
|
||||
char *param_string(char **argp)
|
||||
{//============================
|
||||
char *p;
|
||||
@@ -860,6 +961,12 @@ void command_line(char *arg_string, int wait)
|
||||
return;
|
||||
}
|
||||
else
|
||||
if(memcmp(command,"voices",6)==0)
|
||||
{
|
||||
DisplayVoices(stdout,&command[6]);
|
||||
return;
|
||||
}
|
||||
else
|
||||
if(strcmp(command,"help")==0)
|
||||
{
|
||||
printf("\nspeak text-to-speech: %s\n%s",version_string,help_text);
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@
|
||||
#include "translate.h"
|
||||
#include "wave.h"
|
||||
|
||||
const char *version_string = "1.31.01 23.Jan.08";
|
||||
const char *version_string = "1.31.03 26.Jan.08";
|
||||
const int version_phdata = 0x013100;
|
||||
|
||||
int option_device_number = -1;
|
||||
|
||||
@@ -269,7 +269,7 @@ Translator *SelectTranslator(const char *name)
|
||||
case L('f','r'): // french
|
||||
{
|
||||
static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 235, 235};
|
||||
static const unsigned char stress_amps_fr[8] = {16,14, 20,20, 20,24, 24,22 };
|
||||
static const unsigned char stress_amps_fr[8] = {18,16, 20,20, 20,22, 22,22 };
|
||||
|
||||
tr = new Translator();
|
||||
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
|
||||
@@ -421,6 +421,11 @@ SetLengthMods(tr,3); // all equal
|
||||
}
|
||||
break;
|
||||
|
||||
case L('j','a'): // TEST
|
||||
tr = new Translator();
|
||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
|
||||
break;
|
||||
|
||||
case L_jbo: // Lojban
|
||||
{
|
||||
static const short stress_lengths_jbo[8] = {185,170, 200,200, 0,0, 290,300};
|
||||
|
||||
@@ -38,6 +38,8 @@ typedef struct {
|
||||
int peak_shape; // alternative shape for formant peaks (0=standard 1=squarer)
|
||||
int voicing; // 100% = 64, level of formant-synthesized sound
|
||||
int formant_factor; // adjust nominal formant frequencies by this because of the voice's pitch (256ths)
|
||||
int consonant_amp; // amplitude of unvoiced consonants
|
||||
int consonant_ampv; // amplitude of the noise component of voiced consonants
|
||||
|
||||
// parameters used by Wavegen
|
||||
short freq[N_PEAKS]; // 100% = 256
|
||||
|
||||
+65
-5
@@ -29,7 +29,9 @@
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#include "windows.h"
|
||||
#else
|
||||
#ifndef PLATFORM_RISCOS
|
||||
#ifdef PLATFORM_RISCOS
|
||||
#include "kernel.h"
|
||||
#else
|
||||
#include "dirent.h"
|
||||
#endif
|
||||
#endif
|
||||
@@ -103,7 +105,7 @@ espeak_VOICE voice_selected;
|
||||
|
||||
// these need a phoneme table to have been specified
|
||||
#define V_REPLACE 28
|
||||
|
||||
#define V_CONSONANTS 29
|
||||
|
||||
|
||||
typedef struct {
|
||||
@@ -141,6 +143,7 @@ static keywtab_t keyword_tab[] = {
|
||||
{"numbers", V_NUMBERS},
|
||||
{"option", V_OPTION},
|
||||
{"mbrola", V_MBROLA},
|
||||
{"consonants", V_CONSONANTS},
|
||||
|
||||
// these just set a value in langopts.param[]
|
||||
{"l_dieresis", 0x100+LOPT_DIERESES},
|
||||
@@ -368,6 +371,9 @@ void VoiceReset(int tone_only)
|
||||
voice->n_harmonic_peaks = 5;
|
||||
voice->peak_shape = 1;
|
||||
voice->voicing = 64;
|
||||
voice->consonant_amp = 100;
|
||||
voice->consonant_ampv = 100;
|
||||
|
||||
#ifdef PLATFORM_RISCOS
|
||||
voice->roughness = 1;
|
||||
#else
|
||||
@@ -836,6 +842,10 @@ voice_t *LoadVoice(const char *vname, int control)
|
||||
voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]);
|
||||
break;
|
||||
|
||||
case V_CONSONANTS:
|
||||
value = sscanf(p,"%d %d",&voice->consonant_amp, &voice->consonant_ampv);
|
||||
break;
|
||||
|
||||
case V_MBROLA:
|
||||
{
|
||||
int srate = 16000;
|
||||
@@ -937,8 +947,10 @@ char *ExtractVoiceVariantName(char *vname, int variant_num)
|
||||
|
||||
char *p;
|
||||
static char variant_name[20];
|
||||
char variant_prefix[5];
|
||||
|
||||
variant_name[0] = 0;
|
||||
sprintf(variant_prefix,"!v%c",PATHSEP);
|
||||
|
||||
if(vname != NULL)
|
||||
{
|
||||
@@ -953,7 +965,7 @@ char *ExtractVoiceVariantName(char *vname, int variant_num)
|
||||
else
|
||||
{
|
||||
// voice variant name, not number
|
||||
strcpy(variant_name,"!v/");
|
||||
strcpy(variant_name,variant_prefix);
|
||||
strncpy0(&variant_name[3],p,sizeof(variant_name)-3);
|
||||
}
|
||||
}
|
||||
@@ -962,9 +974,9 @@ char *ExtractVoiceVariantName(char *vname, int variant_num)
|
||||
if(variant_num > 0)
|
||||
{
|
||||
if(variant_num < 10)
|
||||
sprintf(variant_name,"!v/m%d",variant_num); // male
|
||||
sprintf(variant_name,"%sm%d",variant_prefix, variant_num); // male
|
||||
else
|
||||
sprintf(variant_name,"!v/f%d",variant_num-10); // female
|
||||
sprintf(variant_name,"%sf%d",variant_prefix, variant_num-10); // female
|
||||
}
|
||||
|
||||
return(variant_name);
|
||||
@@ -1409,6 +1421,54 @@ void GetVoices(const char *path)
|
||||
char fname[sizeof(path_home)+100];
|
||||
|
||||
#ifdef PLATFORM_RISCOS
|
||||
int len;
|
||||
int *type;
|
||||
char *p;
|
||||
_kernel_swi_regs regs;
|
||||
_kernel_oserror *error;
|
||||
char buf[80];
|
||||
char directory2[sizeof(path_home)+100];
|
||||
|
||||
regs.r[0] = 10;
|
||||
regs.r[1] = (int)path;
|
||||
regs.r[2] = (int)buf;
|
||||
regs.r[3] = 1;
|
||||
regs.r[4] = 0;
|
||||
regs.r[5] = sizeof(buf);
|
||||
regs.r[6] = 0;
|
||||
|
||||
while(regs.r[3] > 0)
|
||||
{
|
||||
error = _kernel_swi(0x0c+0x20000,®s,®s); /* OS_GBPB 10, read directory entries */
|
||||
if((error != NULL) || (regs.r[3] == 0))
|
||||
{
|
||||
break;
|
||||
}
|
||||
type = (int *)(&buf[16]);
|
||||
len = strlen(&buf[20]);
|
||||
sprintf(fname,"%s.%s",path,&buf[20]);
|
||||
|
||||
if(*type == 2)
|
||||
{
|
||||
// a sub-directory
|
||||
GetVoices(fname);
|
||||
}
|
||||
else
|
||||
{
|
||||
// a regular line, add it to the voices list
|
||||
if((f_voice = fopen(fname,"r")) == NULL)
|
||||
continue;
|
||||
|
||||
// pass voice file name within the voices directory
|
||||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, &buf[20]);
|
||||
fclose(f_voice);
|
||||
|
||||
if(voice_data != NULL)
|
||||
{
|
||||
voices_list[n_voices_list++] = voice_data;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
WIN32_FIND_DATA FindFileData;
|
||||
|
||||
+18
-10
@@ -748,12 +748,6 @@ void WavegenInit(int rate, int wavemult_fact)
|
||||
for(ix=0; ix<N_EMBEDDED_VALUES; ix++)
|
||||
embedded_value[ix] = embedded_default[ix];
|
||||
|
||||
if(rate <= 11000)
|
||||
{
|
||||
// adjust some parameters for telephony with low sample rates
|
||||
consonant_amp = 50;
|
||||
option_harmonic1 = 6;
|
||||
}
|
||||
|
||||
// set up window to generate a spread of harmonics from a
|
||||
// single peak for HF peaks
|
||||
@@ -1011,7 +1005,7 @@ static void AdvanceParameters()
|
||||
} // end of AdvanceParameters
|
||||
|
||||
|
||||
|
||||
#ifndef PLATFORM_RISCOS
|
||||
static double resonator(RESONATOR *r, double input)
|
||||
{//================================================
|
||||
double x;
|
||||
@@ -1055,11 +1049,12 @@ static void setresonator(RESONATOR *rp, int freq, int bwidth, int init)
|
||||
// a = 1.0 - b - c
|
||||
rp->a = 1.0 - rp->b - rp->c;
|
||||
} // end if setresonator
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
void InitBreath(void)
|
||||
{//==================
|
||||
#ifndef PLATFORM_RISCOS
|
||||
int ix;
|
||||
|
||||
minus_pi_t = -PI / samplerate;
|
||||
@@ -1069,12 +1064,14 @@ void InitBreath(void)
|
||||
{
|
||||
setresonator(&rbreath[ix],2000,200,1);
|
||||
}
|
||||
#endif
|
||||
} // end of InitBreath
|
||||
|
||||
|
||||
|
||||
void SetBreath()
|
||||
{//=============
|
||||
#ifndef PLATFORM_RISCOS
|
||||
int pk;
|
||||
|
||||
if(wvoice->breath[0] == 0)
|
||||
@@ -1089,15 +1086,17 @@ void SetBreath()
|
||||
setresonator(&rbreath[pk], peaks[pk].freq >> 16, wvoice->breathw[pk],0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
} // end of SetBreath
|
||||
|
||||
|
||||
int ApplyBreath(void)
|
||||
{//==================
|
||||
int value = 0;
|
||||
#ifndef PLATFORM_RISCOS
|
||||
int noise;
|
||||
int ix;
|
||||
int amp;
|
||||
int value = 0;
|
||||
|
||||
// use two random numbers, for alternate formants
|
||||
noise = (rand() & 0x3fff) - 0x2000;
|
||||
@@ -1110,6 +1109,7 @@ int ApplyBreath(void)
|
||||
value += int(resonator(&rbreath[ix],noise) * amp);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return (value);
|
||||
}
|
||||
|
||||
@@ -1320,10 +1320,12 @@ int Wavegen()
|
||||
total = (total >> 6) * voicing;
|
||||
}
|
||||
|
||||
#ifndef PLATFORM_RISCOS
|
||||
if(wvoice->breath[0])
|
||||
{
|
||||
total += ApplyBreath();
|
||||
}
|
||||
#endif
|
||||
|
||||
// mix with sampled wave if required
|
||||
z2 = 0;
|
||||
@@ -1558,6 +1560,12 @@ void WavegenSetVoice(voice_t *v)
|
||||
else
|
||||
pk_shape = pk_shape2;
|
||||
|
||||
consonant_amp = (v->consonant_amp * 26) /100;
|
||||
if(samplerate <= 11000)
|
||||
{
|
||||
consonant_amp = consonant_amp*2; // emphasize consonants at low sample rates
|
||||
option_harmonic1 = 6;
|
||||
}
|
||||
WavegenSetEcho();
|
||||
}
|
||||
|
||||
@@ -1571,7 +1579,7 @@ static void SetAmplitude(int length, unsigned char *amp_env, int value)
|
||||
amp_inc = (256 * ENV_LEN * STEPSIZE)/length;
|
||||
|
||||
amplitude = (value * general_amplitude)/16;
|
||||
amplitude_v = amplitude * 15; // for wave mixed with voiced sounds
|
||||
amplitude_v = (amplitude * wvoice->consonant_ampv * 15)/100; // for wave mixed with voiced sounds
|
||||
|
||||
amplitude_env = amp_env;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user