Словари для IVONA TTS 1.6.75. Обсуждение, предложения

Два русскоязычных голосовых модуля от компании IVONA обладающие хорошим звучанием, неплохим качеством синтезируемой речи и поддерживающие SAPI-5 с частотой 22 КГц.

Модераторы: good_cat, wasyaka

Ответить
Аватара пользователя
Fenix
Администратор

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#1

Сообщение Fenix »

В этой теме обсуждаем всё связанное со словарями.

good_cat писал(а): Nov 26 2017
skreb писал(а):Выложенные Вами Словари *.rex, *.dic для программ "Balabolka" и ''Demagog" подходят для только голоса Алёна или для голосов Максим и Татьяна тоже?
Расстановка ударений в текстах для этих голосов одинаковое - прописной (заглавной) гласной буквой.
Поэтому можно использовать без сомнений.


skreb писал(а):Существует ряд словарей Dic, Rex, Pls, Hmg. Для полноты понимания, объясните, пожалуйста, просто (как для чайника), их назначение, применение, все ли они нужны для озвучки, допустим, Максимом в «Балаболке».
Файлы Hmg - это файлы со списком омографов и правилами расстановки ударений.
Пример фрагмента словаря

Код: Выделить всё

спешил=спЕшил,спешИл
спешила=спЕшила,спешИла
спешили=спЕшили,спешИли
спешило=спЕшило,спешИло
спешим=спЕшим,спешИм
спешит=спЕшит,спешИт
спешите=спЕшите,спешИте
спешить=спЕшить,спешИть
спешишь=спЕшишь,спешИшь
спешу=спЕшу,спешУ
По этим словарям обрабатываются омографы в тексте, в частности, программой "Homograph". Они могут быть разные по наполняемости.

Файлы Pls - это словари для синтезатора речи IVONA TTS. В них содержатся правила озвучивания записанных в них слов. С помощью этих словарей корректируется произношение слов.

О словарях Dic, Rex почитайте в теме диалоги с автором программы "Demagog", я лучше не смогу обьяснить. В этой же теме есть ссылка на ответ автора программы "Balabolka".
flegont писал(а):
skreb писал(а):Для полноты понимания, объясните...
Для начала, попробуйте просто послушать, как читает Максим вообще без словарей. Вполне вразумительно.

У меня, к примеру, Максим версии 74 и (до последнего времени) ни одного подключенного словаря. Ни пресловутых PLS, ни rex, ни dic. Да, Максим иногда делает ошибки в ударениях и, изредка, читает в слове букву "е" там, где подразумевается "ё". Где-то так 3-4 ошибочки на страницу.
Через некоторое время, когда красота голоса (а он, довольно качественный, смею заметить) уже не будет так изумлять и восхищать, некоторые постоянные ошибки уже начнут слегка раздражать. Или даже не слегка... Вот тогда и наступит время подумать о подключении словарей.

Тут главное - без фанатизма!

"Исправлять надо лишь то, что раздражает" (с) В. Шойтов-Харитановский - автор программы MP3book2005

Лично я, кроме словаря-ёфикатора, расставляющего букву "ё" вместо "е" везде, где она точно должна быть, пользуюсь еще словарем омографов, чтобы вручную разобраться с омографом "все/всё". Он - самый нервирующий, на мой взгляд. И - самый частый, около 50% случаев.

Итак:
1) словарь-ёфикатор
2) словарь омографов для ручной правки вот этой бандитской десятки Ё-омографов: все перед всем слезы села небо чем-то жены сестры берег

Осталось рассказать, как я борюсь с ошибками ударения Максима. Тут я - кустарь-одиночка. Никого, конечно, не призываю следовать своему примеру.

Есть у меня маленький словарик Maxim-ipa.dic, который постепенно пополняется. Для предъявления на всеобщее обозрение он пока не готов.
Но принцип его - тот же, что описан good_cat в руководстве по созданию аудиокниг: вставка управляющего тега прямо в текст. Например, Максим упорно читает: в своей дУше вместо в своей душЕ Исправляется это добавлением в мой словарик вот такого правила:
*ей душе=ей <phoneme alphabet="ipa" ph="dʊʂˈe"/>

