[espeak-bg] Re: Fwd: Re: Bugs in eSpeak

  • From: Zahari Yurukov <zahari.yurukov@xxxxxxxxx>
  • To: espeak-bg@xxxxxxxxxxxxx
  • Date: Thu, 26 Jul 2012 10:58:14 +0300

Здрасти,
това от известно време го има за "a" в SAPI5, а сега и за другите гласни - явно проблема се е задълбочил. Интересното е, че при директна комуникация с библиотеката, например при вградения в NVDA espeak, такъв проблем изобщо няма (не съм сигурен за новата версия). Определено има някакъв проблем, но трябва да се гледа и назад - не само в последните промени. Има го и в стабилната версия.


On 26.7.2012 г. 10:29 ч., Kostadin Kolev wrote:
Здравейте,

Писах на Jonathan с предложението относно думите написани с кирилица и латиница. Той е приел нашето предложение и във версия 1.46.21 на eSpeak вече думите от този тип се произнасят разпокъсано, кагто предложихме. Но като че ли сега се появи някакъв друг проблем с някои от буквите от латиницата и сега eSpeak ги интерпретира като такива от кирилицата (пример: произнася "е", вместо "e", и така нататък). Не съм го тествал подробно, но преди да му пиша, прецених че ще е добре и вие да го тествате и да кажете дали и при вас се наблюдава същия проблем като при мен.

Ето ви и линк за изтегляне на SAPI5 версията на eSpeak 1.46.21:

http://espeak.sourceforge.net/test/espeak-1.46.21-win.zip


___
Поздрави,
Костадин Колев
http://kdkmaster.klangoblog.net

На 23.7.2012 г. 13:54 ч., Zahari Yurukov написа:
Здравейте,
извинете за забавянето.
1. Потърсих го вместо теб:
http://www.nvda-project.org/ticket/2224
Има част от лога на NVDA,  както и примери.

2. Относно съкращенията:
Имаше някаква причина да използвам $dot вместо $hasdot, дали не беше
заради това, че исках дори и при липса на точка съкращенията да се
прочитат като такива.
За някои може би е по-добре и да си остане така, но за някои
по-конфликтни също е добре да се промени.
Също е добре да се добавят и някои съкращения с параметър $allcaps, като
АП - което си дал за пример.
А ако една дума не е с главни букви, то остава да е с малки - което
прави отсъствието на параметър само_с_малки_букви не чак толкова
болезнено, особенно когато целта е да се разграничи произношението на
дума с малки букви от дума с главни букви.

Значи горния пример може да стане така:
ap apartam'ent $hasdot
ap as'oSiejtet||pres $dot $allcaps

Т.е. когато е само с главни букви е Асошиейтет прес и точката след него
се игнорира, когато е с малки и има точка е апартамент, във всички други
случаи си е просто "ap".
Вертикалните черти се слагат когато имаме повече от една дума.

Същото и за етаж и едноличен търговец.

По-сложно ще е да разграничим град, грам, година ...
До колкото си спомням, eSpeak автоматично приемаше за съкращения думи
само с главни букви, които се състоят от 3 или повече букви, но не знам
дали това важи и за кирилицата и в кои случаи - в такива случаи
съкращенията трябва да се четат буква по буква.

3. То и сега се опитва да прочете думата буква по буква, само че само в
някои случаи и то след като си изчете letterXXX(...).
Мисля, че се гледа първата буква, защото има разлика когато е кирилска и
латинска (когато е латинска става по-голяма боза).
Ако се добави латиницата към българския глас, няма ли да се прецака
английското произношение? То и сега когато не може да се намери
подходящо правило за четене на определена комбинация от букви се
използват директно фонемите, но когато е на латиница минават през
английските правила.
Speech lab разчита изцяло на речници. Ако някоя дума я няма в речника -
дори не се и опитва да я прочете правилно. Мисля, че не трябва да му
подражаваме точно в тази му част, пък и изобщо.

Смесването на кирилица и латиница в една дума е наистина много дразнещо
и  разделянето и на части според мен е най-подходящия вариант.


On 21.7.2012 г. 10:47 ч., Kostadin Kolev wrote
Здравейте,

И да допълня предишното си писмо, с мнението ми по обсъжданите по-долу
въпроси:

По въпрос №1: Тук най-много да можем да предоставим .log файлове от
NVDA, в които е записана дадената грешка. Може също така да потърся и
да дам линка за доклада за тази грешка пуснат от Захари до
разработчиците на NVDA и да го препратя на Jonathan Duddington.
Захари, всъщност, то към тоя доклад нямаше ли прикачен и .log файл от
NVDA?

По въпрос №2: Прегледах този "dictsource/list" файл и видях кои са
проблемните съкращения. Мисля че мога да ги оправя, но мисля че няма
как лично да ги тествам, защото не съм запознат с процедурата по
компилирането на този файл (а той мисля че трябва да се компилира,
преди eSpeak да може да го ползва). Но мисля че трябва да предложим на
Jonathan и още нещо като правило за съкращенията - да може да им се
задава изискване да са само с малки букви (доколкото разбрах, такова
правило в момента не се поддържа). Защото знаете, че в българския език
съкращения като "ет." с малки букви означава "етаж", а ако е с големи
и без точка - "едноличен търговец", "ап." с малки букви и точка
означава "апартамент", а с големи и без точка - "Асошиейтет прес" (или
нещо подобно). Не казвам че трябва да включим и дадените за пример и
други подобни съкращения с главни букви в речника на eSpeak, но ми се
иска синтезатора да не бърка двете съкращения, както прави сега. То
може би като се определи че тези с малки букви и точка трябва
задължително да имат точка, проблема ще се оправи - не знам.

