Topics

Updates to Github #github


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #785 Full stop only recognized when followed by an uppercase letter?
By jaacoppi:

clause endings are determined by bool is_end_clause in 'readclause.c'. I think the code basically says "look for a . followed by a capital letter". I'm unaware of any existing rule or option to change that.

Language specific rules are mostly in tr_languages.c and struct langopts in translate.h. We are trying to phase out tr_languages.c so I'm not sure where the new code should go to.

Please define what you need for Cherokee. Is it enough to state that any "." is always a full stop and "." is never used for anything else, or are there special cases such as abbreviations or ordinal numbers?


[espeak-ng:master] New Comment on Issue #781 Documentation Request: How to adjust pauses between words, sentences, etc?
By jaacoppi:

Does #785 cover this or do you need something else?


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #692 Crash when folder has accented character
By jaacoppi:

NVDA has closed this. Should we?


[espeak-ng:master] New Comment on Issue #664 the Chinese pronunciation is wrong
By jaacoppi:

Should this be closed?


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #664 the Chinese pronunciation is wrong
By valdisvi:

We could decide to close issue when it is fixed in code, but some of authors may consider issue resolved only when they got it fixed on their computer. Therefore policy in contributor guideline is that author closes it when it is resolved. But, we can decide to do it differently.


[espeak-ng:master] New Comment on Issue #664 the Chinese pronunciation is wrong
By valdisvi:

We could close issue when it is fixed in code, but some of authors may consider issue resolved only when they got it fixed on their computer. Therefore policy in contributor guideline is that author closes it when it is resolved. But, we can decide to do it differently.


[espeak-ng:master] New Comment on Issue #685 Voice Chinese (Mandarin): some characters are reported two times
By jaacoppi:

Did some digging. This is a duplicate of #606.


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #692 Crash when folder has accented character
By rhdunn:

Thanks. Resolving as fixed.


[espeak-ng:master] Issue #692 Crash when folder has accented character closed by Qchristensen.


[espeak-ng:master] Label added to issue #692 Crash when folder has accented character by Qchristensen.


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #692 Crash when folder has accented character
By lukaszgo1:

Why exactly have you closed this? The solution employed in NVDA is merely an work around that is if eSpeak files are placed in a path with accented character eSpeak cannot be used and NVDA falls back to the another synthesizer assuming that any other engine is available.


[espeak-ng:master] New Comment on Issue #606 Chinese dictionary multiple match
By jaacoppi:

I'm using 貸款 as an example. It's (貸 款) dai4kuan3 in dictsource/extra/zh_listx.

I think the expected behaviour is that espeak finds 貸 款 from the dictionary file, replaces it with dai4kuan3 for speaking out the phoneme and then sets dictionary_skipwords to mark that 款 has already been translated/spoken as part of the previous word and should be skipped.

Actual behaviour seems to be that dictionary_skipwords has no effect and thus 款 is spoken twice.

A dirty fix is to remove the whitespace in in dictsource/extra/zh_listx: (貸款) dai4kuan3. I don't know if this breaks something else.


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #785 Full stop only recognized when followed by an uppercase letter?
By michael-conrad:

I think this issue would be better addressed via the documentation ticket.

As far as Cherokee goes and other North American languages, there needs to be a way to explicitly set stress via rules or dictionary that don't get changed, ever, by the phoneme generation code. The dialect of Cherokee that I'm currently working on is strictly unstressed, and I seem to get odd consonant and vowel combination changes even if I select all stressed with all stress strengths and lengths set the same in the config files. If I set the stress pattern to any other setting, even though I have all stressed defined identical, the engine still generates different lengths for stressed vs unstressed forms.


[espeak-ng:master] New Comment on Issue #785 Full stop only recognized when followed by an uppercase letter?
By michael-conrad:

I think this issue would be better addressed via the documentation ticket as I'm using a romanized pronunciation orthography from the Cherokee English Dictionary.

As far as Cherokee goes and other North American languages, there needs to be a way to explicitly set stress via rules or dictionary that don't get changed, ever, by the phoneme generation code. The dialect of Cherokee that I'm currently working on is strictly unstressed, and I seem to get odd consonant and vowel combination changes even if I select all stressed with all stress strengths and lengths set the same in the config files. If I set the stress pattern to any other setting, even though I have all stressed defined identical, the engine still generates different lengths for stressed vs unstressed forms.


[espeak-ng:master] New Comment on Issue #692 Crash when folder has accented character
By rhdunn:

I saw that NVDA had resolved the crash they had by using the "don't exit the program if the path is invalid" -- that is why I closed the issue.

