Yandex TTS. Словари. Обсуждение

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

Yandex TTS. Словари. Обсуждение

#101

Сообщение tonio_k » 27 авг 2019 00:50

Выборочно тоже прослушал, действительно, Ваша практика использования Яндекса показала, что в словарях есть кривые правила-которые лишние и без них, возможно было бы даже лучше и универсально для любого голосового движка. История возникновения этих правил мне не известна. У меня ivona Максим читает нормально - значит менять ничего не надо. А если что и всплывает, то рисковать не хочется - лучше добавлять правила под кривизну начальных правил, чем что-то пакетно в словарях менять, а потом через пару недель сожалеть об этом, так как после изменений всплыли какие-то болячки голосового движка и становится понятно, почему писались эти правила в таком "кривом виде", а вернуть назад уже невозможно...
Лично Яндекс голос не слушаю вообще. Словари для Яндекс составлялись waska под Балаболку. Из-за некоторых ограничений Демагога, словари мне приходилось перекраивать на свой лад, что бы как-то сохранить логику последовательности срабатывания правил.

Скорее всего, эта сборка будет последней. Скрипты работают, скорость хорошая.
Словари должны составлять те, кто ими пользуется. Так что берите сборку в свои руки, и выкладывайте свои словари здесь, пока Яндекс голос ещё доступен. Или мне скидывайте - сборку обновлю.

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

Yandex TTS. Словари. Обсуждение

#102

Сообщение tonio_k » 27 авг 2019 15:48

Не давало мне покоя мне эта тема с "ТОЪ"
Сделал ревизию правил на эту тему.
Пришёл к такому выводу,
(\w+)-то\b=$1-тоъ это ничто иное, как резервирование дефиса перед тем, как будут удалены все дефисы во всём тексте (не тире).
Зачем вообще удалять дефисы? Дело в быстром алгоритме, применяемом в Балаболке и Демагоге. Тот же словарь Ё-фикации может содержать, например,правило:
радехонек=радёхонек
Но из за особенности этого алгоритма, в слове "рад-радехонек" замены не произойдет, потому что быстрый алгоритм будет считать два слова через дефис как одно целое. А такого слова в словаре нет...
Все возможные словосочетания с дефисами невозможно сгенерировать и заранее прописать в словаре. Проще удалить все дефисы и разбить на простые слова, которые уже более вероятно, что есть в словаре.

Сразу после удаления всех дефисов, их можно благополучно вернуть для "то", как было одной строкой:
(\w+)\s+тоъ\b=$1-то
Далее, сделать ревизию во всех словарях (включая rex), найти правила Где применяется слово "то" и проверить, надо ли к нему добавлять правила с дефисом.

Мне было удобнее вместо дефиса применять связку "тоъ" непосредственно в самих правилах.

При этом желательно создание дубликатов правил в двух вариантах с использованием "то" и "тоъ" и вот почему: Не факт что книга или текст была составлена грамотным автором. По какой-то причине этот дефис мог быть не поставлен в тексте книги. Соответственно многие правила из-за отсутствия дефиса не сработают.

Аватара пользователя
AndOSjZ
Интересующийся

Yandex TTS. Словари. Обсуждение

#103

Сообщение AndOSjZ » 27 авг 2019 16:11

tonio_k
а что означает это сообщение
demagog.png
demagog.png (209.2 КБ) 1005 просмотров
Уилсон. Слепое Озеро.txt
(579.81 КБ) 20 скачиваний

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

Yandex TTS. Словари. Обсуждение

#104

Сообщение tonio_k » 27 авг 2019 18:26

это означает, что функция, которая разбивает большие абзацы захлебнулась на абзаце начинающийся со слов: И тут Маргерит захлестнула теплая волна. Такое чувство она испытывала,
Спасибо за пример! Буду искать как решить проблему.
А пока, попробуйте вручную разбить этот абзац на несколько.

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

Yandex TTS. Словари. Обсуждение

#105

Сообщение tonio_k » 27 авг 2019 18:43

Поправил. Перезалил.

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

Yandex TTS. Словари. Обсуждение

#106

Сообщение tonio_k » 28 авг 2019 17:16