И т.д. и т.п.

В общем, повторю еще раз: не надо торопиться сразу подключать любой словарь, подвернувшийся под руку.
"Лучше ничего не делать, чем сделать что-нибудь не так" (с) Лайф-хак от легионеров Римской империи.


tonio_k писал(а):Хочу поделиться такой своей находкой

в файле 2_corector_ivona_ru.rex - из mytts_dic_rex.zip
п. 12.4. "Коррекция букв в словах кроме аббревиатур". Оно делает все слова в книге с маленькой буквы.

Если это правило сработает в самом начале обработки текста, то все правила типа: $И все?=И всЁ? не будут работать так как они привязаны к регистру. Если его запустить в самом конце, то правила типа вдоль облака=вдоль Облака потеряют смысл, так как всё опять заменится на облака.

Выход из ситуации я для себя нашел такой:

Сначала содержимое п. 12.4. в файле 2_corector_ivona_ru.rex надо заремарить или удалить ( только правила с буквами русского алфавита) иначе дальнейшее не имеет смысла.

Теперь создадим 3 файла


1) Постобработка резервируем омографы с ударением на 1 букву.DIC

одна из строк файла:
$Облака=zfkrfdgkzl1138
где каждому омографу я присваиваю уникальный код.
В файле собраны ВСЕ Омографы, у которых ударение падает на первую букву.
я их вытащил из файла all_omographs.hmg - тот что идет с программой Homograph.

2) Постобработка смена регистра.REX
это скопированный п. 12.4.
одна из строк файла:
@\b[О]([^А-ЯЁ\d]+)=о$1
меняем на нижний регистр все первые буквы слов в тексте

3) Постобработка восстановление омографы с ударением на 1 букву.DIC
тут делаем обратную операцию к п. 1
одна из строк файла:
zfkrfdgkzl1138=Облако

Теперь запускаем их строго друг за другом по порядку в самом конце обработки книги.
т.е. не кидаем скопом в папку со словарями, а именно сначала получаем текст по первому правилу, и полученный текст обрабатываем следующим правилом. Так как 2 по порядку это REX словарь.

Альтернатива - тогда можно будет, действительно, кинуть все в одну папку со словарями и поставить галочку напротив. Тогда балаболка / демагог сделает разом, это если второй файл будет .DIC а правила в нем будут типа $О*=о, но тогда у вас могут абривиатуры поплыть типа сССР или бАМ

Вот и всё. Все слова будут в маленькой буквы, а нужные нам омографы, с ударением на первую букву, - останутся без изменений.

у кого возникает проблема с "быстрым проговариванием без паузы на одном дыхании" оглавление текста в начале книги типа:
Роман Злотников
ШАГ К ЗВЕЗДАМ
Пролог
Блаблабла....конец книги.

в 2_corector_ivona_ru.rex нужно добавить строчку
([A-Za-zА-яЁё]|\,)(\r)(\n)=$1<silence msec="500"/>

Аватара пользователя
tonio_k
V.I.P.

Re: Словари для IVONA TTS 1.6.75 (Татьяна и Максим)

#2

Сообщение tonio_k »

в словарь 3_vse_vsyo.rex рекомендую в самом начале словаря поставить строку:
\bвсё\b=всеъ, а в самом конце строку:\bвсеъ\b=всё
Что это даст? Если автор книги в тексте сам расставил бувы ё в словах все=всЁ, то эти выше указанные строки резервируют от ошибочных исправлений

Аватара пользователя
wasyaka
V.I.P.

Re: Словари для IVONA TTS 1.6.75 (Татьяна и Максим)

#3

Сообщение wasyaka »

tonio_k писал(а):
02 июл 2018 13:25
\bвсё\b=всеъ, а в самом конце строку:\bвсеъ\b=всё
Т. е. все на всё ошибочно исправлять допускается? :up: :big_smile: А словарик отключить? :suspect:

Аватара пользователя
wasyaka
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#4

Сообщение wasyaka »

