mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-02 14:04:27 +00:00
Merge branch 'master' into build
This commit is contained in:
+5
-2
@@ -123,7 +123,8 @@
|
||||
m) a (lt_ A:l
|
||||
ker) am (ik 'A:m
|
||||
@) an (_ 'A:n
|
||||
@) ance (_ 'A~s
|
||||
s) ance (_ 'A~s
|
||||
s) ancen (_ 'A~s@n
|
||||
fr) ance (_ 'A~s@
|
||||
ein) an (der 'an
|
||||
@) ant (_ 'ant
|
||||
@@ -823,6 +824,7 @@ formal) ie =I@
|
||||
_) natur (C@P5 nA:t'u:r
|
||||
_) na (tür n%A:
|
||||
nce (_ _^_EN
|
||||
nces (_ _^_EN
|
||||
_) ne (b ne:
|
||||
nebeneina (nd n,e:b@n_|aIn'a
|
||||
_) neben (@P5 n'e:b@n
|
||||
@@ -1035,6 +1037,7 @@ formal) ie =I@
|
||||
|
||||
schwer Sve:r
|
||||
_) sechs (P5 z'Eks
|
||||
seku (nden ze:k'U
|
||||
_) selbst (@@P6 z'Elpst
|
||||
service (_S7 z%Ervi:s
|
||||
shop _^_EN
|
||||
@@ -1245,7 +1248,7 @@ formal) ie =I@
|
||||
_) w (lad v
|
||||
_) w (rA v
|
||||
|
||||
@) wert (_ vErt
|
||||
@) wert (_ ve:rt
|
||||
_) wh _^_EN
|
||||
&) ware (_ _^_EN
|
||||
_) wasch (@P5 v'aS
|
||||
|
||||
@@ -609,7 +609,7 @@ s. t T t. th th. v x
|
||||
z Z z.
|
||||
|
||||
|
||||
Dictionary bg_dict 2011-04-20
|
||||
Dictionary bg_dict 2011-04-25
|
||||
|
||||
@ a e i o u
|
||||
|
||||
|
||||
+1
-1
@@ -4379,7 +4379,7 @@
|
||||
prede (ces pri:dI
|
||||
_) pre (diP3 pr%i
|
||||
_) pre (dic pr%I
|
||||
_) pre (emp pr%I
|
||||
_) pre (em pr%i:
|
||||
_) pre (fec pri:
|
||||
_) pre (feren prE
|
||||
pre (fix pri:
|
||||
|
||||
@@ -360,6 +360,8 @@ _மன்மதக்) க (ுகை g
|
||||
_) க் (ரௌண்ட g
|
||||
_) க்வ (A kw
|
||||
_) க் (வாலியர g
|
||||
_) கி (ராம்ப k
|
||||
_) க (ஞ்சா gV
|
||||
//endsort
|
||||
|
||||
//sort
|
||||
@@ -582,6 +584,9 @@ _துப்பாக்கி) க்க (ுண்ட gg
|
||||
என்சை) க்லோப (ீடியா klo:p
|
||||
க் (ஸ k
|
||||
_மெ) க்ஸிக (ோ ksik
|
||||
_ராஜ்) க (ிரண k
|
||||
இராம) க (ாவிய k
|
||||
_மெரு) க (ூட்ட g
|
||||
//endsort
|
||||
|
||||
|
||||
@@ -1350,6 +1355,9 @@ _நடுரோ) ட் (ல t.
|
||||
_) த (ோஹா d
|
||||
_) தௌலதாப (ாத daUlVd.a:b
|
||||
_) த (்ராட்சை d
|
||||
_) த (வக்கால dV
|
||||
_) த (ருமங் dV
|
||||
_) த (ருமப் dV
|
||||
//endsort
|
||||
|
||||
//sort
|
||||
@@ -1460,6 +1468,12 @@ _காமசூ) த் (ர t
|
||||
த) த (்ரூப t
|
||||
பா) த (்ரூம t
|
||||
_மை) த் (ரேய t
|
||||
L03) த்த (ின dd
|
||||
L03) த்த (ிசை dd
|
||||
L03) த்த (ூச dd
|
||||
L03) த்த (ேவன dd
|
||||
L03) த்த (ேவர dd
|
||||
L03) த்த (ேவத dd
|
||||
//endsort
|
||||
|
||||
|
||||
@@ -2111,6 +2125,10 @@ _சந்திர_) ப (ோஸ b
|
||||
_) ப் (ளவுஸ b
|
||||
_) ப் (ளோரிடா f
|
||||
_) ப் (ளௌஸ b
|
||||
_) பு (ரோகித p
|
||||
_) ப (ீன்ஸ b
|
||||
_) ப (ிஜிலி b
|
||||
_) ப (ேமானி b
|
||||
//endsort
|
||||
|
||||
//sort
|
||||
@@ -2478,6 +2496,8 @@ _சந்தேக) ப்ப (ுத்தி bb
|
||||
ஏரோ) ப் (ளேன p
|
||||
_) ப் (ளோரன்ஸ f
|
||||
ப் (ஸ p
|
||||
_அ) ப (ின்_ b
|
||||
_குமார) ப (ாளைய p
|
||||
//endsort
|
||||
|
||||
// If ப+ appearing in the middle of a word is followed by ட+
|
||||
|
||||
+12
-12
@@ -368,8 +368,8 @@ l/l_ [l] base
|
||||
[l/] fr
|
||||
l/l_@ [l/3] base
|
||||
[l/] fr
|
||||
l/l@ [l#] base
|
||||
[”¦] base
|
||||
l/l@ [hös] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[K] nso
|
||||
@@ -402,16 +402,16 @@ l/L2_oL [l/2] base
|
||||
l/L2_uL [l/2] base
|
||||
l/l_3 [l/] de
|
||||
l/l_4 [ll] sq
|
||||
l/la [l#] base
|
||||
[”¦] base
|
||||
l/la [hös] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[K] nso
|
||||
[K] tn
|
||||
l/l_a [l/3] base
|
||||
[l/] fr
|
||||
l/le [l#] base
|
||||
[”¦] base
|
||||
l/le [hös] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[K] nso
|
||||
@@ -422,8 +422,8 @@ l/L_eL_af [&] af
|
||||
[&:] af
|
||||
l/l_front [L] sq
|
||||
l/l_front_ [l/4] sq
|
||||
l/li [l#] base
|
||||
[”¦] base
|
||||
l/li [hös] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[l] zh
|
||||
@@ -436,8 +436,8 @@ ll/ll [L] bg
|
||||
ll/_ll [L] bg
|
||||
l/l_long [l] base
|
||||
[l] fr
|
||||
l/lo [l#] base
|
||||
[”¦] base
|
||||
l/lo [hös] base
|
||||
[l#] base
|
||||
[l/2] fr
|
||||
[K] nso
|
||||
[K] tn
|
||||
@@ -446,8 +446,8 @@ l/l_o [l/3] base
|
||||
l^/l_rfx [l.] base
|
||||
[l] ru
|
||||
[l^] ru
|
||||
l/lu [l#] base
|
||||
[”¦] base
|
||||
l/lu [hös] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[K] nso
|
||||
|
||||
+46
-18
@@ -1,5 +1,5 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
|
||||
* Copyright (C) 2005 to 2011 by Jonathan Duddington *
|
||||
* email: jonsd@users.sourceforge.net *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@@ -523,15 +523,19 @@ unsigned short ipa1[96] = {
|
||||
};
|
||||
|
||||
|
||||
static void WritePhMnemonic(char *phon_out, int *ix, PHONEME_TAB *ph, PHONEME_LIST *plist)
|
||||
static void WritePhMnemonic(char **buf, PHONEME_TAB *ph, PHONEME_LIST *plist)
|
||||
{//=======================================================================================
|
||||
int c;
|
||||
int mnem;
|
||||
int len;
|
||||
int first;
|
||||
int ix = 0;
|
||||
char *phon_out;
|
||||
unsigned int ipa_control=0; // first byte of ipa string may control the phoneme name interpretation. 0x20 = ignore this phoneme
|
||||
PHONEME_DATA phdata;
|
||||
|
||||
phon_out = *buf;
|
||||
|
||||
if(option_phonemes == 3)
|
||||
{
|
||||
// has an ipa name been defined for this phoneme ?
|
||||
@@ -551,11 +555,14 @@ static void WritePhMnemonic(char *phon_out, int *ix, PHONEME_TAB *ph, PHONEME_LI
|
||||
{
|
||||
if((ipa_control = phdata.ipa_string[0]) > 0x20)
|
||||
{
|
||||
strcpy(&phon_out[*ix], phdata.ipa_string);
|
||||
*ix += len;
|
||||
strcpy(&phon_out[ix], phdata.ipa_string);
|
||||
ix += len;
|
||||
}
|
||||
if(ipa_control >= 0x20)
|
||||
{
|
||||
*buf += ix;
|
||||
return; // 0x20 = ignore phoneme
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -581,14 +588,16 @@ static void WritePhMnemonic(char *phon_out, int *ix, PHONEME_TAB *ph, PHONEME_LI
|
||||
if((c >= 0x20) && (c < 128))
|
||||
c = ipa1[c-0x20];
|
||||
|
||||
*ix += utf8_out(c, &phon_out[*ix]);
|
||||
ix += utf8_out(c, &phon_out[ix]);
|
||||
}
|
||||
else
|
||||
{
|
||||
phon_out[(*ix)++]= c;
|
||||
phon_out[ix++]= c;
|
||||
}
|
||||
first = 0;
|
||||
}
|
||||
|
||||
*buf += ix;
|
||||
} // end of WritePhMnemonic
|
||||
|
||||
|
||||
@@ -600,21 +609,27 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out)
|
||||
*/
|
||||
|
||||
int ix;
|
||||
int len;
|
||||
int max_len;
|
||||
int phon_out_ix=0;
|
||||
int stress;
|
||||
unsigned int c;
|
||||
char *p;
|
||||
char *buf;
|
||||
char phon_buf[30];
|
||||
PHONEME_LIST *plist;
|
||||
|
||||
static const char *stress_chars = "==,,''";
|
||||
|
||||
if(phon_out != NULL)
|
||||
{
|
||||
for(ix=1; ix<(n_phoneme_list-2) && (phon_out_ix < (n_phon_out - 6)); ix++)
|
||||
for(ix=1; ix<(n_phoneme_list-2); ix++)
|
||||
{
|
||||
buf = phon_buf;
|
||||
|
||||
plist = &phoneme_list[ix];
|
||||
if(plist->newword)
|
||||
phon_out[phon_out_ix++] = ' ';
|
||||
*buf++ = ' ';
|
||||
|
||||
if(plist->synthflags & SFLAG_SYLLABLE)
|
||||
{
|
||||
@@ -636,7 +651,7 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out)
|
||||
|
||||
if(c != 0)
|
||||
{
|
||||
phon_out_ix += utf8_out(c, &phon_out[phon_out_ix]);
|
||||
buf += utf8_out(c, buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -646,31 +661,44 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out)
|
||||
// the tone_ph field contains a phoneme table number
|
||||
p = phoneme_tab_list[plist->tone_ph].name;
|
||||
|
||||
sprintf(&phon_out[phon_out_ix], "(%s)", p);
|
||||
phon_out_ix += (strlen(p) + 2);
|
||||
sprintf(buf, "(%s)", p);
|
||||
buf += (strlen(p) + 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
WritePhMnemonic(phon_out, &phon_out_ix, plist->ph, plist);
|
||||
WritePhMnemonic(&buf, plist->ph, plist);
|
||||
|
||||
if(plist->synthflags & SFLAG_LENGTHEN)
|
||||
{
|
||||
WritePhMnemonic(phon_out, &phon_out_ix, phoneme_tab[phonLENGTHEN], NULL);
|
||||
WritePhMnemonic(&buf, phoneme_tab[phonLENGTHEN], NULL);
|
||||
}
|
||||
if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL))
|
||||
{
|
||||
// syllablic consonant
|
||||
WritePhMnemonic(phon_out, &phon_out_ix, phoneme_tab[phonSYLLABIC], NULL);
|
||||
WritePhMnemonic(&buf, phoneme_tab[phonSYLLABIC], NULL);
|
||||
}
|
||||
if(plist->tone_ph > 0)
|
||||
{
|
||||
WritePhMnemonic(phon_out, &phon_out_ix, phoneme_tab[plist->tone_ph], NULL);
|
||||
WritePhMnemonic(&buf, phoneme_tab[plist->tone_ph], NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(phon_out_ix >= n_phon_out)
|
||||
phon_out_ix = n_phon_out - 1;
|
||||
len = buf - phon_buf;
|
||||
max_len = (n_phon_out - phon_out_ix - 5); // allow for " ..." and zero byte terminator
|
||||
if(len > max_len)
|
||||
{
|
||||
strcpy(&phon_buf[max_len], " ...");
|
||||
len = max_len + 4;
|
||||
}
|
||||
phon_buf[len] = 0;
|
||||
strcpy(&phon_out[phon_out_ix], phon_buf);
|
||||
phon_out_ix += len;
|
||||
|
||||
if(len > max_len)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
phon_out[phon_out_ix] = 0;
|
||||
}
|
||||
} // end of GetTranslatedPhonemeString
|
||||
|
||||
+9
-9
@@ -1,5 +1,5 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
|
||||
* Copyright (C) 2005 to 2011 by Jonathan Duddington *
|
||||
* email: jonsd@users.sourceforge.net *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@@ -171,7 +171,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
|
||||
// set consonant clusters to all voiced or all unvoiced
|
||||
// Regressive
|
||||
int type;
|
||||
int word_end_devoice = 0;
|
||||
int stop_propagation = 0;
|
||||
voicing = 0;
|
||||
|
||||
for(j=n_ph_list2-1; j>=0; j--)
|
||||
@@ -189,13 +189,10 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
|
||||
|
||||
if(regression & 0x2)
|
||||
{
|
||||
// LANG=Russian, [v] amd [v;] don't cause regression, or [R^]
|
||||
// [v] amd [v;] don't cause regression, or [R^]
|
||||
if((ph->mnemonic == 'v') || (ph->mnemonic == ((';'<<8)+'v')) || ((ph->mnemonic & 0xff)== 'R'))
|
||||
{
|
||||
if(word_end_devoice == 1)
|
||||
voicing = 0;
|
||||
else
|
||||
type = phLIQUID;
|
||||
stop_propagation = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,8 +234,12 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
|
||||
voicing = 0;
|
||||
}
|
||||
}
|
||||
if(stop_propagation)
|
||||
{
|
||||
voicing = 0;
|
||||
stop_propagation = 0;
|
||||
}
|
||||
|
||||
word_end_devoice = 0;
|
||||
if(plist2[j].sourceix)
|
||||
{
|
||||
if(regression & 0x04)
|
||||
@@ -252,7 +253,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
|
||||
if(voicing == 0)
|
||||
{
|
||||
voicing = 1;
|
||||
word_end_devoice = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -2691,10 +2691,11 @@ if(option_ssml) parag=1;
|
||||
}
|
||||
*charix_top = ix;
|
||||
|
||||
if(((ix > (n_buf-20)) && !IsAlpha(c1) && !iswdigit(c1)) || (ix >= (n_buf-2)))
|
||||
if(((ix > (n_buf-75)) && !IsAlpha(c1) && !iswdigit(c1)) || (ix >= (n_buf-4)))
|
||||
{
|
||||
// clause too long, getting near end of buffer, so break here
|
||||
// try to break at a word boundary (unless we actually reach the end of buffer).
|
||||
// (n_buf-4) is to allow for 3 bytes of multibyte character plus terminator.
|
||||
buf[ix] = ' ';
|
||||
buf[ix+1] = 0;
|
||||
UngetC(c2);
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@
|
||||
#include "translate.h"
|
||||
#include "wave.h"
|
||||
|
||||
const char *version_string = "1.45.04 25.Apr.11";
|
||||
const char *version_string = "1.45.21 27.Apr.11";
|
||||
const int version_phdata = 0x014500;
|
||||
|
||||
int option_device_number = -1;
|
||||
|
||||
+2
-2
@@ -103,7 +103,7 @@ static int embedded_read;
|
||||
unsigned int embedded_list[N_EMBEDDED_LIST];
|
||||
|
||||
// the source text of a single clause (UTF8 bytes)
|
||||
#define N_TR_SOURCE 700
|
||||
#define N_TR_SOURCE 800
|
||||
static char source[N_TR_SOURCE+40]; // extra space for embedded command & voice change info at end
|
||||
|
||||
int n_replace_phonemes;
|
||||
@@ -1783,7 +1783,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
|
||||
strcpy(ph_buf,word_phonemes);
|
||||
|
||||
flags2[0] = TranslateWord(translator, p2+1, 0, wtab+1);
|
||||
if(flags2[0] & FLAG_WAS_UNPRONOUNCABLE)
|
||||
if((flags2[0] & FLAG_WAS_UNPRONOUNCABLE) || (word_phonemes[0] == phonSWITCH))
|
||||
ok = 0;
|
||||
|
||||
if(sylimit & 0x100)
|
||||
|
||||
+2
-2
@@ -265,7 +265,7 @@ extern const int param_defaults[N_SPEECH_PARAM];
|
||||
#define LOPT_PREFIXES 3
|
||||
|
||||
// non-zero, change voiced/unoiced to match last consonant in a cluster
|
||||
// bit 1=LANG=ru, don't propagate over [v]
|
||||
// bit 1=LANG=cz,bg don't propagate over [v]
|
||||
// bit 2=don't propagate acress word boundaries
|
||||
// bit 3=LANG=pl, propagate over liquids and nasals
|
||||
// bit 4=devoice word-final consonants
|
||||
@@ -494,7 +494,7 @@ typedef struct
|
||||
int transpose_min;
|
||||
char dictionary_name[40];
|
||||
|
||||
char phon_out[300];
|
||||
char phon_out[400];
|
||||
char phonemes_repeat[20];
|
||||
int phonemes_repeat_count;
|
||||
int phoneme_tab_ix;
|
||||
|
||||
Reference in New Issue
Block a user