Напоминаю, в сборке есть скрытые словари!
При любой работе со редактированием словарей, необходимо предварительно к текущему окну применить 00_первичная обработка. Только тогда вы увидите С каким "по-настоящему" текстом работают ваши словари, отмеченные галочкой.
У себя я попробовал, "т.е." превращается в "т. е." (между точкой и буквой вставляется пробел)
Могу предложить записать так:

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

$т. е.=то есть,
$Т. е.=то есть,
Тогда это правило будет срабатывать на:
"т. е."
и не будет ошибочно срабатывать на:
"Иванов Т. Е."

* Запятую В приведённом примере можете убрать. Проверьте сначала Как звучит.

Аватара пользователя
Sylvia
Интересующийся

Yandex TTS. Словари. Обсуждение

#107

Сообщение Sylvia » 28 авг 2019 23:26

tonio_k писал(а):
26 авг 2019 01:02
Демагог+Yandex TTS - сборка от 2019-08-26 для подготовки книг и озвучивания Яндекс голосом на базе программы Демагог.
Попробовала записать пару книг. Одна записалась нормально, вторая отказалась записываться, в логе такое
► Показать
Обнаглею и выскажу несколько пожеланий:
- удобно было бы, если б запоминался путь для сохранения аудиофайлов (напрягает каждый раз после ошибки его указывать)
- еще напрягает, что по умолчанию всегда выскакивает окно со статистикой, машинально тыкаю "Повторную запись", и облом...
- нельзя ли по умолчанию поставить "выключить компьютер ? - Нет" . Каждый раз боюсь, что забуду эту настройку и комп вырубится.
Тоже заметила, что теперь говорит "кто тэ", "что тэ" - такого не было в прошлой версии.

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

Yandex TTS. Словари. Обсуждение

#108

Сообщение tonio_k » 29 авг 2019 00:17

Sylvia писал(а):
28 авг 2019 23:26
в логе такое
с этим обращаться сюда к balaamster. Сборка только "применяет" его скрипт "как есть".
Sylvia писал(а):
28 авг 2019 23:26
- удобно было бы, если б запоминался путь для сохранения аудиофайлов (напрягает каждый раз после ошибки его указывать)
Единственное что могу предложить - жестко прописать путь, куда ВСЕГДА будут выгружаться аудио.
Для этого найдите в скрипте повторного запуска строку:

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

dofile (HomeFolder('_Tests_')..'YaTTS.lua')
И перед этой строкой добавьте строку:

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

destination = "D:\\MP3\\Мои книги" 
т.е. укажите СВОЙ путь к папке (двойной слеш и кавычки обязателены!)
Sylvia писал(а):
28 авг 2019 23:26
- еще напрягает, что по умолчанию всегда выскакивает окно со статистикой, машинально тыкаю "Повторную запись", и облом...
Если вы про окно:

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

# Script>

powershell.exe -executionpolicy bypass -file ...... 
это к к balaamster
- нельзя ли по умолчанию поставить "выключить компьютер ? - Нет" . Каждый раз боюсь, что забуду эту настройку и комп вырубится.
Найдите и удалите строку

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

confirm = ShutdownDialog() 
Вообще, выключение наступит только через 10 минут - у вас хватит время на его отмену.
Вот скрипт его отменяющий - поместите его с другими скриптами и запустите, если выйдет предупреждение об отложенном выключении.
Отменить ВЫКЛючение ПК.zip
(327 байт) 5 скачиваний
tonio_k писал(а):
29 авг 2019 00:17
Тоже заметила, что теперь говорит "кто тэ", "что тэ" - такого не было в прошлой версии.
как это исправить - обсуждалось выше. Зато у вас есть Хороший повод научиться работать со словарями и понять как все устроено :wink:

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

Yandex TTS. Словари. Обсуждение

#109

Сообщение tonio_k » 29 авг 2019 16:36

Sylvia писал(а):
28 авг 2019 23:26
теперь говорит "кто тэ", "что тэ" - такого не было в прошлой версии.

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

* тоъ=-то
* тэ=-то
Эти 2 правила исправят проблему с звучанием "ТЭ"
правила добавить в конце словаря 58_Яндекс+пост обработка или 59_МОЙ СЛОВАРЬ

Аватара пользователя
Sylvia
Интересующийся

Yandex TTS. Словари. Обсуждение

#110

Сообщение Sylvia » 29 авг 2019 17:16