tonio_k писал(а):
16 окт 2018 09:47
словарь 3_vse_vsyo.rex условно состоит из 2 разделов:
vse_vsyo.rex как и chisla.rex - это своего рода наставление: начальный набор - далее если "вкуриш" тему относительно просто улучшить.
Я попытался:
1. все=>всЕъ(dic) -изначально правильное Е
2. все=>всЁъ(dic) -изначально правильное Ё
3. все=>всЁ(rex) - всё что может применится к всё
4.всЁ=>всЕ(rex) - вторичный фильтр
5 всЕ=>всЁ(rex) - вторичный фильтр
6.всЕ,всЁ=>всЕ(rex) - фильтр третьего уровня
7.всЕ=>всЁ(rex) - фильтр четвёртого уровня
8.всё=>всеъ(dic) - фильтр пятого уровня
В остатке фразы которые вносить в словарь не имеет смысла...
Я слушаю, именно слушаю, а не как фон, чтоб заполнить уши, - все ошибки фиксирую и редактирую-дополняю, если есть смысл...

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#5

Сообщение tonio_k »

Иногда правила не срабатывают, когда в тексте между тире и словом отсутствует пробел.
Корректировка для таких случаев(словарь rex):

Код: Выделить всё

# Исправление "прилипания" тире к слову типа: "именно.- для" или "именно: -для" или "именно- для"
(\w+\S?)\s\-(\w+)=$1 - $2
(\w+\S?)\-\s(\w+)=$1 - $2

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#6

Сообщение tonio_k »

Меня раздражало, как Максим произносит слова типа:
► Показать
своей четкой произносимой тО хотя вслух мы произносим примерно:
все варианты словосочетаний с -то в словаре фонем не запишешь.
Для себя решил вопрос такой заменой:

Код: Выделить всё

(\w+)-то\b=$1-тоъ
Стало звучать приятнее

Аватара пользователя
ValentinShum
Прохожий

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#7

Сообщение ValentinShum »

Объясните мне куда кидать словари в программу Balabolka для коректного произношение?
Например есть такой словарь
alenka-to-olga.zip
(414 байт) 311 скачиваний
если просто его кинуть в мои документы\Balabolka это не сработает.

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#8

Сообщение tonio_k »

ValentinShum писал(а):
14 апр 2020 13:54
для коректного произношение
словари в Балаболке находятся в подпапке dictionaries. Ваш пример словаря не подходит к голосовому движку IVONA.

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#9

Сообщение tonio_k »

Уже редко, но еще попадаются книги в формате отсканированного и распознанного текста с разрывами в предложениях в виде абзаца в местах переноса на новую строку по правому краю страницы.
Пример текста:
► Показать
В таких разрывах голосовой движок может начать делать ненужные паузы с потерей интонации целого предложения.
Для исправления текста можно применить такие правила для словаря REX:

Код: Выделить всё

[\xA0]+= 
@[\r\n]+([а-яёa-z])= $1
@([а-яёa-z]+[ ,:-;»]*)[\r\n]{1,2}=$1 
[ ]{2,}= 
Описание строк:
1.заменяет символ "пространство" на пробел
2,3 - склеивают разорванные предложения
4.удаляет лишние пробелы

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#10

Сообщение tonio_k »

Размышления на тему вопросительной интонации у Максима:
Оригинальный текст:

Код: Выделить всё

 - Ларисса, <phoneme ph="ˈa"/> у вас <phoneme ph="kɐlʲˈosə"/> <phoneme ph="jˈesʲtʲ"/>? - снова задала я вопрос.
► Показать
Добавим запятую перед словом со знаком вопроса:

Код: Выделить всё

 - Ларисса, <phoneme ph="ˈa"/> у вас <phoneme ph="kɐlʲˈosə"/>, <phoneme ph="jˈesʲtʲ"/>? - снова задала я вопрос.
► Показать
После вопросительного знака добавим еще и знак абзаца:

Код: Выделить всё

 - Ларисса, <phoneme ph="ˈa"/> у вас <phoneme ph="kɐlʲˈosə"/>, <phoneme ph="jˈesʲtʲ"/>?
  - снова задала я вопрос.
► Показать
Только знак абзаца после знака вопроса:

