Comments 25
Добрый день , спасибо за обновление ! Интонации вопросительных предложений значительно улучшат натуральность синтеза - а возможность выделения ключевых слов подтвердит что Силеро лидер доступных решений синтеза на русском языке ! Очень ждем ваше обновление омографов для русского языка !
Самый качественный открытый синтез на русском языке! Ну неужели никто ещё не навайбкодил движок tts для простой установки в Андроид?
Как прикрутить к ebook2audiobook?
Идеал вещь эфемерная, поэтому радует сам процесс движения к нему. Спасибо.
Из идей... я наиболее чувствителен к интонированию. Включая пунктуационные паузы, как внутри, так и между предложениями. Там тоже немало нюансов. Поэтому предложу для внутреннего тестирования использовать стихи. На них все моменты наиболее заметны. А уж что покажется вам достойным улучшения, смотрите сами. Не стоит ожидать профессиональной артистической декламации, но уровень школьника на 4 балла (по 5-балльной системе) вполне достижим при ограниченных системных ресурсах.
В стихах нужно соблюдение внутреннего ритма. То есть нужно знать размер и под него подстраивать рисунок.
Решение задачи чтения стихов чем-то сродни пению песен. Это как бы продукт совсем с ортогональными целями.
Включая пунктуационные паузы, как внутри, так и между предложениями.
Для тонкого управления паузами сейчас есть SSML.
Я не знаю, что нужно. Вам виднее. Может сложно, а может и не так.
Предлагая в качестве образца древние движки, я обжегся на человеческом восприятии. Говорю, смотрите на просодию, а люди слыша древнюю фонетику, сразу ставят крест. Но вроде вы специалисты и такое не грозит. Существовал синтезатор — Loquendo Olga. В ее исполнении, стихи интонировались вполне приемлемо. Если не твердая четверка, так тройка с плюсом.
Образец на 4pda, для скачивания требуется регистрация.
С удивлением обнаружил, что синтез речи требует больше ресурсов CPU, чем распознавание...
Хотя у людей наоборот - ребёнок болтает без умолку, мало слушая родителей :)
Вы попросили прикольных и оригинальных идей. У меня есть прикольная, но не слишком оригинальная — сконвертируйте в ONNX и добавьтесь в пакет sherpa. Там все TTS в этом пакете сразу погрустнеют.)
Что касается конвертации, то ONNX-версии у нас естественно есть, но мы их придерживаем для заказчиков, когда нужна какая-то особенная кастомизация / сборка под особенное железо.
Что касается самого ONNX, тогда вся обвязка будет торчать, придется заводить пакет как минимум, и как следствие реально портативность не вырастет (тут не просто одна голая TTS модель).
Что касается именно этого проекта - даже если и публиковать какие-то артефакты в onnx, то вижу мало смысла лить им воду на мельницу.
А насколько этично, если я сам пакет для себя сделаю на базе вашей tts?
Понимаю, что там у вас несколько слоёв, не только tts, как раз для максимально живого голоса.
Вопрос исключительно теоретический.
PS, ещё видел торч адаптации для мобилок, но вызывает сомнение пригодность к конвертации всего кода. Сама голая tts, понятно, пригодна.
PS случайно не туда написал. Это долго было бы ответом в ветку про ONNX.
А как регулировать скорость речи без SSML ?
Как лучше сделать регулировку скорости речи через ssml для модели ru v5_4 ? Попробовал, ошибки . Дипсик пишет , что в этой версии регулировка скорости работает нестабильно.
Стандартный пример из репозитория, секция v5 → SSML:
Пример
ssml_sample = """
<speak>
<p>
Когда я просыпаюсь, <prosody rate="x-slow">я говорю довольно медленно</prosody>.
Пот+ом я начинаю говорить своим обычным голосом,
<prosody pitch="x-high"> а могу говорить тоном выше </prosody>,
или <prosody pitch="x-low">наоборот, ниже</prosody>.
Пот+ом, если повезет – <prosody rate="fast">я могу говорить и довольно быстро.</prosody>
А еще я умею делать паузы любой длины, например, две секунды <break time="2000ms"/>.
<p>
Также я умею делать паузы между параграфами.
</p>
<p>
<s>И также я умею делать паузы между предложениями</s>
<s>Вот например как сейчас</s>
</p>
</p>
</speak>
"""
sample_rate = 48000
speaker = 'xenia'
audio = model.apply_tts(ssml_text=ssml_sample,
speaker=speaker,
sample_rate=sample_rate)
display(Audio(audio, rate=sample_rate))Послушал, звучит как надо. Где тут может быть ошибка — сложно понять без примера.
Причина была в самом тексте, который я вставлял для озвучки. SSML оказался капризным ( чанки были слишком длинные, и кажется, некоторые символы ему не понравились ). С простым текстом скорость речи регулируется.
В частности, проблема в смешении латиницы и кириллицы водном тексте, к примеру "SSML-текст" .
Русскоязычные модели не принимают латиницу.
Да, но без ssml они просто пропускали латиницу, а с ssml стали выдавать ошибку.
Если в ssml вставлять каждый раз тэг для нужного языка это поможет ?
И как вообще можно решить эту проблему ?
Пока у меня скрипт просто заменяет подряд идущие латинские символы предупреждением " буквы латинские " .
Предложение- сделать изменение скорости речи доступным напрямую, как уже есть для `sample rate` . Через SSML очень капризно получается- на некоторых символах модель спотыкается (не только в латинице проблема)
Теперь silero-tts v5 на русском языке умеет задавать вопросы