tonio_k, Большое спасибо! Про выключение компа не спрашивает, и путь для мр3 после сбоя - тоже:) А то, что теперь не мелькает черное окно при склейке выходных файлов - это замечательно! Спасибо Вам за эту сборку!

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

Yandex TTS. Словари. Обсуждение

#111

Сообщение tonio_k » 29 авг 2019 17:32

Sylvia писал(а):
29 авг 2019 17:16
не мелькает черное окно
это не моя заслуга, а balaamster - это он добавил эту фишку "по просьбе трудящихся". Из моего - это разбитие больших абзацев на маленькие в пределах лимита что бы Яндекс не браковал файлы из-за их большого размера.

Аватара пользователя
AndOSjZ
Интересующийся

Yandex TTS. Словари. Обсуждение

#112

Сообщение AndOSjZ » 30 авг 2019 09:23

По вопросу тоъ -то,создал словарь
57. Rex,в нём запись по возвращению тоъ к - то ,ну и конечно в словарь 20... добавил дубли

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

Yandex TTS. Словари. Обсуждение

#113

Сообщение tonio_k » 30 авг 2019 10:47

AndOSjZ писал(а):
30 авг 2019 09:23
создал словарь
57. Rex
имейте в виду, при проверке работы (Ctrl+T) словарь 57.rex будет срабатывать раньше чем 40dic и в панеле словарей будет не по порядку нумерации. На счёт дублей, убедитесь, что дубли срабатывают! У себя глянул, оказалась, не все так просто. Поэтому оставил тоъ и в словаре 20. Прописал дубли именно с тоъ! Позже примеры выложу

Аватара пользователя
AndOSjZ
Интересующийся

Yandex TTS. Словари. Обсуждение

#114

Сообщение AndOSjZ » 30 авг 2019 14:38

А я был уверен что стоиого по порядку прописи,,ну работает же

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

Yandex TTS. Словари. Обсуждение

#115

Сообщение tonio_k » 30 авг 2019 15:06

По порядку нумерации будут работать словари DIC ТОЛЬКО между словарями dic. Словари rex имеют высший приоритет и как не нумеруй, нумерация rex повлияет на порядок срабатывания ТОЛЬКО между словарями rex.
Автор программы Демагог обещал попробовать сделать последовательность привязки к нумерации (алфавитному порядку) Но это дело будущего...
С другой стороны такое ограничение, в своё время, и дало большой толчок к развитию скриптов.

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

Yandex TTS. Словари. Обсуждение

#116

Сообщение flegont » 30 авг 2019 17:41

С другой стороны такое ограничение, в своё время, и дало большой толчок к развитию скриптов
Да. Скрипты (как показала практика) оказались хорошим средством, для расширения функциональных возможностей программы под те или иные потребности пользователей

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

Yandex TTS. Словари. Обсуждение

#117

Сообщение wasyaka » 30 авг 2019 20:48

flegont писал(а):
30 авг 2019 17:41
Скрипты (как показала практика) оказались хорошим средством, для расширения функциональных возможностей программы под те или иные потребности пользователей
Да, но только для очень-очень узкого круга пользователей. :tongue2:
AndOSjZ писал(а):
30 авг 2019 09:23
По вопросу тоъ -то,создал словарь
А зачем?
У tonio_k почему-то :big_smile: отсутствует словарь исключений, который должен быть в dic и обрабатыватся самым первым, впереди словаря 00_REX_подготовка текста.rex из папки dic2
Вроде такого
000_предподготовка текста.rar
(4.29 КБ) 6 скачиваний
А в словаре 00_REX_подготовка текста.rex строку 67
(\w+)-то\b=$1-тоъ
заменить на
(\w+)\-\b(а|е|и|н|с|у)\b=$1$2

-ТО и многие другие подобные в основном лучше без дефиса, а которые читаются лучше слитно, прописываются в вышеуказанном словаре и никакого шаманства :big_smile:

Словари для Яндекса (для уменьшения путаницы, т.к. они финишные) также можно вложить в отдельную папку dic3
dic3.rar
(76.19 КБ) 10 скачиваний
или заменить словари из папки dic 58, 59, 60, 70, 71, 72, 73, 74 на словари из dic3 в соответствующей последовательности - по номеру - уменьшит ошибки.
А свои правила добавлять в словарь 2.1_Яндекс+ОМО ошибки.dic, причём ударение можно проставлять как знаком + так и заглавной буквой.