Код: Выделить всё

 - Ларисса, <phoneme ph="ˈa"/> у вас <phoneme ph="kɐlʲˈosə"/> <phoneme ph="jˈesʲtʲ"/>?
  - снова задала я вопрос.
► Показать
Надо поэкспериментировать

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#11

Сообщение tonio_k »

Попалась мне как-то электронная книга со словом:

Код: Выделить всё

О6оpотень
Читал бы с экрана даже не заметил бы, а вот Максим какую-то ересь на этом слове произносит... :tongue2:
В связи с этим, создал правила замены REX. Эти правила могут пригодится для любого голоса в т.ч. для Яндекса на этапе предварительной чистки текста книги:
► Показать
Тут я пытался максимально "осторожно" автоматизировать замену латинских букв на кириллицу в русских словах. Критерием замены является преобладающее количество русских букв в слове что бы не происходили ложные срабатывания при озвучивании английских слов (других слов на латинице).
Помимо "правильного" звучания решается еще одна проблема: уже не будут игнорироваться некоторые правила в словарях, если в этих правилах присутствует данное слово, - ведь это слово в словаре записано полностью на кириллице.

Аватара пользователя
Lecron
Специалист

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#12

Сообщение Lecron »

tonio_k писал(а):
01 фев 2021 14:26
правила дублируются т.к. в одном слове может быть по несколько латинских букв
А почему бы не убрать границу слова \b ? При посимвольной обработке она не нужна. Достаточно одно прохода в таком порядке

Код: Выделить всё

([а-яё])a([а-яё])=$1а$2
([а-яё]{2,})a=$1а
a([а-яё]{2,})=а$1
В самом крайнем случае (сколько их таких? Может не стоит жертвовать скоростью ради качества?), достаточно будет двух проходов вместо 6.
Также нужно заменять латинские k,u,x. Плюс рассмотреть возможность для древних текстов из фидо заменять H (эйч) на н.

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#13

Сообщение tonio_k »

Lecron писал(а):
03 фев 2021 15:28
А почему бы не убрать границу слова \b ?
с правила

Код: Выделить всё

([а-яё])a([а-яё])=$1а$2
Я и начал. Но мне это правило почему-то не понравилось. Наверное, исходил из того, что вдруг слово все же на латинице? И именно в латинское слово залезли 2 русские буквы? Так зачем тогда усугублять и превращаеть остальные буквы в слове в русские?
Решил придерживаться другой логики, если слово начинается с 2 русских букв или заканчивается на 2 русские буквы, то скорее всего это слово на русском.
Далее слово от начала слова и от конца прогоняется правилами для замены всех букв на латиницу.

Несколько прогонов потому что в одном слове может встретиться несколько латинских букв за раз. Не уверен, что без дублирующих прогонов регулярка отработает без пропусков особенно, если латинская будет одна и та же буква в слове несколько раз.

Я понимаю, что если слушаю русскую книгу, то и слова в ней скорее всего все русские. Так что ваш вариант, скорее всего будет оптимальнее. Подумаю над этим.

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#14

Сообщение tonio_k »

Lecron писал(а):
03 фев 2021 15:28
Также нужно заменять латинские k,u,x. Плюс рассмотреть возможность для древних текстов из фидо заменять H (эйч) на н.
так далеко не стал заходить. Словари стараюсь пополнять по мере возникающих проблем. В основном проблемы были с гласными и латинскими "с" и "р". Даже цифра 6 вместо б встречалась, А вот х в словах как-то не попадалось кроме путаницы в римских числах

Аватара пользователя
Lecron
Специалист

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#15

Сообщение Lecron »

tonio_k писал(а):
03 фев 2021 16:17
если слушаю русскую книгу, то и слова в ней скорее всего все русские.
Дело даже не в русских словах, а в том, что в иностранных нечего делать руским буквам. Иностранные тексты обычно пишутся людьми ничего не знающими о кирилице. Наши авторы, максимум копипастят их их других источников.
tonio_k писал(а):
03 фев 2021 16:17
особенно, если латинская будет одна и та же буква в слове несколько раз.
Даже если несколько раз подряд, если между ними две русских — найдется всё.
Проблема была в границе слова (\b), что требует большего количества прогонов, ибо все время ищем с начала/конца. Если ее убрать, достаточно двух прогонов. Даже если не будете использовать правило РусЛатРус. Не забывайте, что "обратное" правило можно почти приравнять к отдельному прогону.
tonio_k писал(а):
03 фев 2021 16:26
В основном проблемы были с гласными и латинскими "с" и "р"
В основном "с". Какой идиот додумался посадить на одну кнопку буквы с полностью идентичным начертанием?

