mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
[1.29.26] Allow longer echo delay period at the end of speech if the echo strength is > 20.
lang=vi: recognise combining accent characters (for tone accents). Use a different intonation pattern, with more expression, for sentences which end in exclamation mark. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@112 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
+60
-9
@@ -1,4 +1,4 @@
|
||||
//maintainer: Willem van der Walt
|
||||
//maintainer: Willem van der Walt
|
||||
// email: wvdwalt@csir.co.za
|
||||
// tel: +27 12 8413996
|
||||
// Meraka Institute, CSIR
|
||||
@@ -104,20 +104,32 @@ _roman rum'eIns@
|
||||
|
||||
// Place names
|
||||
|
||||
alaska al'aska
|
||||
asië A:si@
|
||||
babilon babilOn
|
||||
bangladesh baNglad'ES
|
||||
bastille bast'il
|
||||
bethlehem bEt_liEm
|
||||
boekarest bukarEst
|
||||
bonnievale _^_EN
|
||||
brittanje $2
|
||||
caledon kalidOn
|
||||
carolina karul'ina
|
||||
ceres se@r@s
|
||||
ceylon s@lOn
|
||||
china S'ina
|
||||
franschhoek frA~nsh'uk
|
||||
gadara x2@dA:ra
|
||||
galilea x2al@l'i:a
|
||||
gariep x2ar'ip
|
||||
getsémané x2Ets'e@mani
|
||||
goudini $2
|
||||
(graaff reinet) x2rA:f||r@n'Et
|
||||
griekeland x2rik@lant
|
||||
hermon $1
|
||||
hirosjima hiruS'ima
|
||||
israel IsraI:l
|
||||
italië it'A:li;@
|
||||
jerusalem j@r'ysalEm
|
||||
kanada kanad%a
|
||||
kanaän kA:nA:an
|
||||
kenia ki:nia
|
||||
@@ -139,6 +151,7 @@ tunisië $2
|
||||
turkye $2
|
||||
upington apiNt@n
|
||||
vesuvius v@su:viWs
|
||||
wellington wEliNt@n
|
||||
worcester v'ust@r
|
||||
zimbabwe zI:mb'ab_wE
|
||||
|
||||
@@ -147,7 +160,9 @@ zimbabwe zI:mb'ab_wE
|
||||
// People names
|
||||
Abiméleg abin'e@lEx2
|
||||
abraham A:bram
|
||||
ackerman ak@rman
|
||||
adrie A:dri
|
||||
aletta al'Eta
|
||||
alida al'ida
|
||||
allah %alA:
|
||||
André 'andreI
|
||||
@@ -155,18 +170,23 @@ annette an'Et
|
||||
antoinette antun'Et
|
||||
benjamin bEndZ@m@n
|
||||
bester b'Est@r
|
||||
beyers beI@rs
|
||||
blomerus blum'e@rWs
|
||||
botha bo@ta
|
||||
bouwer b@U@r
|
||||
breytenbach breIt@nbax2
|
||||
brouwer bruw'&:r
|
||||
caesar siz@r
|
||||
carl kA:r@L
|
||||
cecilia s@si:lia
|
||||
charl SA:l
|
||||
charles _^_EN
|
||||
charlie tSA:li
|
||||
chopin S%OpA~
|
||||
conradie $2
|
||||
chris krIs
|
||||
christo krIstu
|
||||
christoffel kr@stOf@l
|
||||
christian krIstian
|
||||
christelle kr@st&l
|
||||
christine kr@st'i:n
|
||||
@@ -185,6 +205,7 @@ eksteen $1
|
||||
elisabeth il'isabEt
|
||||
elize il'i:z
|
||||
elsabé &ls@bi
|
||||
emmarentia Emar'e~nSja
|
||||
eségiël is'e@x2i_@l
|
||||
estelle %ist&l
|
||||
etienne Eti@n
|
||||
@@ -199,6 +220,7 @@ freud frOId
|
||||
gabriël x2A:bri@l
|
||||
george _^_EN
|
||||
gerhard x2&rart
|
||||
gerhardus $2
|
||||
gloria glO:ria
|
||||
gouws x2@Us
|
||||
grange x2rA:nsi
|
||||
@@ -206,6 +228,7 @@ gustav gustaf
|
||||
havenga hA:f@Nx2a
|
||||
haydn hAId@n
|
||||
helena hil'e@na
|
||||
helloïse hEluw'i:z
|
||||
herklaas $1
|
||||
herman $1
|
||||
hilde hild@
|
||||
@@ -255,6 +278,7 @@ mozart mo@tsart
|
||||
naomi na_'o@mi
|
||||
natasha n%at'aSa
|
||||
naudé nOd'e@
|
||||
neil _^_EN
|
||||
philip fIl@p
|
||||
phillips fIl@ps
|
||||
pierre p'e@r
|
||||
@@ -268,6 +292,7 @@ ronel run'&l
|
||||
rousseau r@s@U
|
||||
roux r'u
|
||||
salomo sA:l@mo@
|
||||
sandra sandra
|
||||
schalk sk'alk
|
||||
scheepers ske@p@rs
|
||||
schmidt Smit
|
||||
@@ -290,6 +315,7 @@ vincent _^_EN
|
||||
violet _^_EN $capital
|
||||
william _^_EN
|
||||
yolande jul'and@
|
||||
yvonne iv'On
|
||||
zyl seIl
|
||||
marais mar'E:
|
||||
mandela mand'E:la
|
||||
@@ -457,16 +483,20 @@ aangaande $2
|
||||
aanstaande $2
|
||||
adagio ad'A:dZi;%@U
|
||||
afkere afke@r@
|
||||
agamemnon ax2am'EmnOn
|
||||
agterstevoor $4
|
||||
agterweë $3
|
||||
algaande $2
|
||||
algehele alx2@h,e@l@
|
||||
allegro al'Egru
|
||||
alles al@s
|
||||
almiskie $3
|
||||
alom al_'Om
|
||||
alreeds $2
|
||||
alternatiewe $4
|
||||
amen A:mEn
|
||||
anatomie $4
|
||||
anale an'A:l@
|
||||
anatomie $4 $only
|
||||
asof asOf
|
||||
asook %as_o@k
|
||||
aspris $2
|
||||
@@ -474,6 +504,7 @@ asseblief as@bl'if
|
||||
attraksie $2
|
||||
|
||||
babelaas bab@lA:s
|
||||
barrikade $3
|
||||
beide beId@
|
||||
belangriker b@laNr@k,Ir
|
||||
belangrikst@ b@laNr@kst@
|
||||
@@ -482,6 +513,7 @@ beswil bEsv@l
|
||||
bêre b&:r@
|
||||
beskryf b@skr'eIf
|
||||
bestes bEst@s
|
||||
beta be@ta
|
||||
bewe be@v@
|
||||
bewend be@v@nt
|
||||
bewering b@ve@rIN
|
||||
@@ -490,6 +522,7 @@ bostaande b'o@stA:nd@
|
||||
cabernet kab@rn'eI
|
||||
camembert kam@mb'&:r
|
||||
camouflage kamufl'A:Z
|
||||
charisma kar'Isma
|
||||
chemikalieë $3
|
||||
|
||||
dadelik dA:d@lIk
|
||||
@@ -499,20 +532,24 @@ dekade dEk'A:d@
|
||||
deurentyd dy@r@nteIt
|
||||
deurgaans $1
|
||||
deurkruis $2
|
||||
deurstraalde $2
|
||||
dikwels dIkv@ls
|
||||
diplomasie d@plo@mas'i
|
||||
dusver dWsf&r
|
||||
|
||||
eenkeer $1
|
||||
efesiër if'e@si@r
|
||||
effense Ef@ns@
|
||||
ekself %&ks'&lf
|
||||
ekstra Ekstra
|
||||
elders &ld@rs
|
||||
elite il'i:t
|
||||
enige e@nIx2@
|
||||
eone $2
|
||||
era e@ra
|
||||
erger &rg@r
|
||||
espeak i:;spi:k
|
||||
(et cetera) Ets'Et@ra
|
||||
euro Y@ru
|
||||
exodus Eks'o@dWs
|
||||
|
||||
@@ -520,6 +557,8 @@ figuur f@x2yr
|
||||
filippense f@l@pEns@
|
||||
finalis $3
|
||||
finaliste $3
|
||||
fort fOrt
|
||||
forte fOrt@
|
||||
frontaal $2
|
||||
frontale $2
|
||||
|
||||
@@ -539,14 +578,15 @@ graffiti graf'iti
|
||||
gratis x2r'A:t@s
|
||||
|
||||
hallo h'Il,@U
|
||||
hanteer $2
|
||||
hanou hA:n@U
|
||||
hardop hart?Op
|
||||
hasepad hA:s@pat
|
||||
heeltemal he@lt@mal
|
||||
heengaan he@nx2A:n
|
||||
hek h&k
|
||||
hekke h&k@
|
||||
helaas he@l'A:s
|
||||
here he@r@
|
||||
herero hEr'E:ru
|
||||
herrysenis h&r'eIs@n@s
|
||||
hiernamaals hi:rn'A:mA:ls
|
||||
hierso hi:rsO
|
||||
@@ -554,13 +594,17 @@ hoera hur'A:
|
||||
hoewel huv'&l
|
||||
hokaai hOkAI
|
||||
hoofsaaklik $2
|
||||
hosanna hus'ana
|
||||
|
||||
ibis $1
|
||||
idee $2
|
||||
idilles id'Il@s
|
||||
ignoreer ix2no@r'e@r
|
||||
inagneming @nax2ne@m@N
|
||||
indien Indin $verb
|
||||
inkatha iNk'A:ta
|
||||
inkluis $2
|
||||
insomnia @nsOmnija
|
||||
intens @nt'Ens
|
||||
intensiteit $4
|
||||
|
||||
@@ -568,16 +612,21 @@ jawoord jA:vo@rt
|
||||
jupiter jupit@r
|
||||
|
||||
kafee kaf'e@
|
||||
katswink katsv@nk
|
||||
kaviaar kavi'A:r
|
||||
klaasvakie $2
|
||||
knapsekêrel knaps@k&:r@l
|
||||
komaan kOmA:n
|
||||
konkawe kOnk'A:v@
|
||||
kopiereg kup'ir&x2
|
||||
korswel kOrsv@l
|
||||
kotiljons kOt@lj'o~ns
|
||||
kritiek krIt'ik
|
||||
kulture $2
|
||||
kunsmatige kWnsm'A:t@x2@
|
||||
kwansuis $2
|
||||
|
||||
latere l'A:t@r@
|
||||
lekker l&k@r
|
||||
lekkerder l&k@rd@r
|
||||
lekkerste l&k@rst@
|
||||
|
||||
@@ -611,7 +660,6 @@ negering n@x2e@r@N
|
||||
netjies nE:icis
|
||||
netjiese nEicis@
|
||||
netsowel nEtso@v&l
|
||||
nietemin n'it@m@n
|
||||
nimmermeer $1
|
||||
nobelprys $2
|
||||
normale nOrm'A:l@
|
||||
@@ -663,7 +711,7 @@ petite p@tit
|
||||
pinotage pinut'A:Z
|
||||
pirouette p@ru:'Et
|
||||
|
||||
reeds re@ts
|
||||
rebelleer r@b@le@r
|
||||
retireer r@t@re@:r
|
||||
retoriek r@tur'ik
|
||||
rimpeling rImp@l@N
|
||||
@@ -693,6 +741,7 @@ sonop sOn_Op
|
||||
sover so@f&r
|
||||
spesmaas $2
|
||||
stabiel stab'il
|
||||
staccato $2
|
||||
|
||||
terdeë $2
|
||||
terug t@-rWx2
|
||||
@@ -702,7 +751,7 @@ tevrede t@fre@d@
|
||||
toegee tux2e@
|
||||
totale tut'A:l@
|
||||
totsiens $2
|
||||
|
||||
tragiek trax2'ik
|
||||
|
||||
uitdaging YydA:x2@N
|
||||
uiteraard Yyt@r_'A:rt
|
||||
@@ -721,6 +770,7 @@ verdere f&rd@r@
|
||||
vererger f@r&rg@r
|
||||
ver f'&:r
|
||||
verg f&rx2
|
||||
vergeleë f&:rx2@l,e@@
|
||||
vergete f@rx2e@t@
|
||||
vermy $2
|
||||
verre f&:r@
|
||||
@@ -733,6 +783,7 @@ verte f&rt@
|
||||
vertes f&rt@s
|
||||
via via
|
||||
volheid $1
|
||||
volte $1
|
||||
voluit fOl_Yyt
|
||||
voorgee fo@rx2e@
|
||||
voorkeer $1
|
||||
|
||||
+367
-63
File diff suppressed because it is too large
Load Diff
@@ -244,15 +244,11 @@ v w x z
|
||||
|
||||
Dictionary vi_dict
|
||||
|
||||
@ @: @:I @:U @I @U a a:
|
||||
a:I a:U aI aU E e eU EU
|
||||
i i@ iU O o OI oI u
|
||||
u@ uI y y@ yI
|
||||
@: a a: a:I aI aU E e
|
||||
i o
|
||||
|
||||
b c d D f g h j
|
||||
k kh l m n N n^ p
|
||||
Q s t t[ ts; tS; v w
|
||||
x z Z z;
|
||||
b d g h k m n p
|
||||
s t t[ ts; v w z
|
||||
|
||||
|
||||
Dictionary zhy_dict
|
||||
|
||||
@@ -150,6 +150,7 @@ ai $abbrev
|
||||
api $abbrev
|
||||
asap $abbrev
|
||||
awol eIw0l
|
||||
cia $abbrev
|
||||
cio $abbrev
|
||||
ctrl k0ntr'oUl
|
||||
dept dI2pA@tm@nt
|
||||
|
||||
+76
-1
@@ -1,4 +1,80 @@
|
||||
|
||||
// replace combining (tone) accents with single characters
|
||||
.replace
|
||||
à à
|
||||
á á
|
||||
ả ả
|
||||
ã ã
|
||||
ạ ạ
|
||||
|
||||
|
||||
ằ ằ
|
||||
ắ ắ
|
||||
ẳ ẳ
|
||||
ẵ ẵ
|
||||
ặ ặ
|
||||
|
||||
ầ ầ
|
||||
ấ ấ
|
||||
ẩ ẩ
|
||||
ẫ ẫ
|
||||
ậ ậ
|
||||
|
||||
è è
|
||||
é é
|
||||
ẻ ẻ
|
||||
ẽ ẽ
|
||||
ẹ ẹ
|
||||
|
||||
ề ề
|
||||
ế ế
|
||||
ể ể
|
||||
ễ ễ
|
||||
ệ ệ
|
||||
|
||||
ì ì
|
||||
í í
|
||||
ỉ ỉ
|
||||
ĩ ĩ
|
||||
ị ị
|
||||
|
||||
ò ò
|
||||
ó ó
|
||||
ỏ ỏ
|
||||
õ õ
|
||||
ọ ọ
|
||||
|
||||
ồ ồ
|
||||
ố ố
|
||||
ổ ổ
|
||||
ỗ ỗ
|
||||
ộ ộ
|
||||
|
||||
ờ ờ
|
||||
ớ ớ
|
||||
ở ở
|
||||
ỡ ỡ
|
||||
ợ ợ
|
||||
|
||||
ù ù
|
||||
ú ú
|
||||
ủ ủ
|
||||
ũ ũ
|
||||
ụ ụ
|
||||
|
||||
ừ ừ
|
||||
ứ ứ
|
||||
ử ử
|
||||
ữ ữ
|
||||
ự ự
|
||||
|
||||
ỳ ỳ
|
||||
ý ý
|
||||
ỷ ỷ
|
||||
ỹ ỹ
|
||||
ỵ ỵ
|
||||
|
||||
|
||||
.group a
|
||||
a a:
|
||||
ai a:I
|
||||
@@ -572,4 +648,3 @@
|
||||
$ d'o||l'a
|
||||
% f'@2n||tS;'am
|
||||
|
||||
|
||||
|
||||
@@ -924,8 +924,6 @@ vdiph/@u [u:] en_wm
|
||||
vdiph/@u_2 [oU] en_rp
|
||||
vdiph/@u_3 [@U] ro
|
||||
vdiph/@u_en [oU] en
|
||||
[@U] vi
|
||||
[@:U] vi
|
||||
vdiph/ui [uI] base2
|
||||
[uI] en
|
||||
[uI] eo
|
||||
@@ -940,6 +938,8 @@ vdiph/Vi [@:I] vi
|
||||
vdiph/Vu [@U] af
|
||||
vdiph/Vu_2 [oU] en_wm
|
||||
vdiph/Vu_3 [o:] nl
|
||||
vdiph/Vu_4 [@U] vi
|
||||
[@:U] vi
|
||||
vdiph/&y [&y] fi
|
||||
[Wy] nl
|
||||
vdiph/yi [yi] fi
|
||||
@@ -1501,8 +1501,8 @@ vowel/V_2 [V] en
|
||||
[V#] ru
|
||||
vowel/V_3 [V] en_rp
|
||||
[V] hi
|
||||
[@:] vi
|
||||
vowel/V_4 [V] en_sc
|
||||
[@:] vi
|
||||
vowel/V_6 [V] en_us
|
||||
vowel/y [y:] en
|
||||
[y:] de
|
||||
|
||||
+8
-8
@@ -71,7 +71,7 @@ endphoneme
|
||||
|
||||
phoneme a:
|
||||
vowel starttype (a) endtype (a)
|
||||
length 260
|
||||
length 280
|
||||
formants vowel/a_2
|
||||
endphoneme
|
||||
|
||||
@@ -134,8 +134,8 @@ endphoneme
|
||||
|
||||
phoneme @:
|
||||
vowel starttype (@) endtype (@)
|
||||
length 260
|
||||
formants vowel/V_3
|
||||
length 280
|
||||
formants vowel/V_4
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -223,7 +223,7 @@ endphoneme
|
||||
|
||||
phoneme a:U
|
||||
vowel starttype (a) endtype (u)
|
||||
length 250
|
||||
length 260
|
||||
formants vdiph/au
|
||||
endphoneme
|
||||
|
||||
@@ -250,20 +250,20 @@ endphoneme
|
||||
phoneme @U
|
||||
vowel starttype (@) endtype (u)
|
||||
length 200
|
||||
formants vdiph/@u_en
|
||||
formants vdiph/Vu_4
|
||||
endphoneme
|
||||
|
||||
phoneme @:U
|
||||
vowel starttype (@) endtype (u)
|
||||
length 250
|
||||
formants vdiph/@u_en
|
||||
length 260
|
||||
formants vdiph/Vu_4
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
phoneme i@
|
||||
vowel starttype (i) endtype (@)
|
||||
length 230
|
||||
length 240
|
||||
formants vdiph2/ii@_3
|
||||
endphoneme
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 97 KiB |
Binary file not shown.
+1
-1
@@ -668,7 +668,7 @@ void copy_rule_string(char *string, int &state)
|
||||
if(c == '\\')
|
||||
{
|
||||
c = *p++; // treat next character literally
|
||||
if((c >= '0') && (c <= '2') && (p[0] >= '0') && (p[0] <= '7') && (p[1] >= '0') && (p[1] <= '7'))
|
||||
if((c >= '0') && (c <= '3') && (p[0] >= '0') && (p[0] <= '7') && (p[1] >= '0') && (p[1] <= '7'))
|
||||
{
|
||||
// character code given by 3 digit octal value;
|
||||
c = (c-'0')*64 + (p[0]-'0')*8 + (p[1]-'0');
|
||||
|
||||
+90
-75
@@ -236,82 +236,68 @@ unsigned char *envelope_data[16] = {
|
||||
|
||||
// pitch change during the main part of the clause
|
||||
static int drops_0[8] = {0x400,0x400,0x700,0x700,0x700,0xa00,0x1800,0x0e00};
|
||||
static int drops_1[8] = {0x400,0x400,0x600,0x600,0xc00,0xc00,0x0e00,0x0e00};
|
||||
static int drops_2[8] = {0x400,0x400,0x600,0x600,-0x800,0xc00,0x0e00,0x0e00};
|
||||
//static int drops_1[8] = {0x400,0x400,0x600,0x600,0xc00,0xc00,0x0e00,0x0e00};
|
||||
//static int drops_2[8] = {0x400,0x400,0x600,0x600,-0x800,0xc00,0x0e00,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 back_emf[] = {36, 32, 0};
|
||||
|
||||
typedef struct {
|
||||
unsigned char pitch_env0; /* pitch envelope, tonic syllable at end */
|
||||
unsigned char tonic_max0;
|
||||
unsigned char tonic_min0;
|
||||
unsigned char pitch_env0; /* pitch envelope, tonic syllable at end */
|
||||
unsigned char tonic_max0;
|
||||
unsigned char tonic_min0;
|
||||
|
||||
unsigned char pitch_env1; /* followed by unstressed */
|
||||
unsigned char tonic_max1;
|
||||
unsigned char tonic_min1;
|
||||
unsigned char pitch_env1; /* followed by unstressed */
|
||||
unsigned char tonic_max1;
|
||||
unsigned char tonic_min1;
|
||||
|
||||
unsigned char pre_start;
|
||||
unsigned char pre_end;
|
||||
unsigned char pre_start;
|
||||
unsigned char pre_end;
|
||||
|
||||
unsigned char body_start;
|
||||
unsigned char body_end;
|
||||
unsigned char body_start;
|
||||
unsigned char body_end;
|
||||
|
||||
int *body_drops;
|
||||
unsigned char body_max_steps;
|
||||
unsigned char body_lower_u;
|
||||
int *body_drops;
|
||||
unsigned char body_max_steps;
|
||||
unsigned char body_lower_u;
|
||||
|
||||
unsigned char tail_start;
|
||||
unsigned char tail_end;
|
||||
unsigned char tail_shape;
|
||||
char n_overflow;
|
||||
short *overflow;
|
||||
short *backwards;
|
||||
|
||||
unsigned char tail_start;
|
||||
unsigned char tail_end;
|
||||
unsigned char tail_shape;
|
||||
} TONE_TABLE;
|
||||
|
||||
#define N_TONE_TABLE 15
|
||||
|
||||
static TONE_TABLE tone_table[N_TONE_TABLE] = {
|
||||
{PITCHfall, 30, 5, PITCHfall, 30, 8, // statement
|
||||
20, 25, 34, 22, drops_0, 3, 3, 12, 7, 0},
|
||||
20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 12, 7, 0},
|
||||
|
||||
{PITCHfrise, 37,10, PITCHfrise2, 35,10, // comma
|
||||
20, 25, 34, 20, drops_0, 3, 3, 15, 24, 0},
|
||||
20, 25, 34, 20, drops_0, 3, 3, 5, oflow, NULL, 15, 24, 0},
|
||||
|
||||
{PITCHfrise, 39,10, PITCHfrise2, 36,10, // question
|
||||
20, 25, 34, 20, drops_0, 3, 3, 15, 29, 0},
|
||||
20, 25, 34, 20, drops_0, 3, 3, 5, oflow, NULL, 15, 29, 0},
|
||||
|
||||
{PITCHfall, 36, 0, PITCHfall, 40, 30, // statement, emphatic
|
||||
20, 25, 34, 22, drops_0, 3, 3, 20, 4, 0},
|
||||
{PITCHfall, 41, 4, PITCHfall, 41, 27, // exclamation
|
||||
20, 25, 34, 24, drops_0, 3, 4, 5, oflow_emf, back_emf, 18, 5, 0},
|
||||
|
||||
{PITCHfall, 38, 2, PITCHfall, 42, 30, // statement, emphatic
|
||||
20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0},
|
||||
|
||||
|
||||
#ifdef deleted
|
||||
{PITCHfall, 30, 5, PITCHfall, 30, 7, // statement
|
||||
20, 25, 34, 22, drops_1, 3, 3, 12, 8, 0},
|
||||
{PITCHfall, 28, 6, PITCHfall, 28, 10, // statement, less intonation
|
||||
20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 12, 6, 0},
|
||||
|
||||
{PITCHfrise, 38,10, PITCHfrise2, 36,10, // comma, or question
|
||||
20, 25, 34, 20, drops_1, 3, 3, 15, 25, 0},
|
||||
|
||||
{PITCHfall, 30, 5, PITCHfall, 30, 7, // exclamation
|
||||
20, 25, 34, 22, drops_1, 3, 3, 12, 8, 0},
|
||||
{PITCHfrise2, 34,12, PITCHfall, 28,10, // comma, less intonation
|
||||
20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 9,14, 0},
|
||||
|
||||
|
||||
|
||||
{PITCHfall, 30, 5, PITCHfall, 30, 7, // statement
|
||||
20, 25, 34, 22, drops_2, 3, 3, 12, 8, 0},
|
||||
|
||||
{PITCHfrise, 38,10, PITCHfrise2, 36,10, // comma, or question
|
||||
20, 25, 34, 20, drops_2, 3, 3, 15, 25, 0},
|
||||
|
||||
{PITCHfall, 30, 5, PITCHfall, 30, 7, // exclamation
|
||||
20, 25, 34, 22, drops_2, 3, 3, 12, 8, 0},
|
||||
|
||||
|
||||
|
||||
// alternatives
|
||||
{PITCHfall, 36, 6, PITCHfall, 36, 8,
|
||||
30, 20, 18, 34, drops_0, 3, 3, 12, 8, 0},
|
||||
|
||||
{PITCHfrise, 38, 8, PITCHfrise2, 36, 8,
|
||||
30, 20, 18, 34, drops_0, 3, 3, 20, 32, 0},
|
||||
|
||||
{PITCHfall, 36, 6, PITCHfall, 36, 8,
|
||||
30, 20, 18, 34, drops_0, 3, 3, 12, 8, 0},
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -351,7 +337,7 @@ static void count_pitch_vowels(int start, int end, int clause_end)
|
||||
number_pre = -1; /* number of vowels before 1st primary stress */
|
||||
number_body = 0;
|
||||
number_tail = 0; /* number between tonic syllable and next primary */
|
||||
last_primary = 0;
|
||||
last_primary = -1;
|
||||
last2_primary = 0;
|
||||
|
||||
for(ix=start; ix<end; ix++)
|
||||
@@ -382,7 +368,7 @@ static void count_pitch_vowels(int start, int end, int clause_end)
|
||||
}
|
||||
|
||||
if(number_pre < 0)
|
||||
number_pre = 0;
|
||||
number_pre = end;
|
||||
|
||||
number_tail = end - max_stress_posn - 1;
|
||||
tone_posn = max_stress_posn;
|
||||
@@ -393,9 +379,17 @@ static void count_pitch_vowels(int start, int end, int clause_end)
|
||||
tone_posn = tone_posn2 = end-1;
|
||||
}
|
||||
else
|
||||
if(end == clause_end)
|
||||
if(last_primary >= 0)
|
||||
{
|
||||
syllable_tab[last_primary].stress = PRIMARY_LAST;
|
||||
if(end == clause_end)
|
||||
{
|
||||
syllable_tab[last_primary].stress = PRIMARY_LAST;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// no primary stress. Use the highest stress
|
||||
syllable_tab[tone_posn].stress = PRIMARY_LAST;
|
||||
}
|
||||
} /* end of count_pitch_vowels */
|
||||
|
||||
@@ -412,8 +406,8 @@ static int count_increments(int ix, int end_ix, int min_stress)
|
||||
while(ix < end_ix)
|
||||
{
|
||||
stress = syllable_tab[ix++].stress;
|
||||
// if(stress >= PRIMARY_MARKED)
|
||||
// break;
|
||||
if(stress >= PRIMARY_LAST)
|
||||
break;
|
||||
|
||||
if(stress >= min_stress)
|
||||
count++;
|
||||
@@ -466,14 +460,15 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_TABLE *t, int min_stress,
|
||||
int pitch=0;
|
||||
int increment=0;
|
||||
int n_primary=0;
|
||||
int n_steps=0;
|
||||
int initial;
|
||||
int overflow=0;
|
||||
int n_overflow;
|
||||
int *drops;
|
||||
short *overflow_tab;
|
||||
SYLLABLE *syl;
|
||||
|
||||
static short overflow_tab1[5] = {0, 20, 12, 4, 0};
|
||||
static short continue_tab[5] = {-14, 16, 10, 4, 0};
|
||||
static short continue_tab[5] = {-13, 16, 10, 4, 0};
|
||||
|
||||
drops = t->body_drops;
|
||||
|
||||
@@ -481,13 +476,15 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_TABLE *t, int min_stress,
|
||||
{
|
||||
initial =0;
|
||||
overflow = 0;
|
||||
n_overflow = 5;
|
||||
overflow_tab = continue_tab;
|
||||
increment = (t->body_end - t->body_start) << 8;
|
||||
increment = increment / (t->body_max_steps -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
overflow_tab = overflow_tab1;
|
||||
n_overflow = t->n_overflow;
|
||||
overflow_tab = t->overflow;
|
||||
initial = 1;
|
||||
}
|
||||
|
||||
@@ -503,19 +500,19 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_TABLE *t, int min_stress,
|
||||
{
|
||||
// a primary stress
|
||||
|
||||
if(initial)
|
||||
if((initial) || (stress == 5))
|
||||
{
|
||||
initial = 0;
|
||||
overflow = 0;
|
||||
n_primary = count_increments(ix,end_ix,min_stress);
|
||||
n_steps = n_primary = count_increments(ix,end_ix,min_stress);
|
||||
|
||||
if(n_primary > t->body_max_steps)
|
||||
n_primary = t->body_max_steps;
|
||||
if(n_steps > t->body_max_steps)
|
||||
n_steps = t->body_max_steps;
|
||||
|
||||
if(n_primary > 1)
|
||||
if(n_steps > 1)
|
||||
{
|
||||
increment = (t->body_end - t->body_start) << 8;
|
||||
increment = increment / (n_primary -1);
|
||||
increment = increment / (n_steps -1);
|
||||
}
|
||||
else
|
||||
increment = 0;
|
||||
@@ -524,20 +521,26 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_TABLE *t, int min_stress,
|
||||
}
|
||||
else
|
||||
{
|
||||
if(n_primary > 0)
|
||||
if(n_steps > 0)
|
||||
pitch += increment;
|
||||
else
|
||||
{
|
||||
pitch = (t->body_end << 8) - (increment * overflow_tab[overflow++])/16;
|
||||
if(overflow > 4)
|
||||
if(overflow >= n_overflow)
|
||||
{
|
||||
overflow = 0;
|
||||
overflow_tab = overflow_tab1;
|
||||
overflow_tab = t->overflow;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
n_steps--;
|
||||
|
||||
n_primary--;
|
||||
if((t->backwards) && (n_primary < 2))
|
||||
{
|
||||
pitch = t->backwards[n_primary] << 8;
|
||||
}
|
||||
}
|
||||
|
||||
if(stress >= PRIMARY)
|
||||
@@ -889,7 +892,7 @@ void Translator::CalcPitches(int clause_type)
|
||||
option = 0;
|
||||
|
||||
group_tone_emph = group_tone = punct_to_tone[option][clause_type];
|
||||
group_tone_emph = punct_to_tone[option][3]; // emphatic form of statement
|
||||
group_tone_emph = punct_to_tone[option][4]; // emphatic form of statement
|
||||
|
||||
if(clause_type == 4)
|
||||
no_tonic = 1; /* incomplete clause, used for abbreviations such as Mr. Dr. Mrs. */
|
||||
@@ -924,11 +927,23 @@ void Translator::CalcPitches(int clause_type)
|
||||
if(syl->stress >= 4)
|
||||
count_primary++;
|
||||
|
||||
if((syl->stress == 6) && (syllable_tab[st_ix+1].stress == 6))
|
||||
if(syl->stress == 6)
|
||||
{
|
||||
syllable_tab[st_ix].flags = 2;
|
||||
syl->stress = 4;
|
||||
// are the next primary syllables also emphasized ?
|
||||
for(ix=st_ix+1; ix<n_st; ix++)
|
||||
{
|
||||
if(syllable_tab[ix].stress == 4)
|
||||
break;
|
||||
if(syllable_tab[ix].stress == 6)
|
||||
{
|
||||
// emphasize this syllable, but don't end the current tone group
|
||||
syllable_tab[st_ix].flags = 2;
|
||||
syl->stress = 5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(syl->stress == 6)
|
||||
{
|
||||
// an emphasized syllable, end the tone group after the next primary stress
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@
|
||||
#include "translate.h"
|
||||
#include "wave.h"
|
||||
|
||||
const char *version_string = "1.29.25 14.Dec.07";
|
||||
const char *version_string = "1.29.26 18.Dec.07";
|
||||
const int version_phdata = 0x012924;
|
||||
|
||||
int option_device_number = -1;
|
||||
|
||||
+5
-2
@@ -341,8 +341,8 @@ unsigned char *length_mod_tabs[6] = {
|
||||
|
||||
/* index by 0=. 1=, 2=?, 3=! 4=none */
|
||||
static unsigned char punctuation_to_tone[4][5] = {
|
||||
{0,1,2,3,0},
|
||||
{0,1,2,3,0},
|
||||
{0,1,2,3,4},
|
||||
{5,6,2,0,4},
|
||||
{0,1,2,3,0},
|
||||
{0,1,2,3,0} };
|
||||
|
||||
@@ -369,6 +369,9 @@ int IsAlpha(unsigned int c)
|
||||
if((c >= 0x901) && (c <= 0x957))
|
||||
return(1); // Devanagari vowel signs and other signs
|
||||
|
||||
if((c >= 0x300) && (c <= 0x36f))
|
||||
return(1); // combining accents
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
+4
-2
@@ -821,9 +821,11 @@ static void WavegenSetEcho(void)
|
||||
|
||||
if(delay == 0)
|
||||
amp = 0;
|
||||
|
||||
echo_head = (delay * samplerate)/1000;
|
||||
echo_length = echo_head; // ensure completion of echo at the end of speech
|
||||
// echo_length = echo_head * 2; // perhaps allow 2 echo periods at the end of speech ?
|
||||
echo_length = echo_head; // ensure completion of echo at the end of speech. Use 1 delay period?
|
||||
if(amp > 20)
|
||||
echo_length = echo_head * 2; // perhaps allow 2 echo periods if the echo is loud.
|
||||
|
||||
// echo_amp units are 1/256ths of the amplitude of the original sound.
|
||||
echo_amp = amp;
|
||||
|
||||
Reference in New Issue
Block a user