Yandex TTS
- Pin240
- Интересующийся
- olelog
- Обыватель
Yandex TTS
Подскажите, что происходит с "yndx_tts64" ? Рвет куски текста из файлов, некоторые файлы по 3 минуты, вместо 5, короче получается бред а не книга. Может что изменить в настройках потоков обработки и скачивания файлов ?
- Вложения
-
- Image 003.png (63.91 КБ) 4801 просмотр
-
- Image 001.png (136.5 КБ) 4801 просмотр
- Pin240
- Интересующийся
- wasyaka
- V.I.P.
Yandex TTS
Не чудят, а зделали замануху - подсадили...
теперь ждут денюжку
А в это время не подсевшие на халявный сыр
► Показать
С наступающим!
(это мой предел скорости инета)
-
- Обыватель
Yandex TTS
А если 1 поток поставить? Тов. chibis выше писал что-то про это.
Собственно, следовало ожидать косяков от такого вида озвучки, костыль через демо-страницу однако, лично я вообще удивлен, как chibis так ловко реализовал это
- Pin240
- Интересующийся
- olelog
- Обыватель
Yandex TTS
Поставил один поток, и вот результат ! Хотя почти в два раза дольше, зато все записалось. Если будут проблемы в дальнейшем, то отлично работает ACrow 53 версия с голосом Вальца.
- wasyaka
- V.I.P.
Yandex TTS
А Вас кто-то насильно заставляет его слушать? Если мне Филип не нравится - вы ж от этого его не перестанете слушать?
И там не один ермила, участвуют 5(ПЯТЬ) голосов
-
- Обыватель
- olelog
- Обыватель
Yandex TTS
Ув. "wasyaka", как я понял вы используете лицензионный ключ для Play_5 ?
И пользуясь случаем подскажите что можно с этим сделать ? Я пока вношу в словарь кучу этих "территорий")))
- Вложения
-
- Image 001.png (22.15 КБ) 4665 просмотров
- S-a-b
- Обыватель
Yandex TTS
Здравствуйте, поздравляю всех с наступающим Новым годом!
Лучше предлог "с" заменить на "с`"
- olelog
- Обыватель
Yandex TTS
Вы я понял предлагаете в каждой книге делать замену на "с`" "с мушкой")))? А как это применить для dicOMGaster и грамотно "зазвездить" ?
- wasyaka
- V.I.P.
Yandex TTS
Это не лицензионный, а дэмо-ключ для не премиум голосов
Он же используется и в сборке от ув. tonio_k
В Play_5в словарь кучу этих "территорий")))
rem правим "сёла"
F_all=Replace(F_all, " с ", " с%91 ")
F_all=Replace(F_all, " С ", " С%91 ")
Можно ж ув.chibis добавить в Play_5_filipp?
Кстати ради интереса записал книгу с помощью yndx_tts chibis голосом filipp со стартовыми настройками - быстро и без проблем...(или разов несколько разрешено?)
- olelog
- Обыватель
Yandex TTS
А как это сделать для "yndx_tts64" для словарей dicOMGaster и dicOMG ? Уже довольно долго "затачиваю" эти словари под Филиппа, в "yndx_tts64"
- S-a-b
- Обыватель
- tonio_k
- V.I.P.
Yandex TTS
С='с
А потом удивляться, почему правило
с руки=с рук+И
(и все остальные подобные ему) вдруг перестали срабатывать
UPD имеется в виду, что не "банально" вставить, а "правильно" и так, что бы не сломать уже имеющееся остальные правила. Точно не знаю какой механизм срабатывания правил в словаре dicOMG, но надо точно понимать как сработают такая замена с на с'
- demvi
- Интересующийся
Yandex TTS
Прогу надо поместить в папку с программой Play_5.hta, Запустите программу Ya64Wrap.exe.
Прога запустится с дефолтными настройками см.(Скрин1.png) и создаст файл Ya64Wrap.ini.
Порядок работы следующий: (ДМои действия)
Прилагаемый Файл "02_podg.rex" необходимо поместить в каталог "...Balabolka\dictionaries\02_podg.rex"
После запуска Балаболки, в окне словарей выбрать словарь "02_podg.rex"
Далее
1) Открываем книгу в программе Balabolka.
2) Сохраняем как текст.(Меню - Файл - Сохранить как...).
3) Открываем ранее сохранённый текст(п. 2) в Балаболке.
4) Нажимаем Ctrl+T, текст обрабатывается словарём "02_podg.rex"(если Вы его подключили), заттем выделяем весь текст по Ctrl+A?, и сохраняем его в соответствуещем файле.
5) Вот этот текст открываем в программе Balabolka, и в меню Сервис - Разбить файл на части...(Ctrl+U) разбиваем его на главы, прологи, эпилоги.
Всё.
Далее запускаем прогу "Ya64Wrap.exe", ранее помещенную в папку "yndx_tts64", рядом с "Play_5.hta" и получаем кучу удовольствия.
Чтобы не утратить оптимизма используйте размер фрагмента 3000 или менее, при больших значениях спонтанно яндекс режет хвосты аудио файлов.
Прошу отписаться тех кто рискнёт воспользоваться прогой.
Прога запустится с дефолтными настройками см.(Скрин1.png) и создаст файл Ya64Wrap.ini.
Порядок работы следующий: (ДМои действия)
Прилагаемый Файл "02_podg.rex" необходимо поместить в каталог "...Balabolka\dictionaries\02_podg.rex"
После запуска Балаболки, в окне словарей выбрать словарь "02_podg.rex"
Далее
1) Открываем книгу в программе Balabolka.
2) Сохраняем как текст.(Меню - Файл - Сохранить как...).
3) Открываем ранее сохранённый текст(п. 2) в Балаболке.
4) Нажимаем Ctrl+T, текст обрабатывается словарём "02_podg.rex"(если Вы его подключили), заттем выделяем весь текст по Ctrl+A?, и сохраняем его в соответствуещем файле.
5) Вот этот текст открываем в программе Balabolka, и в меню Сервис - Разбить файл на части...(Ctrl+U) разбиваем его на главы, прологи, эпилоги.
Всё.
Далее запускаем прогу "Ya64Wrap.exe", ранее помещенную в папку "yndx_tts64", рядом с "Play_5.hta" и получаем кучу удовольствия.
Чтобы не утратить оптимизма используйте размер фрагмента 3000 или менее, при больших значениях спонтанно яндекс режет хвосты аудио файлов.
Прошу отписаться тех кто рискнёт воспользоваться прогой.
- Вложения
-
- Yanwrapper.zip
- (103.42 КБ) 94 скачивания
- S-a-b
- Обыватель
Yandex TTS
Я тоже не вкурсе, но речь идет не о замене всех букв "с" в книге, а о замене только предлогов, причем, этот предлог еще и не первый в предложении.
" с = с` "
Я бы поставил в числе последних к обработке.
В Play_* такие вещи были прописаны в скриптах после обработки по словарю
- olelog
- Обыватель
-
- Обыватель
Yandex TTS
Можно пойти дальше
Послушайте разные примеры:
В первую голову пришло, нужно заменить на:
к=к'
и тд, но "при 100 к' плавился" произносит также копеек.
Можно заменить на:
к='к'
Тогда копеек не говорит, уже лучше. Но это правило только если "к" стоит отдельно, если же:
"при 100к плавился" - правило не сработает.
Можно расширить правило, чтобы слева могла быть цифра, а справа либо пробел, либо знак препинания. Тогда получится захватить все сёла и копейки в:
"при 100к плавился" и тд.
Тут вопрос старостам (tonio_k, wasyaka), как это лучше сделать?
Новичкам замечу, эти и подобные правила нужно делать в конце обработки, чтобы все прочие правила, где имеются эти самые "с", "к" и тд, сработали, иначе они просто проигнорируются, например если текст будет вида:
"при 100 'к' плавился", условное правило "к плавился=к пл+авился" не сработает.
Послушайте разные примеры:
► Показать
к=к'
и тд, но "при 100 к' плавился" произносит также копеек.
Можно заменить на:
к='к'
Тогда копеек не говорит, уже лучше. Но это правило только если "к" стоит отдельно, если же:
"при 100к плавился" - правило не сработает.
Можно расширить правило, чтобы слева могла быть цифра, а справа либо пробел, либо знак препинания. Тогда получится захватить все сёла и копейки в:
"при 100к плавился" и тд.
Тут вопрос старостам (tonio_k, wasyaka), как это лучше сделать?
Новичкам замечу, эти и подобные правила нужно делать в конце обработки, чтобы все прочие правила, где имеются эти самые "с", "к" и тд, сработали, иначе они просто проигнорируются, например если текст будет вида:
"при 100 'к' плавился", условное правило "к плавился=к пл+авился" не сработает.
- S-a-b
- Обыватель
- wasyaka
- V.I.P.
Yandex TTS
Нормально, только надо указать, что аудио сохраняется в папке текста, но так даже удобней...
- olelog
- Обыватель
Yandex TTS
Решил проблему с " с территории" . Мушки на "с`" пробелы и прочее не помогли. Решение * с территории *= с террит+ории
- Вложения
-
- Image 002.png (87.4 КБ) 4539 просмотров
-
- Обыватель
Yandex TTS
Но от сёл вы не избавились, они будут преследовать вас дальше в других словосочетаниях. Вы исключили только один случай.
А еще есть копейки, рубли, метры....
Кстати, а почему мушки не помогли? Прослушал сейчас пару примеров, там все ок.
А еще есть копейки, рубли, метры....
Кстати, а почему мушки не помогли? Прослушал сейчас пару примеров, там все ок.
- sws
- Наблюдатель
Yandex TTS
Давно избавился от глюка Яндекса с приставкой с(село)...
Глобальным способом вводом в словарь..
с=сьь
Формат словаря ssiiaa
Глобальным способом вводом в словарь..
с=сьь
Формат словаря ssiiaa
- olelog
- Обыватель
Yandex TTS
В разных словарях работает по-разному возможно, я не большой спец, для себя решил вопрос для "yndx_tts64" и применяемых там словарей, поделился с другими. Если по данной проблеме у кого будут решения с "копейками, рублями, метрами, сёлами", буду рад если поделитесь )))
- Pin240
- Интересующийся
Yandex TTS
Обычно я переганяю текст в котором не менее 1500 кусков(файлы в txt весят более 4мв в 1252 кодировке ) и даже на одном потоке, примерно после 300-400, просто стопрится.
Не смотря на то что у меня есть демо ключ для плэй 5, он отказывается нормально с таким объемом текста работать.
Пробовал уменьшать кол-во знаков на один кусок - та же пляска. Доходит примерно до 1\4 всего текста и все.
А с мелкими (около 200 кусков по 4950 знака) текст которых примерно не более 1мв - нормуль.
Например китайску новелку Release-that-Witch Освободите-эту-Ведьму(11мв) не потянул
Даже в балоболке раз 6 пришлось, с определенного куска, включать.
Заметил особенность: wav кусков удается больше скачать чем ogg.
Перегнать в mp3 не проблема, за одно и громкость повышаю, а в некоторых голосах темп и высоту подравниваю. Если кому интересно могу написать свой скрипт
- Pin240
- Интересующийся
Yandex TTS
Может кому пригодится
Исходный файл wav с частатой 44100 Гц
asetrate=44100*0.9 - понизить высоту тона на 0.1
atempo=0.91 - принудительно выравнивание темпа (уменьшение на 0.9). Есть вариант atempo=sqrt(0.91) - изменение по средне квадратичному. С подбором нужно экперементировать.
-b:a 96k -codec:a libmp3lame "%%~nf".mp3 - не нуждается в пояснении
&& del "%%f".wav - удаление исходника
@color 72 - цвет в окне cmd
Выравнивание громкости. Пример также можно и на цикл адаптировать
f=200 -кол-во кадров для анализа
p=0.9 - граница пиков громкости
g=19 - параметр не обязательный, метод по гаусу (обязательно не четное число предел от 3 до 301) подробней ройте в мануале ffmpeg
-b:a 96k -codec:a libmp3lame - кодек указывать обязательно иначе вылетит ошибка
Исходный файл wav с частатой 44100 Гц
Код: Выделить всё
@echo off
@color 72
@REM сканарование wav
FOR %%f IN (*.wav) DO (
echo %%f
ffmpeg -i "%%f" -filter:a "asetrate=44100*0.9,aresample=44100,atempo=0.91" -b:a 96k -codec:a libmp3lame "%%~nf".mp3 && del "%%~nf".wav
)
@color 72
@echo Успешно
pause
atempo=0.91 - принудительно выравнивание темпа (уменьшение на 0.9). Есть вариант atempo=sqrt(0.91) - изменение по средне квадратичному. С подбором нужно экперементировать.
-b:a 96k -codec:a libmp3lame "%%~nf".mp3 - не нуждается в пояснении
&& del "%%f".wav - удаление исходника
@color 72 - цвет в окне cmd
Выравнивание громкости. Пример также можно и на цикл адаптировать
Код: Выделить всё
ffmpeg -i "0001.wav" -filter:a "dynaudnorm=f=200:p=0.9:g=19" -b:a 96k -codec:a libmp3lame 0001.mp3
p=0.9 - граница пиков громкости
g=19 - параметр не обязательный, метод по гаусу (обязательно не четное число предел от 3 до 301) подробней ройте в мануале ffmpeg
-b:a 96k -codec:a libmp3lame - кодек указывать обязательно иначе вылетит ошибка
- Pin240
- Интересующийся
Yandex TTS
Вылетает если добавить 1500 файлов сразу
За несколько заходов добавляет(по 400 штук)
Погонял немного,вроде работает
Куски использовал не большие. (5-10Кб)
200 кусков - полет нормальный
- demvi
- Интересующийся
Yandex TTS
Ну на такой экстрим я не рассчитывал. Кстати, рвать файлы на мелкие куски не обязательно, речь шла о размере фрагментов, посылаемых yndxfilipp.exe. А этот размер выставляется в Настройках. Я рву на куски книгу только из желания иметь осмысленные названия аудио файлов (01_Пролог.ogg, 02_Глава 1 и т.д.) и делю книгу в Балаболке, ибо она с этим прекрасно справляется.
- demvi
- Интересующийся
Yandex TTS
Добавлю следующее:
Если надо разбить книгу на файлы определенной длительности(например - 10минут), имеет смысл добавить в Ya64Wrap.exe файл полной книги, а длительность аудио файла задать числом склеиваемых *.ogg файлов. Например - размер фрагмента установлена в мои любимые 3000, это 3-3,5 минуты звучания Филиппа на скорости 1,0. Если склеивать по 3 фрагмента, то на выходе получатся файлы длительностью около 10 минут. И не надо будет закидывать в прогу по 1500 кусков. Текст книги желательно поместить в отдельную папку, так как все создаваемые файлы(аудио, логи, и обработаннй текст) будут помещены в папку Яндекс, которую прога создаст в папке с исходным текстом книги.
- Pin240
- Интересующийся
Yandex TTS
Это был намеренный краш тест)
Обычно я делю по 4950 символов - это чуть больше 5 минут.
Мне лично это удобно так как иногда бывает случайно зажимаю кнопки на плеере.
Позже проверю как зажует цельные большие файлы, обязательно отпишусь.
Кстате проверено. Когда длина одного аудио файла в балаболке, более 50 минут, она обрывает, даже если еще остался текст. (либо у меня не оттуда руки растут:)
А вот за то что создается отдельно подкаталог - полная уважуха) иногда этого так не хватало.
- Pin240
- Интересующийся
Yandex TTS
А можно расширит функционал?
Добавить запуск указанного батника после скачивания.
11мв Жует уже ночь, но только на середине(4040 фрагмента из 1 файла). Балаболка быстрей обрабатывает
- demvi
- Интересующийся
Yandex TTS
По поводу времени обработки это не ко мне, моя прога только и делает, что готовит тест в соответствии с настройками, скармливает его yndxfilipp.exe, а после полученные файлы переименовывает и копирует в каталог Яндекс в папке с книгой.
При одном потоке скачивания наверно и не удивительно такое время обработки.
По поводу функционала - нет, лень, да и халява может скоро кончится.
- chibis
- Обыватель
Yandex TTS
Я выкладывал выше вариант экзешника, который перекачивает сорвавшиеся файлы. Им надо заменить предыдущий, независимо от варианта сборки в которой он используется и от настроек.
- Lecron
- Специалист
Yandex TTS
Предлагаю создать для программы отдельную ветку в разделе "Программы, использующие синтез речи в Windows", где выкладывать обновления в шапке (первом сообщении темы). Очень неудобно искать по форуму и/или следить за развитием софтины. Особенно если не читать ветку регулярно. Недавно сам оказался в ситуации olelog и тоже нуждался в вашем совете по поиску.
-
- Обыватель
Yandex TTS
А лучше не отдельную ветку, а прямо здесь закрепить первое сообщение, где будут все сборки для Яндекс TTS. Собственно, например как на 4пда (все уже придумано до нас).
- Fabe
- Постоялец
Yandex TTS
Привет
Может кто то обяснить как купить лицензионный ключ?
Дать ссылку что ли, заходил пробовал так и не понял как ..
Спасибо.
Может кто то обяснить как купить лицензионный ключ?
Дать ссылку что ли, заходил пробовал так и не понял как ..
Спасибо.
- balabolka
- V.I.P.
Yandex TTS
Тут нет "лицензионного ключа"; можно зарегистрироваться в "Яндекс.Облаке" и получить API-ключ для доступа к голосам "Яндекс SpeechKit". Этот ключ применяется для отправки запросов к сервису, а в ответ сервер будет возвращать звуковые файлы с речью и списывать деньги с Вашего баланса в "Яндекс.Облаке".
- Зарегистрируйтесь в Яндекс.Облаке.
- Войдите в консоль "Облака". Изначально Вам доступны 3000 виртуальных рублей для тестирования сервиса синтеза речи (прочтите в документации про пробный период). Когда закончится пробный период, надо будет пополнить баланс своими деньгами (кнопка "Пополнить баланс").
- В консоли нажмите ссылку "Перейти в текущий каталог".
- В текущем каталоге "Облака" нажмите ссылку "Сервисные аккаунты".
- Нажмите кнопку "Создать сервисный аккаунт". Выберите имя и роль (например, "admin").
- Когда сервисный аккаунт будет создан, зайдите в его свойства и нажмите ссылку "Создать новый ключ" (см. документацию). Будет предложено три варианта ключей, выберите "Создать API-ключ". Введите описание ключа (например: "Ключ для SpeechKit").
- Всё, ключ готов - идентификатор (20 символов) и сам API-ключ (40 символов). Обязательно скопируйте и сохраните эти данные на диске компьютера. API-ключ можно использовать для платного доступа к "Яндекс SpeechKit", в том числе и к премиум-голосам.
- Primkray
- Обыватель
Yandex TTS
Телеграм бот использует голоса от ЦРТ (speechpro.com). Звучит очень впечатляюще.tonio_k писал(а): ↑16 дек 2020 16:46я бы рекомендовал копать в сторону телеграмм бота https://t.me/STC_TTS_bot Здесь ограничение 1000 символов, что в 2 раза больше чем на сайте
- Вложения
-
- stc-cloud_tts.wav
- Голос Владимир
- (1.4 МБ) 128 скачиваний
-
- Обыватель
Yandex TTS
Всем привет. В приложенных гибридная сборка DemagogYandex, попытка объединения сборок tonio_k + wasyaka.
Некоторые моменты по этой сборке:
- Все скрипты от tonio_k (те что в папке "_Tests_", а также "profiles\mylib_index.lua").
- При объединении сборок, основной упор я делал на простоту в работе со словарями, но не в ущерб полноте и качеству. Поэтому многие словари были объединены, часть словарей расформированы или удалены за ненадобностью. Были также созданы новые словари и правила.
- Все новые/объединенные словари имеют окончание "_птр". Все прочие словари имеют свои исконные названия (кроме порядкового номера), на случай, если нужно будет их сравнить с оригиналом и тп.
- Данная сборка под старые (не премиум) голоса Яндекса! На форуме есть сборка от tonio_k под премиум голоса, и если кто-то захочет использовать в ней словари из текущей сборки, то достаточно их скопировать туда, удалив все прежние словари. Лично я не записываю книги Филиппом, т.к. он хоть и лучше произносит многие слова (важно - не косячит в редких словах с буквой Ц!), но в целом усвоение прочитанного мне показалось хуже, чем с тем же "старым" Самохваловым. К тому же, есть косяк с полнотой полученных файлов, и часто были пропуски фрагментов текста.
- В каждый словарь я добавил краткое описание для чего он. Также в папке со словарями есть небольшой файл-справка. Это может помочь ориентироваться новичкам.
Краткий лог объединения сборок:
Что еще.
Я временно убрал словарь чисел "10_REX_числа(chisla).rex" в виду того, что он делал много неправильных замен.
Но с него я бы как минимум использовал конвертацию римских чисел. Тут просьба старожилам форума - tonio_k и wasyaka, поможете разобраться? )
Словарь чисел довольно сложный, я боюсь его трогать.
Еще, очень нужно запретить Яндексу произносить не в тему "сёла, рубли, копейки, метры" и тд. Например в этих конструкциях:
"смотри р.6 (шестой раздел)"
"смотри р 6 (шестой раздел)"
"при 100 к нему"
"при 100к плавился" (кельвинов)
"за 100 м он" (минут)
"уехал с территории места" (причем тут село?)
Тут также просьба о помощи tonio_k и wasyaka, в конце концов это общая проблема.
Буду рад любой критике! Особенно, опять таки, от tonio_k и wasyaka, ведь на ваших сборках основана эта.
Если кому-то надо, могу отправить подробный лог объединения сборок.
Потом, важный вопрос объединения словарей разных людей. Предлагаю как следует подумать над этим вопросом.
Основная проблема - то что есть несколько сборок, и в каждой своя структура словарей, которая до кучи может меняться. Но каждый отдельный человек пополняет свои словари, и жаль, что нет возможности делиться ими. Собственно, именно поэтому я и упростил свою сборку, чтобы было легче ориентироваться в словарях и правилах.
Большая часть правил, это по-сути новые ударения отдельных слов.
В моей сборке это словари:
"71_Яндекс+слова+имена+ци_птр.dic" + "72_Яндекс+слова+имена+ци_звёзды_птр.dic". В других сборках они похожи.
Потом идут правила с корректировкой фраз, в словарях:
"40_ЗВЕЗДЫ ОКОНЧАНИЯ@.dic" и "51_ОМОГРАФЫ_птр.dic".
Примечание:
И еще есть словарь с сокращениями:
"0.1_Предв_аббр+сокр+англ_птр.dic".
Это так сказать основные 5 словарей, которые могут разрастаться при "повседневном" использовании. Прошу прощение за грубую формулировку, но примерно оно так и есть.
Все остальные словари обновляются реже, и их можно назвать системообразующими. Работать с ними, при обычном использовании, почти не придется.
Можно попробовать синхронизировать только лишь 5 обозначенных словарей.
В виду того, что это простые правила DIC, вероятность появления здесь серьезных ошибок минимально.
К тому же эти словари во всех сборках похожи, разве что словарь "0.1_Предв_аббр+сокр+англ_птр.dic" в других сборках "раскидан" по разным словарям.
Что скажете, коллеги?
Сборка:
Некоторые моменты по этой сборке:
- Все скрипты от tonio_k (те что в папке "_Tests_", а также "profiles\mylib_index.lua").
- При объединении сборок, основной упор я делал на простоту в работе со словарями, но не в ущерб полноте и качеству. Поэтому многие словари были объединены, часть словарей расформированы или удалены за ненадобностью. Были также созданы новые словари и правила.
- Все новые/объединенные словари имеют окончание "_птр". Все прочие словари имеют свои исконные названия (кроме порядкового номера), на случай, если нужно будет их сравнить с оригиналом и тп.
- Данная сборка под старые (не премиум) голоса Яндекса! На форуме есть сборка от tonio_k под премиум голоса, и если кто-то захочет использовать в ней словари из текущей сборки, то достаточно их скопировать туда, удалив все прежние словари. Лично я не записываю книги Филиппом, т.к. он хоть и лучше произносит многие слова (важно - не косячит в редких словах с буквой Ц!), но в целом усвоение прочитанного мне показалось хуже, чем с тем же "старым" Самохваловым. К тому же, есть косяк с полнотой полученных файлов, и часто были пропуски фрагментов текста.
- В каждый словарь я добавил краткое описание для чего он. Также в папке со словарями есть небольшой файл-справка. Это может помочь ориентироваться новичкам.
Краткий лог объединения сборок:
► Показать
Я временно убрал словарь чисел "10_REX_числа(chisla).rex" в виду того, что он делал много неправильных замен.
Но с него я бы как минимум использовал конвертацию римских чисел. Тут просьба старожилам форума - tonio_k и wasyaka, поможете разобраться? )
Словарь чисел довольно сложный, я боюсь его трогать.
Еще, очень нужно запретить Яндексу произносить не в тему "сёла, рубли, копейки, метры" и тд. Например в этих конструкциях:
"смотри р.6 (шестой раздел)"
"смотри р 6 (шестой раздел)"
"при 100 к нему"
"при 100к плавился" (кельвинов)
"за 100 м он" (минут)
"уехал с территории места" (причем тут село?)
Тут также просьба о помощи tonio_k и wasyaka, в конце концов это общая проблема.
Буду рад любой критике! Особенно, опять таки, от tonio_k и wasyaka, ведь на ваших сборках основана эта.
Если кому-то надо, могу отправить подробный лог объединения сборок.
Потом, важный вопрос объединения словарей разных людей. Предлагаю как следует подумать над этим вопросом.
Основная проблема - то что есть несколько сборок, и в каждой своя структура словарей, которая до кучи может меняться. Но каждый отдельный человек пополняет свои словари, и жаль, что нет возможности делиться ими. Собственно, именно поэтому я и упростил свою сборку, чтобы было легче ориентироваться в словарях и правилах.
Большая часть правил, это по-сути новые ударения отдельных слов.
В моей сборке это словари:
"71_Яндекс+слова+имена+ци_птр.dic" + "72_Яндекс+слова+имена+ци_звёзды_птр.dic". В других сборках они похожи.
Потом идут правила с корректировкой фраз, в словарях:
"40_ЗВЕЗДЫ ОКОНЧАНИЯ@.dic" и "51_ОМОГРАФЫ_птр.dic".
Примечание:
► Показать
"0.1_Предв_аббр+сокр+англ_птр.dic".
Это так сказать основные 5 словарей, которые могут разрастаться при "повседневном" использовании. Прошу прощение за грубую формулировку, но примерно оно так и есть.
Все остальные словари обновляются реже, и их можно назвать системообразующими. Работать с ними, при обычном использовании, почти не придется.
Можно попробовать синхронизировать только лишь 5 обозначенных словарей.
В виду того, что это простые правила DIC, вероятность появления здесь серьезных ошибок минимально.
К тому же эти словари во всех сборках похожи, разве что словарь "0.1_Предв_аббр+сокр+англ_птр.dic" в других сборках "раскидан" по разным словарям.
Что скажете, коллеги?
Сборка:
- tonio_k
- V.I.P.
Yandex TTS
скорее всего тут проблема "репертуара" а не самого словаря. Если ваш репертуар, например, классическое фентези, то словарь хорош и даже необходим!, а если книга в стиле компьютерной игры или историческая и переполненная цифрами и необычными сокращениями, то, возможно словарь не справляется
эта ситуация является продолжением предыдущей. Помимо самоуправства Яндекса (лучше бы просто букву "с" выговаривал чем "село") с этими авторскими сокращениями, в зависимости от репертуара, может быть просто головная боль. А ведь кто-то даже не знает о существовании этой проблеммы! потому что слушает другого рода книги.
Здесь я рекомендую в ручную искать цифры с сокращениями в тексте и каждое сокращение поверять на предмет правильности озвучки и делать замену в самом тексте книги до применения правил (можно сделать хитрый поиск регуляркой для поиска именно сокращения что бы сократить ручной труд по поиску). Словари это контекстный поиск отрезков текста. Ваш пример за 100 м он это может оказаться: и метров и минут и миллионов. Причём метров (ИМХО) более вероятно.
Специфичный репертуар подразумевает специфичные правила в словарях. А если словарь будет переполнен "специфическими исключениями" то другой пользователь если начнет пользоваться вашими словарями, но слушать другие книги, может так сложиться, что ваш словарь только ломает и ухудшает то, что (по мнению пользователя в его книгах) голосовой движок и так прекрасно озвучивает по умолчанию. Вот вам и ответ, на ваш
Разные люди, разные репертуары отсюда взаимоисключающие правила."важный вопрос объединения словарей разных людей."
сложного ничего нет. Если правило из двух слов, то один словарь. Если правило из трёх и более слов - другой словарь. Если правило содержит два омографа то кидаем в третий словарь. Если два омографа и ещё слова то четвертый. Дело в том, что таким образом я добивался сортировки правил не "по длине левой части правила", а "по количеству слов в левой части правила". Поэтому пришлось разбивать словарь на несколько словарей - как раз для удобства работы со словарями когда правило нужно отсортировать по количеству слов. Куда воткнуть правило - сразу видно по названию словаря. В основном пополняются только 2 словаря из этой четверки: самый первый - тот что для двух слов; и самый последний - тот что для трёх слов и более. Кроме того, распределение на несколько словарей и их последовательное применение через скрипт создаёт некое подобие алгоритма прямого перебора. В результате правила применяются с быстрым алгоритмом, но с частично последовательным применением правил. Получается некий баланс при той же скорости имеем относительно предсказуемый результат срабатывания правил. Дело в том, что просто отсортировать единый словарь и оставить пользовательскую сортировку для быстрого алгоритма, что бы быстрый алгоритм отработал "перебором" не получится (тогда бы мы получили быстрый прямой перебор ). Нужно именно распределение по словарям, что бы обеспечить хотя бы частичное срабатывание правил в стиле "прямого перебора". Можно, конечно, склеить все словари в один и применить их через "прямой перебор". Тогда будет всего один словарь с предсказуемым последовательным применением правил, но при этом, какая будет просадка по скорости применения словаря? Может она не значительная и ей можно пренебречь? Попробуйте. Для этого нужно в этих словарях в названии добавить символ @ и к словарю будет применен прямой перебор. И посмотрите по времени устроит ли вас такое? (Я говорю без иронии разница может действительно оказаться несущественной на ваш взгляд. Нужно экспериментировать)
-
- Обыватель
Yandex TTS
Ну лично у меня встречались ошибки в банальных датах, вроде такого "с тысяча девятьсот шестом году". Часто встречалось, поэтому я решил убрать этот словарь совсем, тем более там много градусов, дециметров и чего-то такого еще, довольно редкого, и часто для Яндекса эти правила и не нужны, он сам переводит. Вот римские цифры очень жалко, их нужно как-то отдельно вытащить.
Именно поэтому лучше просто произносить "сто эм" :) Даже в одной книге могут встретиться и минуты и метры, и все случаи тут не опишешь в правилах, а универсального "сто эм" будет достаточно, по крайней мере понятно, что речь про "100 м", из контекста станет ясно что именно под "м".
Поэтому лучше унифицировать произношение спорных слов. Пусть лучше будет "100 эм", чем наиболее вероятное слово, которое может оказаться не в тему, и нарушит нормальное прослушивание книги.
Ну если кому-то нужно чаще слышать метры, чем минуты (если по тому же примеру), он может отдельно прописать себе эти спорные правила, сейчас речь про общие для всех однозначные правила.
А, теперь ясно, спасибо! Я просто объединил эти словари, без указания прямого перебора, вероятно часть правил теперь не срабатывает (впрочем, думаю это единицы, если вообще есть). Чуть позже сравню по скорости с БА и ПП.
-
- Обыватель
Yandex TTS
Еще, по поводу словаря чисел.
Встретился такой вот нормализатор:
https://github.com/snakers4/russian_stt ... malization
Как время позволит проверю его. В целом неплохие отзывы (нашел его на Хабре), но не идеально.
Там в ветке есть примеры косячной обработки, но разработчики вроде как дорабатывают модель.
Возможно эта штука лучше оптимизирует текст, нужно сравнивать.
Здесь был тов. Эхо, возможно он сталкивался с этим или подобным нормализатором?
Встретился такой вот нормализатор:
https://github.com/snakers4/russian_stt ... malization
Как время позволит проверю его. В целом неплохие отзывы (нашел его на Хабре), но не идеально.
Там в ветке есть примеры косячной обработки, но разработчики вроде как дорабатывают модель.
Возможно эта штука лучше оптимизирует текст, нужно сравнивать.
Здесь был тов. Эхо, возможно он сталкивался с этим или подобным нормализатором?
- tonio_k
- V.I.P.
Yandex TTS
да, это единичные случаи. Причём могут на нескольких книгах не вылезти ни разу, а может в одной книге несколько раз встретиться. На них вы обратите внимание только тогда, когда добавленное корректирующее правило по непонятным причинам будет отказываться срабатывать. Обычно это случаи, когда конфликтуют два варианта правила (нахлёст совпадения), в которых омограф в одном правиле стоит в конце, а в другом правиле в начале и эти оба правила срабатывают на тексте. Какой бы длины не было правило при совпадении будет срабатывать то правило, в котором омограф стоит первым. Это особенность быстрого алгоритма. Уточнение: это не значит, что другое правило игнорируются, это значит, что одно правило будет всегда затирать результат другого правила как не сортируй эти правила между собой в словаре. Решение - либо отдаем предпочтение только одному правилу и удаляем/изменяем другое, либо переносим одно из правил в другой словарь что бы последовательность применния словарей давало нужный результат замены.
- tonio_k
- V.I.P.
Yandex TTS
он написан на питоне. Здесь на форуме Lecron выкладывал свои разработки
http://i91650e3.beget.tech/viewtopic.php?f=41&t=958 на этом языке. Может он прокомментирует эту разработку? Лично у меня нет даже базовых знаний как воспользоваться выложенным Lecron наработками что бы хотя бы пощупать, не говоря о том, что бы попробовать это как-то на каком-то этапе прикрутить к Демагогу.