ЗЫ. Как меня эта \b бесит. Вечно ошибки в словах с дефисом. Последнее время больше использую lookahead

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#16

Сообщение tonio_k »

Lecron писал(а):
03 фев 2021 16:44
Вечно ошибки в словах с дефисом.
поэтому в своих словарях у меня этот дифис вообще удаляется в самом начале обработки словарями.
Выше для Максима ещё пытался сохранить дефис. Теперь отказался полностью от него полностью.
Например для быстрого алгоритма слово "матрешка" и "матрешка-то" это два разных слова. А умножать правила в словаре Ёфикации в 2 раза прописывая каждому слову вариант с "-то"
матрешка=матрёшка
матрешка-то=матрёшка-то

это не вариант. Поэтому "-то" у меня заменяется на тоъ. Если нужно, то в конце обработки словарями этот дифис можно восстановить через
* тоъ=-то
этот возврат был применен с Яндекс голосами. Они (в отличии от Максима) "-то" читают правильно, а "тоъ" читают неправильно.

Аватара пользователя
wasyaka
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#17

Сообщение wasyaka »

tonio_k писал(а):
03 фев 2021 16:26
В основном проблемы были с гласными и латинскими "с" и "р". Даже цифра 6 вместо б встречалась,
А как тебе такое?
Шейх начал нараспев читать ду’а, желательное перед началом трудного и важного дела – и его подхватили все присутствующие … Аллаhумма, инни астахыру-кя би-’ильми-кя ва астакъдирукя би-къудрати-кя ва ас-алю-кя мин фадли-кяль-’азыми фа-инна-кя такъдиру ва ля акъдиру, ва та’ляму ва ля а’ляму, ва Анта ‘аллямуль-гъуюби! Аллаhумма, ин кунта та’ляму анна hазаль-амра хайрун ли фи дини, ва ма’аши ва ‘акъибати амри, фа-къдур-hу ли ва йассир-hу ли, сумма барик ли фи-hи; ва ин кунта та’ляму анна hазаль-амра шаррун ли фи дини, ва ма’аши ва ‘акъибати амри, фа-сриф-hу ‘анни ва срифни ‘анhу ва-къдур лияль-хайра хьайсу кяна, сумма ардини биhи[10 - О, Аллаh, :wall: :wall: :wall:
(Александр Афанасьев
Врата скорби. Повелители огня)

Аватара пользователя
tonio_k
V.I.P.

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#18

Сообщение tonio_k »

wasyaka писал(а):
08 фев 2021 21:19
фа-къдур-hу ли
старый анекдот: "в мед училище на уроке латинского языка одна группа студентов случайно вызвала Сатану".
Это я к тому, что слушая фразы на незнакомом языке, ошибки сделанные в нём голосовым движком слушателю не заметны. Мой школьный курс английского иногда требует добавить какое-то английское слово в словарь на латинице, но ваш пример я бы даже трогать не стал :smile1:
Отсюда нет проблем с несработавшими правилами. А замена латинских букв на кириллицу, возможно, даже "улучшит" ситуацию, но не знающему языка это будет все равно не заметно... Кроме цифры 6 разве что - и то не факт на фоне общей абракадабры.

Аватара пользователя
FastStyx
Прохожий

Словари для IVONA TTS 1.6.75. Обсуждение, предложения

#19

Сообщение FastStyx »

Приветствую всех.

Такой вопрос - как созданный PLS-словарь подключить к движку (в данном случае к Ivona Tatiana) ?

В самой программе OpenPLS - все хорошо произносится, как сделать, чтобы Татьяна все слова говорила именно так, как в ней ?

Ответить

Вернуться в «Ivona Татьяна и Максим»