Regarding the problem, espeak/espeak-ng (including 1.48.15 -- https://github.com/espeak-ng/espeak-ng/blob/1.48.15/src/speak_lib.cpp#L296) uses ASCII paths and calls the stat function to determine if the path exists and is a directory (i.e. if it is valid). This is used all over espeak -- as such it is not trivial to fix.

Also note that that logic hasn't changed in espeak-ng, and all the code reformatting/cleanup changes were made for 1.49.0.

NVDA is making a call to os.fsencode. I'm not sure on the details of how that function works. If you can find an API that works with stat, then espeak/espeak-ng will work.


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #785 Full stop only recognized when followed by an uppercase letter?
By michael-conrad:

Thanks for the assist.

I'll create a separate ticket for item #2 to keep things organized.


[espeak-ng:master] New Comment on Issue #785 Full stop only recognized when followed by an uppercase letter?
By michael-conrad:

Thanks for the assist.

I'll create a separate ticket for item (2) to keep things organized.


[espeak-ng:master] New Issue Created by michael-conrad:
#793 There needs to be a way to explicitly set stress ONLY via rules to support unstressed languages and other non-European languages.

As far as Cherokee goes and for many other North American languages, there needs to be a way to explicitly set stress via rules or dictionary that don't get changed, ever, by the phoneme generation code.

As it stands right now, all the stress rules that are defined dictate that stress is added, and there does not seem to be an obvious way of stopping stress from being added except via manual dictionary entries with '$u'.

For context: the dialect of Cherokee that I'm currently working on is strictly unstressed, and I seem to get odd consonant and vowel combination changes even if I select all stressed with all stress strengths and lengths set the same in the config files.

If I set the stress pattern to any other setting, even though I have all stressed defined identical, the engine still generates different lengths for stressed vs unstressed forms. (Which may be a separate issue, don't know).

Per @jaacoppi, see ticket #785

jaacoppi commented 20 minutes ago

ignoring all stress rules, instead of what's in the language files.
dictionary.c has a few functions ending with Stress(): SetVowelStress, GetWordStress, ChangeWordStress. Adding the logic for ignoring all stress patterns might be there already. Take a look and see if anything rings a bell. If not, I'll try to add the required code there as well.

Please provide some sample words or sentences where stress appears even though it shouldn't.


[espeak-ng:master] New Issue Created by michael-conrad:
#793 There needs to be a way to explicitly set stress only via rules to support unstressed languages and other non-European languages.

As far as Cherokee goes and for many other North American languages, there needs to be a way to explicitly set stress via rules or dictionary that don't get changed, ever, by the phoneme generation code.

As it stands right now, all the stress rules that are defined dictate that stress is added, and there does not seem to be an obvious way of stopping stress from being added except via manual dictionary entries with '$u'.

For context: the dialect of Cherokee that I'm currently working on is strictly unstressed, and I seem to get odd consonant and vowel combination changes even if I select all stressed with all stress strengths and lengths set the same in the config files.

If I set the stress pattern to any other setting, even though I have all stressed defined identical, the engine still generates different lengths for stressed vs unstressed forms. (Which may be a separate issue, don't know).

Per @jaacoppi, see ticket #785

jaacoppi commented 20 minutes ago

ignoring all stress rules, instead of what's in the language files.
dictionary.c has a few functions ending with Stress(): SetVowelStress, GetWordStress, ChangeWordStress. Adding the logic for ignoring all stress patterns might be there already. Take a look and see if anything rings a bell. If not, I'll try to add the required code there as well.

Please provide some sample words or sentences where stress appears even though it shouldn't.


[espeak-ng:master] New Issue Created by michael-conrad:
#793 There needs to be a way to explicitly set stress only via rules to support unstressed languages and other non-European languages.

As far as Cherokee goes and for many other North American languages, there needs to be a way to explicitly set stress via rules or dictionary that don't get changed, ever, by the phoneme generation code.

As it stands right now, all the stress rules that are defined dictate that stress is added, and there does not seem to be an obvious way of stopping stress from being added except via manual dictionary entries with '$u'.

For context: the dialect of Cherokee that I'm currently working on is strictly unstressed, and I seem to get odd consonant and vowel combination changes even if I select all stressed with all stress strengths and lengths set the same in the config files.

If I set the stress pattern to any other setting, even though I have all stressed defined identical, the engine still generates different lengths for stressed vs unstressed forms. (Which may be a separate issue, don't know).

Per @jaacoppi, see ticket #785

jaacoppi commented 20 minutes ago

ignoring all stress rules, instead of what's in the language files. dictionary.c has a few functions ending with Stress(): SetVowelStress, GetWordStress, ChangeWordStress. Adding the logic for ignoring all stress patterns might be there already. Take a look and see if anything rings a bell. If not, I'll try to add the required code there as well.

Please provide some sample words or sentences where stress appears even though it shouldn't.


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #793 There needs to be a way to explicitly set stress only via rules to support unstressed languages and other non-European languages.
By jaacoppi:

This diff: `diff --git a/espeak-ng-data/lang/iro/chr b/espeak-ng-data/lang/iro/chr index abe29382..9c94836c 100644 --- a/espeak-ng-data/lang/iro/chr +++ b/espeak-ng-data/lang/iro/chr @@ -17,7 +17,7 @@ words 2 1 phonemes chr

//stress on all syllables to simulate stress on no syllables -stressRule 9 +stressRule 0 stressLength 175 175 175 175 175 175 175 175 //all vowels the same length regardless of stress stressAmp 10 10 10 10 10 10 10 10 //all vowels the same strength regardless of marked stress

diff --git a/src/libespeak-ng/dictionary.c b/src/libespeak-ng/dictionary.c index bd144fa8..4f220c87 100644 --- a/src/libespeak-ng/dictionary.c +++ b/src/libespeak-ng/dictionary.c @@ -1119,6 +1119,9 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,

    switch (tr->langopts.stress_rule)
    {
  • case 0: // no stress except what's in the language rules and dictionary
  • return; + case 8: // stress on first syllable, unless it is a light syllable followed by a heavy syllable if ((syllable_weight[1] > 0) || (syllable_weight[2] == 0))`

produces: _espeak-ng -X -v chr+f2 -x "U²no¹de⁴na hạ²wi²ya hạ²wi²ya hạ²wi²ya." _ u:2no~:1de:4n0~43_ h02wi:2j0~43_ h02wi:2j0~43_ h02wi:2j'0~43_

My solution simply skips making any stress changes and returns from the function. The word "hạ²wi²ya" is handled correctly two out of three times. However, there's still a stress at the end of the sentence. The same effect happens with "hạ²wi²ya!" and "hạ²wi²ya?". It's added somewhere else. My guess is S_NO_EOC_LENGTHEN in setlengths.c. Kazakh has it implemented in tr_languages.c.


[espeak-ng:master] New Comment on Issue #793 There needs to be a way to explicitly set stress only via rules to support unstressed languages and other non-European languages.
By jaacoppi:

This diff: `diff --git a/espeak-ng-data/lang/iro/chr b/espeak-ng-data/lang/iro/chr index abe29382..9c94836c 100644 --- a/espeak-ng-data/lang/iro/chr +++ b/espeak-ng-data/lang/iro/chr @@ -17,7 +17,7 @@ words 2 1 phonemes chr

//stress on all syllables to simulate stress on no syllables -stressRule 9 +stressRule 0 stressLength 175 175 175 175 175 175 175 175 //all vowels the same length regardless of stress stressAmp 10 10 10 10 10 10 10 10 //all vowels the same strength regardless of marked stress

diff --git a/src/libespeak-ng/dictionary.c b/src/libespeak-ng/dictionary.c index bd144fa8..4f220c87 100644 --- a/src/libespeak-ng/dictionary.c +++ b/src/libespeak-ng/dictionary.c @@ -1119,6 +1119,9 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,

    switch (tr->langopts.stress_rule)
    {
  • case 0: // no stress except what's in the language rules and dictionary
  • return; + case 8: // stress on first syllable, unless it is a light syllable followed by a heavy syllable if ((syllable_weight[1] > 0) || (syllable_weight[2] == 0))`

produces: _espeak-ng -X -v chr+f2 -x "U²no¹de⁴na hạ²wi²ya hạ²wi²ya hạ²wi²ya." _ u:2no~:1de:4n0~43_ h02wi:2j0~43_ h02wi:2j0~43_ h02wi:2j'0~43_

My solution simply skips making any stress changes and returns from the function. The word "hạ²wi²ya" is handled correctly two out of three times. However, there's still a stress at the end of the sentence. The same effect happens with "hạ²wi²ya!" and "hạ²wi²ya?". It's added somewhere else. My guess is S_NO_EOC_LENGTHEN in setlengths.c. Kazakh has it implemented in tr_languages.c.

Edit: S_NO_EOC_LENGTHEN should be moved from tr_languages.c to a keyword in the language definition file lang/iro/chr. See #218. So when making a solution, don't add anything to tr_languages.c.


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #785 Full stop only recognized when followed by an uppercase letter?
By jaacoppi:

https://github.com/espeak-ng/espeak-ng/blob/8aff6072e803055b8802fa670f0db9545c5849ad/src/libespeak-ng/readclause.c#L1096

Setting that to true would recognize sentences starting with lower case. I would define a new language option with #define CLAUSE_LOWERCASE_PUNCTUATION in translate.h. Any other ideas?


[espeak-ng:master] New Comment on Issue #785 Full stop only recognized when followed by an uppercase letter?
By jaacoppi:

https://github.com/espeak-ng/espeak-ng/blob/8aff6072e803055b8802fa670f0db9545c5849ad/src/libespeak-ng/readclause.c#L1094-L1096

Setting that to true would recognize sentences starting with lower case. I would define a new language option with #define CLAUSE_LOWERCASE_PUNCTUATION in translate.h. Any other ideas?


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #793 There needs to be a way to explicitly set stress only via rules to support unstressed languages and other non-European languages.
By michael-conrad:

Meh... had to revert all the tr_* changes, it started switching to ENGLISH for my tone marks and read out the symbols. ????


[espeak-ng:master] New Comment on Issue #793 There needs to be a way to explicitly set stress only via rules to support unstressed languages and other non-European languages.
By michael-conrad:

The offending words have a short ị:

~/espeak-ng/bin/espeak-ng -v chr -X "wị²dị²jị²yạ²ga."