Попробовал основные open-source TTS модельки

Перейдем к практике, вчера сел и финально пощупал основные TTS модельки, все гонял на rtx 3090, ниже результаты.

Fish Speech
А именно openaudio-s1-mini:
https://huggingface.co/fishaudio/openaudio-s1-mini
Накурсорить стриминг инференс не получилось, все вышло далеко от реалтайма, да и качество полученного аудио сомнительное.

Chatterbox
Подход тот же, берем основной репозиторий, отправляем курсор писать стриминг реализацию (opus-4.5). В данном случае есть форк со стримингом, но он для англ модели, а нам нужна мультиязычная. Стриминг завелся, но очень медленный, предполагаю какая-то часть осталась на cpu, хотя перепроверял несколько раз.

Немного цифр:
Time to first chunk: 10837.61 ms
Total generation time: 20.753s
Total audio duration: 5.943s
RTF (Real-Time Factor): 3.492

Качество на выходе странное, с акцентом.

XTTS v2
Чекпоинт брал от бананы: https://huggingface.co/tensorbanana/xttsv2_banana
Тут все отлично завелось и работает, инференс под стриминг апи писал давно и сюрпризов не было.
TTFB: 300-350ms
RTF: 0.3

Проблема одна, качество, достаточно шумное аудио на выходе.

F5 / ESpeech
Есть несколько файнтюнов на русский язык, я взял веса от ESpeech SFT 95K:
https://huggingface.co/ESpeech/ESpeech-TTS-1_SFT-95K

Для быстрой генерации выставляем nfe_steps=16
Получаем:
RTF: 0.14
TTFB: 1.8s
А все потому что диффузионная моделька генерит сразу полное аудио, предыдущие могут отдавать чанки по мере генерации.
Как вариант можно ограничить текст по длине для первого шага, чтобы быстрее получить ответ, и пока воспроизводится первый кусок, успеть сгенерировать последующие. Но скорее всего минимальное время ожидания будет около 1 секунды.

Но есть и плюсы, лучшее качество среди всех вариантов. А также поддержка ruaccent для расстановки ударений.
Примеры речи каждой модели можно послушать в телеграме.

Подписывайтесь на Telegram – xVibeNot

Начать дискуссию