МОЙ СЛОВАРЬ из папки dic2 будет опять обрабатыватся последущими словарями из папки dic, и не факт что не вернёт правило в исходное ошибочное состояние... :wall:

Соответственно внести изменения в списке словарей и скриптах.

А чтоб было универсально - фонемы для ивоны добавить в папку dic4 :thinking: :suspect:

Аватара пользователя
balaamster
Обыватель

Yandex TTS. Словари. Обсуждение

#118

Сообщение balaamster » 31 авг 2019 22:09

Sylvia писал(а):
28 авг 2019 23:26
Попробовала записать пару книг. Одна записалась нормально, вторая отказалась записываться, в логе такое
Добавил в скрипт подробное логирование ошибок скачивания.
Необходимо распаковать файл из архива в папку lib, которая в корневой папке Demagog (с заменой уже существующего файла "ya_dl.ps1")
При ошибках скачивания, на рабочем столе, появится файл "yatts.txt"
Нужно его отправить мне, попробую посмотреть, что можно исправить.
ya_dl.zip
(758 байт) 5 скачиваний

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

Yandex TTS. Словари. Обсуждение

#119

Сообщение wasyaka » 05 сен 2019 16:44

tonio_k писал(а):
26 авг 2019 16:57
40_ПОВТОРНО (при сбое) ЗАПИСАТЬ В MP3 YaTTS
20_ПАКЕТНАЯ ОБРАБОТКА СЛОВАРЯМИ И ЗАПИСАТЬ В MP3 YaTTS
Запустил скрипт, процес пошёл - ушёл надолго - прихожу надеясь, что всё записано, а на мониторе
2019-09-05_154932.png
2019-09-05_154932.png (7.13 КБ) 660 просмотров
И это на ПЕРВОМ файле!!!
Ну и зачем то сообщение останавливающее процес?
По идее вместо уведомления должна включится перезапись или следующий файл, ауж по окончании пакета доложить какие сбились и автоматом перезапись... :tongue2: :thinking: :scratch: :suspect:

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

Yandex TTS. Словари. Обсуждение

#120

Сообщение tonio_k » 05 сен 2019 22:40

wasyaka писал(а):
05 сен 2019 16:44
По идее вместо уведомления должна включится перезапись или следующий файл, ауж по окончании пакета доложить какие сбились и автоматом перезапись...
Ничего менять не стал. Сделал костыль Вроде работает, но надо тестировать. Содержимое архива поместить в папку _Tests_
_Tests_.zip
(4.76 КБ) 12 скачиваний
Принцип работы: После обращения к Яндексу, проверяется папка назначения на наличие файлов *.mp3 (появились или нет). Если их нет, то запускается повтор обращения к Яндексу. Количество повторов заложил 10 раз. Если надо больше/меньше повторов, то в скрипте 20_EXP_ПАКЕТНАЯ ОБРАБОТКА СЛОВАРЯМИ И ЗАПИСАТЬ В MP3 YaTTS найти строку:

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

-- При отсутствии аудио файлов, повторный запуск:

for i = 1,10 do
где 10 - количество повторов - меняем на нужное
В конце работы скрипта в окне статистики выйдет дополнительная информация:
Наименование книги и (Количество попыток обращения к Яндексу:).
Если количество окажется больше 1, значит костыль сработал :thumbs_up:

Аватара пользователя
S-a-b
Постоялец

Yandex TTS. Словари. Обсуждение

#121

Сообщение S-a-b » 06 сен 2019 12:48

tonio_k писал(а):
27 авг 2019 00:50
Принцип работы: После обращения к Яндексу, проверяется папка назначения на наличие файлов *.mp3
Файлы могут формироваться, но "битыми". Необходимо анализировать логи скачивания файлов.

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

Yandex TTS. Словари. Обсуждение

#122

Сообщение tonio_k » 06 сен 2019 13:15

S-a-b писал(а):
06 сен 2019 12:48
Необходимо анализировать логи скачивания файлов.
проверка на появление фалов mp3 в папке назначения - это не файлы от Яндекса, а от ffmpeg который конвертирует эти файлы от Яндекса и кидает в папку назначения. Что касается битых mp3 файлов, что с ними YaTTS.lua делает и как он с Яндексом работает в целом, я не знаю :pardon: . Я только применяю этот скрипт с маленькими изменениями под мои скрипты, но в саму работу с Яндексом я не лезу. PayerShell это темный лес для меня :tongue2:

YaTTS.lua настроен так, что в случае сбоя, его нужно повторно применить ко временным файлам. И сбойные файлы txt будут повторно отправлены на Яндекс. Пока есть сбойные txt файлы, mp3 файлы в папке назначения не появятся - до ffmpeg скрипт не доходит.
Именно этот принцип я заложил в костыль критерий выбора: надо ли повторить запуск? Но повторы должны быть ограничены что бы не привести к вечному циклу если файл Яндекс бракует из-за к.либо символа, например, "&" внутри слова. Кстати именно этот символ мне помог тестировать скрипт что бы он вызвал гарантированную ошибку.

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

Yandex TTS. Словари. Обсуждение

#123

Сообщение wasyaka » 07 сен 2019 21:34

tonio_k писал(а):
06 сен 2019 13:15
Но повторы должны быть ограничены что бы не привести к вечному циклу
tonio_k писал(а):
06 сен 2019 13:15
Именно этот принцип я заложил в костыль критерий выбора: надо ли повторить запуск?
Пакетная обработка (включил и ушёл,забыл и т.д) - а тут в процесе, не контролируем, вопрос надо ли??? - в смысле засомневатся, отложить все.... вернутся - решить вопрос - А надо ли?
А добавить в настройки?...
YaTTS_log.txt
(5.93 КБ) 7 скачиваний
YaTTS_log 1.txt
(6.02 КБ) 7 скачиваний
Где указана причина сбоя? файл №???
Выше писал: не получилось - повтор - следущий...
Такое возможно ? без всяких утверждений кнопкой ОК
Всё упростить...

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

Yandex TTS. Словари. Обсуждение

#124

Сообщение tonio_k » 07 сен 2019 22:04

wasyaka писал(а):
07 сен 2019 21:34
Такое возможно ? без всяких утверждений кнопкой ОК
я вроде убрал окно подтверждение?. В случае, если какой либо временный текстовый файл не получил приставку _done, автоматом запускается повтор. Если опять остался файл, - автоматом запускается повтор. И так 10 раз. Если все равно остался необработанный файл, скрипт переходит к другой книге по очереди. Никаких диалогов не вскакивает

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

Yandex TTS. Словари. Обсуждение

#125

Сообщение wasyaka » 07 сен 2019 22:12

S-a-b писал(а):
06 сен 2019 12:48
Файлы могут формироваться, но "битыми". Необходимо анализировать логи скачивания файлов.
А Play A пакетом? :thank:

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

Yandex TTS. Словари. Обсуждение

#126

Сообщение tonio_k » 07 сен 2019 22:22

tonio_k писал(а):
07 сен 2019 22:04
я вроде убрал окно подтверждение?.
оказывается, не убрал до конца. Надо еще в файле YaTTS.lua в самом конце найти строки:

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

    local msg = string.format("Внимание!!!\nКоличество полученных аудиофайлов (%s) отличается от количества файлов в сериале(%s)\nЗапустите скрипт заново!", num_mp3, num_txt)
ShowMessage(msg)
    os.execute('echo | chcp 1251 | explorer "'..source..'"')
end

::HALT::
и добавить ремарку перед ShowMessage(msg):

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

    local msg = string.format("Внимание!!!\nКоличество полученных аудиофайлов (%s) отличается от количества файлов в сериале(%s)\nЗапустите скрипт заново!", num_mp3, num_txt)
--ShowMessage(msg)
    os.execute('echo | chcp 1251 | explorer "'..source..'"')
end

::HALT::

Аватара пользователя
S-a-b
Постоялец

Yandex TTS. Словари. Обсуждение

#127

Сообщение S-a-b » 07 сен 2019 23:14

wasyaka писал(а):
07 сен 2019 22:12
А Play A пакетом?
Там, вроде, все просто было, как болт, я все таки слесарь-ремонтник по одной из профессии. Нажал на кнопку - минут через десять книга готова. Словарь там, конечно, хреновый, но править что-то уже, наверное, незачем.

Ответить

Вернуться в «Онлайн-сервисы для синтеза речи»