Библиотека для нейросетевого синтеза речи с использованием нескольких ONNX-моделей. С её помощью можно генерировать озвучку текста, учитывая тембр и просодию. Все модели автоматически скачиваются с Hugging Face, а токенизация происходит через REST-сервис.
Для работы библиотеки требуется: - Python 3.6+ - onnxruntime-gpu – для инференса ONNX-моделей - numpy – для числовых операций - huggingface_hub – для скачивания моделей - appdirs – для работы с кэшированием - tqdm – для отображения прогресс-баров
Также в примере используется: - resampy и soundfile – для ресемплинга и записи аудио.
Установка через pip (после упаковки библиотеки):
pip install git+https://github.com/Selectorrr/svr_tts.git
Смотри setup.py для подробностей по пакету.
from svr_tts import SVR_TTS
from svr_tts.core import SynthesisInput
tts = SVR_TTS(api_key="твой_api_ключ")
Чаще всего используются одни и те же аудиоданные, но можно задать разные:
import soundfile, resampy
wave, sr = soundfile.read('tmp/example.ogg')
wave_24k = resampy.resample(wave, sr, 24000)
inputs = [
SynthesisInput(text="Привет, это SVR_TTS!", stress=True, timbre_wave_24k=wave_24k, prosody_wave_24k=wave_24k)
]
audios = tts.synthesize_batch(inputs)
soundfile.write('tmp/example.wav', audios[0], 22050)
Полный пример можно найти в example.py.
Инициализация:
Скачивает модели из репозитория "selectorrrr/svr-tts-large-v1" и создаёт инференс-сессии через onnxruntime.
Смотри реализацию в core.py.
Метод synthesize_batch:
Принимает список объектов SynthesisInput (который включает текст, флаг ударений и аудиоданные для тембра/просодии). Метод выполняет:
Склейку сегментов с помощью функции кроссфейда для плавного перехода.
Подробности:
При вызове synthesize_batch можно задать:
- duration_or_speed:
Если не указан is_speed, рассчитывается длительность на основе длины аудио для просодии.
- scaling_min / scaling_max:
Коэффициенты масштабирования для регулировки параметров синтеза.
Проект распространяется под Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0).
Подробнее смотри в файлах заголовков каждого модуля, например init.py и setup.py.
Если что-то не понятно или возникают проблемы: - Проверь, что модели скачиваются корректно (имеется кэширование в user_cache_dir). - Убедись, что REST-сервис токенизации доступен. - Пиши свои идеи и коммиты – всегда рады фидбэку!
Удачного синтеза, экспериментируй!
$ claude mcp add svr_tts \
-- python -m otcore.mcp_server <graph>