diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index c8bf1213..a32b71ac 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -66,7 +66,7 @@ R3 s S t T tS v w x z Z -Dictionary hu_dict 2011-09-15 +Dictionary hu_dict 2011-10-07 a A a: E e: i i: o o: u u: Y y y: Y: @@ -102,7 +102,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2011-09-08 +Dictionary en_dict 2011-09-27 0 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI@ aU diff --git a/dictsource/en_list b/dictsource/en_list index 6c6638f0..de460edc 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -1669,6 +1669,7 @@ obsolete 0bs@li:t obstacle 0bst@k@L ocean oUS@n oceanic oUSI'anIk +ocelot 0s@l0t ochre oUk3 o'clock @kl0k october $2 diff --git a/dictsource/en_rules b/dictsource/en_rules index b2a3231d..6485b66b 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -33,6 +33,7 @@ .L01 l r .L02 i y .L03 a i o u // vowel, not 'e' +.L05 c g k .L10 grap log met scop // scientific endings @@ -3544,13 +3545,12 @@ o) mb (e m _bo) mb (K m _du) mb m - _) mc m@k - _) mc (_k m@ - _) mc (k m@ - _) mc (_g m@ - _) mc (g m@ + _) mc (C m@k + _) mc (_C m@k + _) mc (_L05 m@ // c,g,k + _) mc (L05 m@ _) mc (A mak - _) mc (-A mak + _) mc (_A mak mn (_ m &B) me (_ m%I _) mega mEg@ diff --git a/dictsource/hu_list b/dictsource/hu_list index 6bcd682e..b5c292b5 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -1985,6 +1985,321 @@ gyengén $unstressend jelentőségű $unstressend elárulta $unstressend bolygón $unstressend +rázni $unstressend +szóltam $unstressend +fogadni $unstressend +levonni $unstressend +gond $unstressend +jelzéseket $unstressend +modellből $unstressend +kiadás $unstressend +bántani $unstressend +szándéka $unstressend +körét $unstressend +arányát $unstressend +fellépést $unstressend +támogatás $unstressend +felelőséget $unstressend +felelősséget $unstressend +felhasználni $unstressend +fordítsák $unstressend +szolgálják $unstressend +fordítható $unstressend +gazdaságot $unstressend +fizetnek $unstressend +utalványban $unstressend +találmány $unstressend +bevezettek $unstressend +hivatkozva $unstressend +bírálták $unstressend +szabadságát $unstressend +nyújtását $unstressend +támogatást $unstressend +bért $unstressend +juttatást $unstressend +elérhető $unstressend +adatok $unstressend +juttatás $unstressend +fizet $unstressend +számláit $unstressend +szinten $unstressend +rendszerét $unstressend +páron $unstressend +férfin $unstressend +emberen $unstressend +hátránya $unstressend +elvehetik $unstressend +árát $unstressend +önkormányzatoknál $unstressend +adják $unstressend +hírek $unstressend +kilós $unstressend +formájában $unstressend +annál $unstressend +ennél $unstressend +mondod $unstressend +funkciókat $unstressend +nyomom $unstressend +alakulni $unstressend +bajaim $unstressend +oprendszert $unstressend +szántam $unstressend +szántad $unstressend +benned $unstressend +használnom $unstressend +használsz $unstressend +közte $unstressend +tudnak $unstressend +megismerésére $unstressend +hasonlítgatnod $unstressend +értem $unstressend +használható $unstressend +úgytűnt $unstressend +állítható $unstressend +tűnt $unstressend +kedélyeket $unstressend +témára $unstressend +témáról $unstressend +laza $unstressend +mondjuk $unstressend +kijelenteni $unstressend +lehetősége $unstressend +kérnünk $unstressend +témában $unstressend +tűntek $unstressend +lehetnek $unstressend +megközelítésre $unstressend +szükség $unstressend +gondolunk $unstressend +egyszerű $unstressend +fordulatszám $unstressend +kapacitásról $unstressend +fogalmuk $unstressend +döntöttünk $unstressend +stílusú $unstressend +érthető $unstressend +megfogalmazott $unstressend +háttértároló $unstressend +alapú $unstressend +találhatók $unstressend +olvassák $unstressend +halljuk $unstressend +szerkezetűek $unstressend +alkatrész $unstressend +válasz $unstressend +tányér $unstressend +sebessége $unstressend +sebesség $unstressend +értelme $unstressend +eladótól $unstressend +tartalmaznak $unstressend +képesek $unstressend +egyet $unstressend +tárol $unstressend +adatot $unstressend +eltárolni $unstressend +megállapítható $unstressend +gyorsabb $unstressend +élettartama $unstressend +típus $unstressend +változat $unstressend +lassabb $unstressend +tönkre $unstressend +rövidebb $unstressend +cellán $unstressend +gyártók $unstressend +értékek $unstressend +szemléltetve $unstressend +váltakozhat $unstressend +pohár $unstressend +mennyiségét $unstressend +paraméter $unstressend +nézve $unstressend +gondolni $unstressend +elviselni $unstressend +felismerni $unstressend +oldani $unstressend +használhatatlanná $unstressend +harmadik $unstressend +működésről $unstressend +jelentené $unstressend +cella $unstressend +egyenlíteni $unstressend +optimalizálni $unstressend +celláról $unstressend +felvethet $unstressend +bele $unstressend +tárolunk $unstressend +adat $unstressend +soha $unstressend +felügyeli $unstressend +figyel $unstressend +törődnie $unstressend +számon $unstressend +használ $unstressend +kitalálható $unstressend +cellákra $unstressend +teher $unstressend +példát $unstressend +megtelítünk $unstressend +frissülnek $unstressend +találhatóak $unstressend +felületén $unstressend +tehet $unstressend +mondanánk $unstressend +megelőzésére $unstressend +minket $unstressend +érdekében $unstressend +tehetnek $unstressend +érdeme $unstressend +tárolni $unstressend +rendelkezik $unstressend +nevezik $unstressend +méretét $unstressend +életét $unstressend +árulnak $unstressend +emiatt $unstressend +tartalmaznak $unstressend +következik $unstressend +rosszabb $unstressend +hittük $unstressend +kitérünk $unstressend +adatokat $unstressend +helyükön $unstressend +kb $unstressend +blokk $unstressend +korlátozás $unstressend +történik $unstressend +volnánk $unstressend +kezdődik $unstressend +írásra $unstressend +műveleteket $unstressend +területeket $unstressend +takar $unstressend +helyzet $unstressend +szeretnénk $unstressend +lapot $unstressend +fájlunk $unstressend +fájl $unstressend +értelmeznünk $unstressend +gyűjtőneve $unstressend +elvégzik $unstressend +élettartamát $unstressend +igazság $unstressend +generációs $unstressend +típusok $unstressend +sebességét $unstressend +rendszernek $unstressend +tulajoknak $unstressend +programok $unstressend +futtatni $unstressend +eljárni $unstressend +használjuk $unstressend +tennivalónk $unstressend +létezik $unstressend +kérdés $unstressend +blokkok $unstressend +túlléptünk $unstressend +érdekesség $unstressend +léteznek $unstressend +beállítani $unstressend +átpakolni $unstressend +mértékére $unstressend +kezelik $unstressend +visszaállítását $unstressend +esetben $unstressend +valami $unstressend +kéne $unstressend +odafigyelni $unstressend +programba $unstressend +beállítás $unstressend +irányába $unstressend +erőltetik $unstressend +trendi $unstressend +módját $unstressend +nyomtatók $unstressend +monitorok $unstressend +évekből $unstressend +eszközt $unstressend +eszközöket $unstressend +régiek $unstressend +használják $unstressend +számítógépek $unstressend +László $unstressend +éves $unstressend +monitor $unstressend +szemet $unstressend +elavultak $unstressend +kezelni $unstressend +főosztájt $unstressend +selejtezés $unstressend +raktárra $unstressend +használhatatlan $unstressend +épületben $unstressend +konfiguráció $unstressend +modellek $unstressend +laptopok $unstressend +javasolják $unstressend +listán $unstressend +listában $unstressend +éles $unstressend +kompatibilisek $unstressend +szerepelnek $unstressend +95 $unstressend +fogjuk $unstressend +törekednek $unstressend +kapjon $unstressend +eleget $unstressend +kitölthető $unstressend +önöknek $unstressend +önöket $unstressend +fényesek $unstressend +szervezete $unstressend +kapuját $unstressend +manuál $unstressend +regiszter $unstressend +síp $unstressend +intonáció $unstressend +hangszert $unstressend +székházából $unstressend +szándékukat $unstressend +embereket $unstressend +plázát $unstressend +tárjuk $unstressend +társadalmat $unstressend +kérdőívét $unstressend +választani $unstressend +szakítani $unstressend +akad $unstressend +felkeresni $unstressend +oka $unstressend +kitölteni $unstressend +ellenőrzését $unstressend +vásárolt $unstressend +szokásos $unstressend +skálázták $unstressend +vehesse $unstressend +berendezések $unstressend +védelemmel $unstressend +lehetőséget $unstressend +lakók $unstressend +jelszóra $unstressend +lehessen $unstressend +kérdőívet $unstressend +rendszere $unstressend +csökkent $unstressend +csökken $unstressend +ideje $unstressend +megmondja $unstressend +sújtható $unstressend +megbüntetésére $unstressend +alkalmazzák $unstressend +kijelentik $unstressend +kérdésekre $unstressend +vonatkoznak $unstressend +döntenek $unstressend +játszana $unstressend + // word pairs @@ -2087,7 +2402,7 @@ ny En^ ø $accent ß _^_DE -//… _p%ontp%ontp%ont // 3 or more dots are changed to elipsis +… _p%ontp%ontp%ont // 3 or more dots are changed to elipsis . p%ont $max3 _. pont * tSillAg $max3 diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 0b1f4f6e..e1e74d1f 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -576,6 +576,8 @@ harmince) gy (edik J: _í) gy (jár J száze) gy (es J: huszone) gy (es J: + _e) gy (é_ J: +_mint-e) gy (é_ J: .group h h h @@ -609,6 +611,7 @@ huszone) gy (es J: _sz) í (vattákk i _sz) í (vató i _v) í (zi i //for example vízipipa, vízimentők beginning words need spokening i, not i: phoneme + _v) í (zió i: //But this word an exception for prewious rule .group j j j @@ -891,8 +894,7 @@ pedagógu) s (sztrájk S _fúvó) s (zene S identitá) s (zavar S fáklyá) s (zen S - - + _ki) s (zombor S .group ss ssz ss2 @@ -1129,6 +1131,7 @@ _farka) ssz (ig Ss alvá) ssz (eg Ss lako) ssz (ám Ss _szencsége) ssz (űz Ss + ki) ssz (ekrény Ss .group sz @@ -1559,6 +1562,8 @@ támogato) ts (ág tS: _á) tsz (orong t|s _á) tsz (orít t|s _á) tsz (olgál t|s +felira) ts (áv t|S + pö) tsz (en ts: .group tt tt t: diff --git a/espeak-data/voices/mb/mb-tr2 b/espeak-data/voices/mb/mb-tr2 index 158a0440..1dfbf953 100644 --- a/espeak-data/voices/mb/mb-tr2 +++ b/espeak-data/voices/mb/mb-tr2 @@ -2,7 +2,7 @@ name turkish-mbrola-1 language tr 7 gender female -pitch 140 220 +pitch 160 230 voicing 170 mbrola tr2 tr1_phtrans diff --git a/phsource/compile_report b/phsource/compile_report index b90acf1d..241a03ec 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -394,7 +394,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [hÖq] base +l/l@ [h–] base [l#] base [l] fr [l/2] fr @@ -428,7 +428,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [hÖq] base +l/la [h–] base [l#] base [l] fr [l/2] fr @@ -436,7 +436,7 @@ l/la [h [K] tn l/l_a [l/3] base [l/] fr -l/le [hÖq] base +l/le [h–] base [l#] base [l] fr [l/2] fr @@ -448,7 +448,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [hÖq] base +l/li [h–] base [l#] base [l] fr [l/2] fr @@ -462,7 +462,7 @@ ll/ll [L] bg ll/_ll [L] bg l/l_long [l] base [l] fr -l/lo [hÖq] base +l/lo [h–] base [l#] base [l/2] fr [K] nso @@ -472,7 +472,7 @@ l/l_o [l/3] base l^/l_rfx [l.] base [l] ru [l^] ru -l/lu [hÖq] base +l/lu [h–] base [l#] base [l] fr [l/2] fr diff --git a/src/compiledata.cpp b/src/compiledata.cpp index e08be89d..32add637 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -1264,7 +1264,6 @@ static int NextItem(int type) unsigned char c2; int ix; int sign; - int keyword; char *p; keywtab_t *pk; @@ -1332,8 +1331,6 @@ static int NextItem(int type) if(!feof(f_in)) unget_char(c); - keyword = -1; - if(type == tSTRING) { return(0); diff --git a/src/compiledict.cpp b/src/compiledict.cpp index cecd618e..5655955c 100644 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -31,9 +31,6 @@ #include "synthesize.h" #include "translate.h" -//#define OPT_FORMAT // format the text and write formatted copy to Log file -//#define OUTPUT_FORMAT - extern void Write4Bytes(FILE *f, int value); int HashDictionary(const char *string); @@ -390,13 +387,11 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) int all_upper_case; char *mnemptr; - char *comment; unsigned char flag_codes[100]; char encoded_ph[200]; unsigned char bad_phoneme[4]; static char nullstring[] = {0}; - comment = NULL; text_not_phonemes = 0; phonetic = word = nullstring; @@ -497,7 +492,6 @@ step=1; // TEST if((c == '/') && (p[1] == '/') && (multiple_words==0)) { c = '\n'; /* "//" treat comment as end of line */ - comment = p; } switch(step) @@ -591,12 +585,6 @@ step=1; // TEST if(word[0] == 0) { -#ifdef OPT_FORMAT - if(comment != NULL) - fprintf(f_log,"%s",comment); - else - fputc('\n',f_log); -#endif return(0); /* blank line */ } @@ -747,35 +735,6 @@ step=1; // TEST } dict_line[0] = length; -#ifdef OPT_FORMAT - spaces = 16; - for(ix=0; ix= 100) - { - fprintf(f_log,"?%d ",flag_codes[ix]-100); - spaces -= 3; - } - } - - fprintf(f_log,"%s",word); - spaces -= strlen(word); - DecodePhonemes(encoded_ph,decoded_ph); - while(spaces-- > 0) fputc(' ',f_log); - spaces += (14 - strlen(decoded_ph)); - - fprintf(f_log," %s",decoded_ph); - while(spaces-- > 0) fputc(' ',f_log); - for(ix=0; ixletter_bits_offset > 0) && (c < 0x241)) @@ -868,10 +867,7 @@ int Unpronouncable(Translator *tr, char *word, int posn) break; } - if(c == '\'') - apostrophe = 1; - else - if(!iswalpha(c)) + if((c != '\'') && !iswalpha(c)) return(0); } @@ -1123,7 +1119,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int final_ph2; int mnem; int mnem2; - int post_tonic; + int post_tonic; // currently not used int opt_length; int done; int stressflags; @@ -1387,7 +1383,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, { int wt; int max_weight = -1; - int prev_stressed; +// int prev_stressed; // find the heaviest syllable, excluding the final syllable for(ix = 1; ix < (vowel_count-1); ix++) @@ -1397,7 +1393,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, if((wt = syllable_weight[ix]) >= max_weight) { max_weight = wt; - prev_stressed = stressed_syllable; +// prev_stressed = stressed_syllable; stressed_syllable = ix; } } @@ -2166,7 +2162,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ // next 3 bytes are a (non-zero) ending type. 2 bytes of flags + suffix length end_type = (rule[0] << 16) + ((rule[1] & 0x7f) << 8) + (rule[2] & 0x7f); - if((tr->word_vowel_count == 0) && !(end_type & SUFX_P)) + if((tr->word_vowel_count == 0) && !(end_type & SUFX_P) && (tr->langopts.param[LOPT_SUFFIX] & 1)) failed = 1; // don't match a suffix rule if there are no previous syllables (needed for lang=tr). else { @@ -2435,9 +2431,8 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c Append the result to 'phonemes' and any standard prefix/suffix in 'end_phonemes' */ unsigned char c, c2; - unsigned int c12, c123; + unsigned int c12; int wc=0; - int wc_prev; int wc_bytes; char *p2; /* copy of p for use in double letter chain match */ int found; @@ -2497,7 +2492,6 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c while(((c = *p) != ' ') && (c != 0)) { - wc_prev = wc; wc_bytes = utf8_in(&wc,p); if(IsAlpha(wc)) any_alpha++; @@ -2540,7 +2534,6 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c /* there are some 2 byte chains for this initial letter */ c2 = p[1]; c12 = c + (c2 << 8); /* 2 characters */ - c123 = c12 + (p[2] << 16); g1 = tr->groups2_start[c]; for(g=g1; g < (g1+n); g++) @@ -3213,13 +3206,10 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor if(option_phonemes == 2) { - unsigned int flags1 = 0; char ph_decoded[N_WORD_PHONEMES]; int textmode; DecodePhonemes(phonetic,ph_decoded); - if(flags != NULL) - flags1 = flags[0]; if((dictionary_flags & FLAG_TEXTMODE) == 0) textmode = 0; diff --git a/src/espeak.cpp b/src/espeak.cpp index b7fbf1cc..b9add838 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -127,7 +127,6 @@ void DisplayVoices(FILE *f_out, char *language) const char *p; int len; int count; - int scores = 0; const espeak_VOICE *v; const char *lang_name; char age_buf[12]; @@ -144,7 +143,6 @@ void DisplayVoices(FILE *f_out, char *language) voice_select.gender = 0; voice_select.name = NULL; voices = espeak_ListVoices(&voice_select); - scores = 1; } else { @@ -179,8 +177,6 @@ void DisplayVoices(FILE *f_out, char *language) count++; p += len+2; } -// if(scores) -// fprintf(f_out,"%3d ",v->score); fputc('\n',f_out); } } // end of DisplayVoices @@ -391,14 +387,10 @@ int main (int argc, char **argv) espeak_VOICE voice_select; char filename[200]; char voicename[40]; - char voice_mbrola[20]; - char dictname[40]; #define N_PUNCTLIST 100 wchar_t option_punctlist[N_PUNCTLIST]; voicename[0] = 0; - voice_mbrola[0] = 0; - dictname[0] = 0; wavefile[0] = 0; filename[0] = 0; option_punctlist[0] = 0; diff --git a/src/event.cpp b/src/event.cpp index cc696272..fe2aa9b0 100644 --- a/src/event.cpp +++ b/src/event.cpp @@ -386,13 +386,17 @@ static int sleep_until_timeout_or_stop_request(uint32_t time_in_ms) ENTER("sleep_until_timeout_or_stop_request"); int a_stop_is_required=0; - struct timespec ts, to; + struct timespec ts; struct timeval tv; int err=0; clock_gettime2( &ts); + +#ifdef DEBUG_ENABLED + struct timespec to; to.tv_sec = ts.tv_sec; to.tv_nsec = ts.tv_nsec; +#endif add_time_in_ms( &ts, time_in_ms); diff --git a/src/extras.cpp b/src/extras.cpp index 23fcba48..615d414b 100644 --- a/src/extras.cpp +++ b/src/extras.cpp @@ -325,7 +325,7 @@ void Lexicon_It(int pass) char buf_out[200]; char buf_error[200]; char last_listx[200]; -int test; + static const char *vowels1 = "aeiou"; static const char *vowels2 = "aeou"; @@ -913,7 +913,6 @@ void Lexicon_Bg() char *pw; char *pw1; int cc; - int ix; int vcount; int lex_stress; int input_length; @@ -929,7 +928,6 @@ void Lexicon_Bg() FILE *f_in; FILE *f_out; - FILE *f_log; char word[80]; char word_in[80]; @@ -967,9 +965,6 @@ void Lexicon_Bg() return; } -// sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"bg_log"); -// f_log = fopen(fname,"w"); - LoadVoice("bg",0); progress = new wxProgressDialog(_T("Lexicon"),_T(""),input_length); @@ -1107,7 +1102,6 @@ if(n_stress > 1) n_stress = 1; fclose(f_in); fclose(f_out); -// fclose(f_log); CompileDictionary(path_dsource,"bg",NULL,NULL,0); @@ -1138,7 +1132,6 @@ void Lexicon_Ru() FILE *f_in; FILE *f_out; FILE *f_log; - FILE *f_roots; PHONEME_TAB *ph; int ph_code; int vcount; @@ -1151,10 +1144,6 @@ void Lexicon_Ru() int wlength; int input_length; - int sfx; - const char *suffix; - int wlen; - int len; int check_root; char word[80]; @@ -1173,6 +1162,12 @@ void Lexicon_Ru() int syllables; } SUFFIX; +#ifdef deleted + FILE *f_roots; + int sfx; + const char *suffix; + int wlen; + int len; static SUFFIX suffixes[] = { {NULL,0}, {"ичу",2}, @@ -1192,7 +1187,7 @@ void Lexicon_Ru() {"и",1}, {NULL,0}}; - +#endif memset(counts,0,sizeof(counts)); diff --git a/src/fifo.cpp b/src/fifo.cpp index 95d5ab1e..39e314d6 100644 --- a/src/fifo.cpp +++ b/src/fifo.cpp @@ -281,48 +281,52 @@ static int sleep_until_start_request_or_inactivity() // for filtering underflow. // int i=0; - while((i<= MAX_INACTIVITY_CHECK) && !a_start_is_required) - { - if (wave_is_busy( NULL) ) + while((i<= MAX_INACTIVITY_CHECK) && !a_start_is_required) { - i = 0; - } + if (wave_is_busy( NULL) ) + { + i = 0; + } else - { - i++; - } + { + i++; + } - int err=0; - struct timespec ts, to; - struct timeval tv; - - clock_gettime2( &ts); - to.tv_sec = ts.tv_sec; - to.tv_nsec = ts.tv_nsec; - - add_time_in_ms( &ts, INACTIVITY_TIMEOUT); - - SHOW("fifo > sleep_until_start_request_or_inactivity > start sem_timedwait (start_is_required) from %d.%09lu to %d.%09lu \n", - to.tv_sec, to.tv_nsec, - ts.tv_sec, ts.tv_nsec); - - while ((err = sem_timedwait(&my_sem_start_is_required, &ts)) == -1 - && errno == EINTR) - { - continue; + int err=0; + struct timespec ts; + struct timeval tv; + + clock_gettime2( &ts); + +#ifdef DEBUG_ENABLED + struct timespec to; + to.tv_sec = ts.tv_sec; + to.tv_nsec = ts.tv_nsec; +#endif + + add_time_in_ms( &ts, INACTIVITY_TIMEOUT); + + SHOW("fifo > sleep_until_start_request_or_inactivity > start sem_timedwait (start_is_required) from %d.%09lu to %d.%09lu \n", + to.tv_sec, to.tv_nsec, + ts.tv_sec, ts.tv_nsec); + + while ((err = sem_timedwait(&my_sem_start_is_required, &ts)) == -1 + && errno == EINTR) + { + continue; + } + + assert (gettimeofday(&tv, NULL) != -1); + SHOW("fifo > sleep_until_start_request_or_inactivity > stop sem_timedwait (start_is_required, err=%d) %d.%09lu \n", err, + tv.tv_sec, tv.tv_usec*1000); + + if (err==0) + { + a_start_is_required = 1; + } } - - assert (gettimeofday(&tv, NULL) != -1); - SHOW("fifo > sleep_until_start_request_or_inactivity > stop sem_timedwait (start_is_required, err=%d) %d.%09lu \n", err, - tv.tv_sec, tv.tv_usec*1000); - - if (err==0) - { - a_start_is_required = 1; - } - } - SHOW_TIME("fifo > sleep_until_start_request_or_inactivity > LEAVE"); - return a_start_is_required; + SHOW_TIME("fifo > sleep_until_start_request_or_inactivity > LEAVE"); + return a_start_is_required; } //> diff --git a/src/intonation.cpp b/src/intonation.cpp index 4ac6810c..891c3901 100644 --- a/src/intonation.cpp +++ b/src/intonation.cpp @@ -787,10 +787,6 @@ static int calc_pitches2(int start, int end, int tune_number) int ix; TUNE *tune; int drop; - int continuing = 0; - - if(start > 0) - continuing = 1; tune = &tunes[tune_number]; ix = start; @@ -941,7 +937,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone) PHONEME_TAB *tph; PHONEME_TAB *prev_tph; // forget across word boundary PHONEME_TAB *prevw_tph; // remember across word boundary - PHONEME_TAB *prev2_tph; // 2 tones previous +// PHONEME_TAB *prev2_tph; // 2 tones previous PHONEME_LIST *prev_p; int pitch_adjust = 0; // pitch gradient through the clause - inital value @@ -949,8 +945,6 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone) int pitch_low = 0; // until it drops to this int pitch_high = 0; // then reset to this - p = &phoneme_list[0]; - // count number of stressed syllables p = &phoneme_list[0]; for(ix=0; ix=0) - { - f = -1; - } - + +//NOTE, changes made 30.09.2011 for Reece Dunn +// fix a sound spike when f=0 + /* First compute ordinary resonator coefficients */ /* Let r = exp(-pi bw t) */ arg = kt_globals.minus_pi_t * bw; @@ -905,9 +903,17 @@ static void setzeroabc(long int f, long int bw, resonator_ptr rp) rp->a = 1.0 - rp->b - rp->c; /* Now convert to antiresonator coefficients (a'=1/a, b'=b/a, c'=c/a) */ - rp->a = 1.0 / rp->a; - rp->c *= -rp->a; - rp->b *= -rp->a; + /* If f == 0 then rp->a gets set to 0 which makes a'=1/a set a', b' and c' to + * INF, causing an audible sound spike when triggered (e.g. apiration with the + * nasal register set to f=0, bw=0). + */ + if (rp->a != 0) + { + /* Now convert to antiresonator coefficients (a'=1/a, b'=b/a, c'=c/a) */ + rp->a = 1.0 / rp->a; + rp->c *= -rp->a; + rp->b *= -rp->a; + } } diff --git a/src/mbrowrap.cpp b/src/mbrowrap.cpp index 4c9158be..bc5c7436 100644 --- a/src/mbrowrap.cpp +++ b/src/mbrowrap.cpp @@ -153,6 +153,7 @@ static int start_mbrola(const char *voice_path) snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), "dup2(): %s\n", strerror(errno)); written = write(p_stderr[1], mbr_errorbuf, strlen(mbr_errorbuf)); + (void)written; // suppress 'variable not used' warning _exit(1); } @@ -170,6 +171,7 @@ static int start_mbrola(const char *voice_path) snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), "mbrola: %s\n", strerror(errno)); written = write(2, mbr_errorbuf, strlen(mbr_errorbuf)); + (void)written; // suppress 'variable not used' warning _exit(1); } diff --git a/src/numbers.cpp b/src/numbers.cpp index b17398ac..16aad777 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -506,7 +506,6 @@ void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_b static char single_letter[10] = {0,0}; unsigned int dict_flags[2]; char ph_buf3[40]; - char *ptr; ph_buf1[0] = 0; len = utf8_out(letter,&single_letter[2]); @@ -552,7 +551,6 @@ void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_b // if the $accent flag is set for this letter, use the accents table (below) dict_flags[1] = 0; - ptr = &single_letter[1]; if(Lookup(tr, &single_letter[1], ph_buf3) == 0) { @@ -1586,7 +1584,6 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int decimal_count; int max_decimal_count; int decimal_mode; - int hyphen; int suffix_ix; int skipwords = 0; char *p; @@ -1651,12 +1648,10 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned // NOTE lang=hu, allow both dot and ordinal suffix, eg. "december 21.-én" // look for an ordinal number suffix after the number ix++; - hyphen = 0; p = suffix; if(wtab[0].flags & FLAG_HYPHEN_AFTER) { *p++ = '-'; - hyphen = 1; ix++; } while((word[ix] != 0) && (word[ix] != ' ') && (ix < (int)(sizeof(suffix)-1))) diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index 5cf84d84..61ebab17 100644 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -114,7 +114,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) int insert_ph = 0; PHONEME_LIST *phlist; PHONEME_TAB *ph; - PHONEME_TAB *prev, *next, *next2; + PHONEME_TAB *next, *next2; int unstress_count = 0; int word_stress = 0; int switched_language = 0; @@ -123,7 +123,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) int regression; int end_sourceix; int alternative; - int first_vowel=0; // first vowel in a word PHONEME_DATA phdata; int n_ph_list3; @@ -131,8 +130,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) PHONEME_LIST *plist3_inserted = NULL; PHONEME_LIST ph_list3[N_PHONEME_LIST]; - static PHONEME_LIST2 ph_list2_null = {0,0,0,0,0,0}; - PHONEME_LIST2 *plist2 = &ph_list2_null; + PHONEME_LIST2 *plist2; plist2 = ph_list2; phlist = phoneme_list; @@ -302,8 +300,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) for(j=0; insert_ph || ((j < n_ph_list3) && (ix < N_PHONEME_LIST-3)); j++) { - prev = ph; - plist3 = &ph_list3[j]; if(insert_ph != 0) @@ -448,9 +444,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) } } - if(ph->type == phVOWEL) - first_vowel = 0; - if((plist3+1)->synthflags & SFLAG_LENGTHEN) { static char types_double[] = {phFRICATIVE,phVFRICATIVE,phNASAL,phLIQUID,0}; diff --git a/src/readclause.cpp b/src/readclause.cpp index 25efa42d..80b61a09 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -472,10 +472,8 @@ static int GetC(void) int cbuf[4]; int ix; int n_bytes; - unsigned char m; static int ungot2 = 0; static const unsigned char mask[4] = {0xff,0x1f,0x0f,0x07}; - static const unsigned char mask2[4] = {0,0x80,0x20,0x30}; if((c1 = ungot_char) != 0) { @@ -516,7 +514,6 @@ static int GetC(void) if((ix = n_bytes) > 0) { c = c1 & mask[ix]; - m = mask2[ix]; while(ix > 0) { if((c2 = cbuf[ix] = GetC_get()) == 0) @@ -535,7 +532,6 @@ static int GetC(void) GetC_unget(c2); break; } - m = 0x80; c = (c << 6) + (c2 & 0x3f); ix--; } @@ -1435,6 +1431,9 @@ void SetVoiceStack(espeak_VOICE *v, const char *variant_name) sp->voice_variant_number = v->variant; sp->voice_age = v->age; sp->voice_gender = v->gender; + + if(memcmp(variant_name, "!v/", 3) == 0) + variant_name += 3;// strip variant directory name strncpy0(base_voice_variant_name, variant_name, sizeof(base_voice_variant_name)); memcpy(&base_voice, ¤t_voice_selected, sizeof(base_voice)); } @@ -2094,7 +2093,6 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix int punct_data = 0; int is_end_clause; int announced_punctuation = 0; - int prev_announced_punctuation; int stressed_word = 0; int end_clause_after_tag = 0; int end_clause_index = 0; @@ -2502,7 +2500,6 @@ if(option_ssml) parag=1; linelength = 0; } - prev_announced_punctuation = announced_punctuation; announced_punctuation = 0; if((phoneme_mode==0) && (sayas_mode==0)) diff --git a/src/speak.cpp b/src/speak.cpp index ea5ab73e..e74208f4 100644 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -159,7 +159,6 @@ void DisplayVoices(FILE *f_out, char *language) const char *p; int len; int count; - int scores = 0; const espeak_VOICE *v; const char *lang_name; char age_buf[12]; @@ -176,7 +175,6 @@ void DisplayVoices(FILE *f_out, char *language) voice_select.gender = 0; voice_select.name = NULL; voices = espeak_ListVoices(&voice_select); - scores = 1; } else { @@ -211,8 +209,6 @@ void DisplayVoices(FILE *f_out, char *language) count++; p += len+2; } -// if(scores) -// fprintf(f_out,"%3d ",v->score); fputc('\n',f_out); } } // end of DisplayVoices @@ -511,11 +507,9 @@ int main (int argc, char **argv) espeak_VOICE voice_select; char filename[200]; char voicename[40]; - char dictname[40]; voicename[0] = 0; mbrola_name[0] = 0; - dictname[0] = 0; wavefile[0] = 0; filename[0] = 0; option_linelength = 0; diff --git a/src/speak_lib.cpp b/src/speak_lib.cpp index 7e68ea29..187a22ed 100644 --- a/src/speak_lib.cpp +++ b/src/speak_lib.cpp @@ -95,11 +95,9 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) case AUDIO_OUTPUT_PLAYBACK: { int event_type=0; - int event_data=0; if(event) { event_type = event->type; - event_data = event->id.number; } if(event_type == espeakEVENT_SAMPLERATE) diff --git a/src/spectdisplay.cpp b/src/spectdisplay.cpp index aaf2b8d3..376fdd61 100644 --- a/src/spectdisplay.cpp +++ b/src/spectdisplay.cpp @@ -533,7 +533,6 @@ void SpectDisplay::OnKey(wxKeyEvent& event) int keyfr; int control; int number; - double value; SpectFrame *sf; peak_t *pk; // static short pk_inc1[N_PEAKS] = {2,2,2,5,5,5,5,5,5}; @@ -785,10 +784,6 @@ void SpectDisplay::OnKey(wxKeyEvent& event) display = 3; break; - case 0x1052: // CTRL-R - value = sf->GetRms(spectseq->amplitude); - break; - case 0x1053: // CTRL-S Save(savepath); break; @@ -1023,7 +1018,7 @@ void MyFrame::OnNewWindow(wxCommandEvent& event) else path_spectload2 = path.GetPath(); - // Make another frame, containing a canvas + // Make another frame, containing a canvas GetClientSize(&width, &height); MyChild *subframe = new MyChild(myframe, _T("Spectrum"), wxPoint(10, 0), wxSize(500, height), diff --git a/src/spectseq.cpp b/src/spectseq.cpp index c383d6d7..3c4c14b9 100644 --- a/src/spectseq.cpp +++ b/src/spectseq.cpp @@ -462,14 +462,13 @@ int SpectSeq::ImportSPC2(wxInputStream & stream) int n_cycles = 0; int x; CYCLE cy; - int pos; /* count number of cycles */ while(!stream.Eof()) { -pos = stream.TellI(); + stream.TellI(); stream.Read(&cy,44); -pos = stream.TellI(); + stream.TellI(); if(stream.Eof()) break; n_cycles++; @@ -993,7 +992,6 @@ void SpectSeq::MakeWave(int start, int end, PitchEnvelope &pitch) float sum_length=0; float prev_length=0; int first; - int pbase; char *fname_speech; SpectFrame *sp1 = NULL; SpectFrame *sp2; @@ -1033,7 +1031,6 @@ void SpectSeq::MakeWave(int start, int end, PitchEnvelope &pitch) } total_length = int(sum_length); - pbase = voice->pitch_base >> 12; if((start==end) || (total_length == 0)) { @@ -1117,8 +1114,6 @@ void SpectFrame::MakeWaveF(int control, PitchEnvelope &pitche, int amplitude, in int y; peak_t peaks0[N_PEAKS]; peak_t peaks1[N_PEAKS]; - int ipitch; - int pbase; char *fname_speech; int synthesizer_type = 0; @@ -1131,12 +1126,10 @@ void SpectFrame::MakeWaveF(int control, PitchEnvelope &pitche, int amplitude, in SpeakNextClause(NULL,NULL,2); // stop speaking file length = duration; - ipitch = int(pitch) << 16; if(length==0) length = 200; // default length, mS len_samples = (length * samplerate) / 1000; - pbase = voice->pitch_base >> 12; SetPitch(len_samples + 50,pitche.env,9,44); fname_speech = WavFileName(); diff --git a/src/synth_mbrola.cpp b/src/synth_mbrola.cpp index 6d1841a9..5e1f8bb1 100644 --- a/src/synth_mbrola.cpp +++ b/src/synth_mbrola.cpp @@ -413,7 +413,6 @@ int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbr PHONEME_TAB *ph_prev; PHONEME_LIST *p; PHONEME_LIST *next; - PHONEME_LIST *prev; PHONEME_DATA phdata; FMT_PARAMS fmtp; int pause = 0; @@ -445,7 +444,6 @@ int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbr p = &plist[phix]; next = &plist[phix+1]; - prev = &plist[phix-1]; ph = p->ph; ph_prev = plist[phix-1].ph; ph_next = plist[phix+1].ph; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index f8bf6c01..a60f41a1 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.45.43 16.Sep.11"; +const char *version_string = "1.45.45 07.Oct.11"; const int version_phdata = 0x014500; int option_device_number = -1; @@ -644,13 +644,6 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, if(plist[0].sourceix) return(false); } -// if(which==7) -// { -// // nextPh2 not word boundary -// if((plist[1].sourceix) || (plist[2].sourceix)) -// return(false); -// } - if(which==6) { // nextVowel, not word boundary @@ -686,7 +679,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, } ph = plist->ph; - if(instn2 < 8) + if(instn2 < 7) { // 'data' is a phoneme number if((phoneme_tab[data]->mnemonic == ph->mnemonic) == true) diff --git a/src/synthesize.cpp b/src/synthesize.cpp index 91a97a31..5c845228 100644 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -1319,7 +1319,6 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) unsigned char *pitch_env=NULL; unsigned char *amp_env; PHONEME_TAB *ph; - PHONEME_TAB *prev_ph; static int sourceix=0; PHONEME_DATA phdata; @@ -1605,10 +1604,6 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) if(p->ph->phflags & phTRILL) modulation = 5; - prev_ph = prev->ph; -// if(p->newword) -// prev_ph = phoneme_tab[phonPAUSE]; // pronounce fully at the start of a word - if(!(p->synthflags & SFLAG_SEQCONTINUE)) { DoAmplitude(p->amp,NULL); diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 0f696c5b..10e6fee2 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -1262,6 +1262,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable tr->langopts.stress_flags = 0x20; //no automatic secondary stress + tr->langopts.param[LOPT_SUFFIX] = 1; if(name2 == L('a','z')) { diff --git a/src/translate.cpp b/src/translate.cpp index 0498d976..6acaaca8 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -798,7 +798,6 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt int prefix_stress; char *wordx; char phonemes[N_WORD_PHONEMES]; - char *ph_limit; char prefix_phonemes[N_WORD_PHONEMES]; char unpron_phonemes[N_WORD_PHONEMES]; char end_phonemes[N_WORD_PHONEMES]; @@ -846,7 +845,6 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt unpron_phonemes[0] = 0; prefix_phonemes[0] = 0; end_phonemes[0] = 0; - ph_limit = &phonemes[N_WORD_PHONEMES]; if(tr->data_dictlist == NULL) { @@ -2366,7 +2364,6 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t int prev_in; int prev_out=' '; int prev_out2; - int prev_in2=0; int prev_in_save=0; int next_in; int next_in_nbytes; @@ -2390,7 +2387,6 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t char *p; int j, k; int n_digits; - int individual_digits; int charix_top=0; short charix[N_TR_SOURCE+4]; @@ -2541,7 +2537,6 @@ p = source; else if(source_index > 0) { - prev_in2 = prev_in; utf8_in2(&prev_in,&source[source_index-1],1); // prev_in = source[source_index-1]; } @@ -3137,7 +3132,6 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre pn = &number_buf[1]; nx = n_digits; nw = 0; - individual_digits = 0; if((n_digits > tr->langopts.max_digits) || (word[0] == '0')) words[ix].flags |= FLAG_INDIVIDUAL_DIGITS; diff --git a/src/translate.h b/src/translate.h index 0db85a5e..6c843efd 100644 --- a/src/translate.h +++ b/src/translate.h @@ -256,7 +256,7 @@ extern const int param_defaults[N_SPEECH_PARAM]; -#define N_LOPTS 19 +#define N_LOPTS 20 #define LOPT_DIERESES 1 // 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables // bit 4=0, if stress < 4, bit 4=1, if not the highest stress in the word @@ -323,6 +323,9 @@ extern const int param_defaults[N_SPEECH_PARAM]; // recognize long vowels (0 = don't recognize) #define LOPT_LONG_VOWEL_THRESHOLD 18 + // bit 0: Don't allow suffices if there is no previous syllable +#define LOPT_SUFFIX 19 + // stress_rule #define STRESSPOSN_1L 0 // 1st syllable diff --git a/src/voices.cpp b/src/voices.cpp index 2bc7813e..06e5f963 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -532,7 +532,6 @@ voice_t *LoadVoice(const char *vname, int control) int n; int value; int value2; - int error = 0; int langix = 0; int tone_only = control & 2; int language_set = 0; @@ -986,7 +985,7 @@ voice_t *LoadVoice(const char *vname, int control) } voice->phoneme_tab_ix = ix; new_translator->phoneme_tab_ix = ix; - error = LoadDictionary(new_translator, new_dictionary, control & 4); + LoadDictionary(new_translator, new_dictionary, control & 4); if(dictionary_name[0]==0) return(NULL); // no dictionary loaded diff --git a/src/vowelchart.cpp b/src/vowelchart.cpp index 211c09e0..642bd66c 100644 --- a/src/vowelchart.cpp +++ b/src/vowelchart.cpp @@ -391,7 +391,6 @@ void FindPhonemesUsed(void) int hash; char *p; unsigned int *pw; - char *start; char *next; unsigned char c; int count = 0; @@ -449,7 +448,6 @@ void FindPhonemesUsed(void) if(c == RULE_PHONEMES) { ignore = 0; - start = p; p++; while((c = *p) != 0) { @@ -592,7 +590,6 @@ void MakeVowelLists(void) int colour; int voice_found; PHONEME_PROG_LOG *prog_log_table; - PHONEME_PROG_LOG *prog_log_end; PHONEME_PROG_LOG *found_prog; PHONEME_PROG_LOG this_prog; char dirname[sizeof(path_source)+20]; @@ -613,7 +610,6 @@ void MakeVowelLists(void) return; ix = fread(prog_log_table, 1, ix, f_prog_log); fclose(f_prog_log); - prog_log_end = prog_log_table + ix; n_prog_log = ix / sizeof(PHONEME_PROG_LOG); progress = new wxProgressDialog(_T("Vowel charts"),_T(""),n_phoneme_tables); diff --git a/src/wave.cpp b/src/wave.cpp index 4e60c52f..bd53f862 100644 --- a/src/wave.cpp +++ b/src/wave.cpp @@ -606,7 +606,7 @@ static void update_output_parameters(int selectedDevice, const PaDeviceInfo *dev if (deviceInfo) { double aLatency = deviceInfo->defaultLowOutputLatency; - double aCoeff = round(0.100 / aLatency); +// double aCoeff = round(0.100 / aLatency); // myOutputParameters.suggestedLatency = aCoeff * aLatency; // to avoid glitches ? myOutputParameters.suggestedLatency = aLatency; // for faster response ? SHOW("Device=%d, myOutputParameters.suggestedLatency=%f, aCoeff=%f\n",