По въпрос №3: Явно когато eSpeak открие дума написана на кирилица и в
нея има една или повече букви от латиницата, синтезатора зарежда
английския глас, за да я прочете. Но английския глас не познава
буквите от кирилицата и не може да ги интерпретира правилно, и поради
тази причина не ги произнася правилно, правейки съответната дума
неразбираема. Предполагам че не може да се зададе на eSpeak при
откриване на такава проблемна дума синтезатора да ползва българския
глас, тъй като в него пък липсват буквите от латиницата. На този
проблем аз виждам 2 решения:
- Ако е възможно, вмъкване на буквите от латиницата в българския
"list" файл, където са описани буквите от кирилицата и задаване на
eSpeak при откриване на дума с кирилица и латиница, синтезатора да
ползва само българския глас;
- Както си е и сега: синтезатора да използва английския глас при думи
с кирилица и латиница, но да се направи така че eSpeak да разделя на
части такива думи, като отделя буквите от латиницата в отделни думи.
Пример: думата "прeдизвикателствo" ("предизвикателство") е написана с
латински "е" и "о", вместо с кирилски. В такъв случай, думата ще бъде
разделена по следния начин:
пр
e
дизвикателств
o
и всяка част ще бъде интерпретирана като отделна дума, но без пауза
между всяка от тях. Мисля че по подобен начин се справя с този проблем
SpeechLab, но не съм сигурен. Но това решение ми се струва
по-неподходящо, и аз повече подкрепям първия вариант (с добавянето на
латинските букви в българския файл, при кирилските).

Та, това са моите мнения по трите въпроса. Чакам и вашите, преди да
пратя отговора си до Jonathan.


___
Поздрави,
Костадин Колев
http://kdkmaster.klangoblog.net

На 15.7.2012 г. 13:52 ч., Kostadin Kolev написа:
Здравейте,

Препращам ви една кореспонденция между мен и Jonathan Duddington относно няколко бъга в eSpeak за които му писах и които мисля че сме обсъждали и тук. Кореспонденцията е на английски и ако това ви затруднява - кажете и
ще преведа поне основно за какво става дума.

Поздрави,
Коста


-------- Оригинално писмо --------
Тема: Re: Bugs in eSpeak
Дата: Sun, 15 Jul 2012 09:03:50 +0000 (GMT)
От: Jonathan Duddington <jonsd@xxxxxxxxxxxx>
До: Kostadin Kolev <kostadin.kolev1985@xxxxxxxxx>

On 11 Jul, Kostadin Kolev <kostadin.kolev1985@xxxxxxxxx> wrote:

I have a few questions to discuss with you about eSpeak:

1. Bug: This is related to NVDA as well, but anyway. In some cases
(specially when a text string begins with 2 or more upper chars),
NVDA may give an error, when reading with eSpeak in NVDA's "say all"
mode. In similar conditions, it may occur that some parameters of
eSpeak will get modified (e.g. speed, pitch, etc.) as well.

I am not aware of this problem.  It has not been reported to me by the
NVDA developers.

I do not get this problem when I use eSpeak by itself.  So I need to
know exactly how NVDA calls eSpeak to produce this effect.


2. Abbreviations: the syntax used for abbreviations in eSpeak should
be case sensitive and should be able to accept dots at the end of
the abbreviated strings. I don't know if at present it is possible,
but it is not applied for the bulgarian language and that causes a
lot of misinterpretations of abbreviations.

Yes, eSpeak data can specify that an abbreviation:
1.  Can be followed by as dot.   Attribute $dot
2.  Must be followed by a dot.   Attribute $hasdot
3.  Must be all-capitals.         Attribute $allcaps
4.  Must start with a capital letter.  Attribute $capitals

These options can be set for each abbreviation which is listed in the
eSpeak Bulgarian data (file dictsource/list).

Please give some examples of problems.


3. Bug: When in a word with Cyrillic characters by mistake there is a
letter from the latin alphabet, eSpeak can't read the word correctly
and reads something like this: "leter  for two three, letter six
five one, ..." etc., as if it tries to read unknown characters.

When using the Bulgarian voice, if eSpeak finds a word which contains
Latin characters, it speaks the word using the English voice. But the
English voice doesn't know Cyrillic characters.

So what should eSpeak do if it finds a word which contains both
Cyrillic and Latin characters?




poluchavate tozi e-mail, zashtoto ste chast ot poshtenskia spisak
eSpeak-bg.
Za da izpratite pismo do tozi spisak izpratete e-mail na:
espeak-bg@xxxxxxxxxxxxx
za poveche informacia za tozi spisak, za da se zapishete ili
otpishete, posetete: //www.freelists.org/list/espeak-bg



poluchavate tozi e-mail, zashtoto ste chast ot poshtenskia spisak
eSpeak-bg.
Za da izpratite pismo do tozi spisak izpratete e-mail na:
espeak-bg@xxxxxxxxxxxxx
za poveche informacia za tozi spisak, za da se zapishete ili otpishete,
posetete: //www.freelists.org/list/espeak-bg


poluchavate tozi e-mail, zashtoto ste chast ot poshtenskia spisak eSpeak-bg. Za da izpratite pismo do tozi spisak izpratete e-mail na: espeak-bg@xxxxxxxxxxxxx za poveche informacia za tozi spisak, za da se zapishete ili otpishete, posetete: //www.freelists.org/list/espeak-bg



poluchavate tozi e-mail, zashtoto ste chast ot poshtenskia spisak eSpeak-bg.
Za da izpratite pismo do tozi spisak izpratete e-mail na:  
espeak-bg@xxxxxxxxxxxxx
za poveche informacia za tozi spisak, za da se zapishete ili otpishete, 
posetete: //www.freelists.org/list/espeak-bg

Other related posts: