Yandex TTS
Добавлено: 21 дек 2020 21:52
Все же балаболка вещь)) Особенно когда есть свой API ключ
А если 1 поток поставить? Тов. chibis выше писал что-то про это.
Ув. "wasyaka", как я понял вы используете лицензионный ключ для Play_5 ?
Это не лицензионный, а дэмо-ключ для не премиум голосов
В Play_5в словарь кучу этих "территорий")))
С='с
Я тоже не вкурсе, но речь идет не о замене всех букв "с" в книге, а о замене только предлогов, причем, этот предлог еще и не первый в предложении.
В разных словарях работает по-разному возможно, я не большой спец, для себя решил вопрос для "yndx_tts64" и применяемых там словарей, поделился с другими. Если по данной проблеме у кого будут решения с "копейками, рублями, метрами, сёлами", буду рад если поделитесь )))
Обычно я переганяю текст в котором не менее 1500 кусков(файлы в txt весят более 4мв в 1252 кодировке ) и даже на одном потоке, примерно после 300-400, просто стопрится.
Код: Выделить всё
@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
Код: Выделить всё
ffmpeg -i "0001.wav" -filter:a "dynaudnorm=f=200:p=0.9:g=19" -b:a 96k -codec:a libmp3lame 0001.mp3
Ну на такой экстрим я не рассчитывал. Кстати, рвать файлы на мелкие куски не обязательно, речь шла о размере фрагментов, посылаемых yndxfilipp.exe. А этот размер выставляется в Настройках. Я рву на куски книгу только из желания иметь осмысленные названия аудио файлов (01_Пролог.ogg, 02_Глава 1 и т.д.) и делю книгу в Балаболке, ибо она с этим прекрасно справляется.
Добавлю следующее:
Это был намеренный краш тест)
По поводу времени обработки это не ко мне, моя прога только и делает, что готовит тест в соответствии с настройками, скармливает его yndxfilipp.exe, а после полученные файлы переименовывает и копирует в каталог Яндекс в папке с книгой.
Я выкладывал выше вариант экзешника, который перекачивает сорвавшиеся файлы. Им надо заменить предыдущий, независимо от варианта сборки в которой он используется и от настроек.
Предлагаю создать для программы отдельную ветку в разделе "Программы, использующие синтез речи в Windows", где выкладывать обновления в шапке (первом сообщении темы). Очень неудобно искать по форуму и/или следить за развитием софтины. Особенно если не читать ветку регулярно. Недавно сам оказался в ситуации olelog и тоже нуждался в вашем совете по поиску.
Тут нет "лицензионного ключа"; можно зарегистрироваться в "Яндекс.Облаке" и получить API-ключ для доступа к голосам "Яндекс SpeechKit". Этот ключ применяется для отправки запросов к сервису, а в ответ сервер будет возвращать звуковые файлы с речью и списывать деньги с Вашего баланса в "Яндекс.Облаке".
Телеграм бот использует голоса от ЦРТ (speechpro.com). Звучит очень впечатляюще.tonio_k писал(а): ↑16 дек 2020 16:46я бы рекомендовал копать в сторону телеграмм бота https://t.me/STC_TTS_bot Здесь ограничение 1000 символов, что в 2 раза больше чем на сайте
скорее всего тут проблема "репертуара" а не самого словаря. Если ваш репертуар, например, классическое фентези, то словарь хорош и даже необходим!, а если книга в стиле компьютерной игры или историческая и переполненная цифрами и необычными сокращениями, то, возможно словарь не справляется
эта ситуация является продолжением предыдущей. Помимо самоуправства Яндекса (лучше бы просто букву "с" выговаривал чем "село") с этими авторскими сокращениями, в зависимости от репертуара, может быть просто головная боль. А ведь кто-то даже не знает о существовании этой проблеммы! потому что слушает другого рода книги.
Разные люди, разные репертуары отсюда взаимоисключающие правила."важный вопрос объединения словарей разных людей."
сложного ничего нет. Если правило из двух слов, то один словарь. Если правило из трёх и более слов - другой словарь. Если правило содержит два омографа то кидаем в третий словарь. Если два омографа и ещё слова то четвертый. Дело в том, что таким образом я добивался сортировки правил не "по длине левой части правила", а "по количеству слов в левой части правила". Поэтому пришлось разбивать словарь на несколько словарей - как раз для удобства работы со словарями когда правило нужно отсортировать по количеству слов. Куда воткнуть правило - сразу видно по названию словаря. В основном пополняются только 2 словаря из этой четверки: самый первый - тот что для двух слов; и самый последний - тот что для трёх слов и более. Кроме того, распределение на несколько словарей и их последовательное применение через скрипт создаёт некое подобие алгоритма прямого перебора. В результате правила применяются с быстрым алгоритмом, но с частично последовательным применением правил. Получается некий баланс при той же скорости имеем относительно предсказуемый результат срабатывания правил. Дело в том, что просто отсортировать единый словарь и оставить пользовательскую сортировку для быстрого алгоритма, что бы быстрый алгоритм отработал "перебором" не получится (тогда бы мы получили быстрый прямой перебор ). Нужно именно распределение по словарям, что бы обеспечить хотя бы частичное срабатывание правил в стиле "прямого перебора". Можно, конечно, склеить все словари в один и применить их через "прямой перебор". Тогда будет всего один словарь с предсказуемым последовательным применением правил, но при этом, какая будет просадка по скорости применения словаря? Может она не значительная и ей можно пренебречь? Попробуйте. Для этого нужно в этих словарях в названии добавить символ @ и к словарю будет применен прямой перебор. И посмотрите по времени устроит ли вас такое? (Я говорю без иронии разница может действительно оказаться несущественной на ваш взгляд. Нужно экспериментировать)
Ну лично у меня встречались ошибки в банальных датах, вроде такого "с тысяча девятьсот шестом году". Часто встречалось, поэтому я решил убрать этот словарь совсем, тем более там много градусов, дециметров и чего-то такого еще, довольно редкого, и часто для Яндекса эти правила и не нужны, он сам переводит. Вот римские цифры очень жалко, их нужно как-то отдельно вытащить.
Именно поэтому лучше просто произносить "сто эм" :) Даже в одной книге могут встретиться и минуты и метры, и все случаи тут не опишешь в правилах, а универсального "сто эм" будет достаточно, по крайней мере понятно, что речь про "100 м", из контекста станет ясно что именно под "м".
Поэтому лучше унифицировать произношение спорных слов. Пусть лучше будет "100 эм", чем наиболее вероятное слово, которое может оказаться не в тему, и нарушит нормальное прослушивание книги.
Ну если кому-то нужно чаще слышать метры, чем минуты (если по тому же примеру), он может отдельно прописать себе эти спорные правила, сейчас речь про общие для всех однозначные правила.
А, теперь ясно, спасибо! Я просто объединил эти словари, без указания прямого перебора, вероятно часть правил теперь не срабатывает (впрочем, думаю это единицы, если вообще есть). Чуть позже сравню по скорости с БА и ПП.
да, это единичные случаи. Причём могут на нескольких книгах не вылезти ни разу, а может в одной книге несколько раз встретиться. На них вы обратите внимание только тогда, когда добавленное корректирующее правило по непонятным причинам будет отказываться срабатывать. Обычно это случаи, когда конфликтуют два варианта правила (нахлёст совпадения), в которых омограф в одном правиле стоит в конце, а в другом правиле в начале и эти оба правила срабатывают на тексте. Какой бы длины не было правило при совпадении будет срабатывать то правило, в котором омограф стоит первым. Это особенность быстрого алгоритма. Уточнение: это не значит, что другое правило игнорируются, это значит, что одно правило будет всегда затирать результат другого правила как не сортируй эти правила между собой в словаре. Решение - либо отдаем предпочтение только одному правилу и удаляем/изменяем другое, либо переносим одно из правил в другой словарь что бы последовательность применния словарей давало нужный результат замены.
он написан на питоне. Здесь на форуме Lecron выкладывал свои разработки