python3.11 -m venv .venv source .venv/bin/activate pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu126 pip install -r requirements.txt cp .env.example .env # отредактировать .env под свой бэкенд
Требуется PyTorch 2.4.0+cu121 (установлен). S2-сервер и WebSocket-прокси запускаются в разных терминалах:
# Терминал 1: S2 API сервер cd models/fish-speech PYTHONPATH=. /home/gmikcon/Projects/voice/.venv/bin/python tools/api_server.py \ --llama-checkpoint-path checkpoints/fs-1.2-int4-g128-s2-pro-nf4 \ --decoder-checkpoint-path checkpoints/s2-pro/codec.pth \ --listen 127.0.0.1:8081 --compile # Первый запуск ~3.5 мин (компиляция), потом ~50 tok/s, ~9.6 GB VRAM # Терминал 2: WebSocket прокси cd /home/gmikcon/Projects/voice TTS_BACKEND=s2 python -m voice_tts.main
# Без --compile: ~6 tok/s cd models/fish-speech && PYTHONPATH=. /home/gmikcon/Projects/voice/.venv/bin/python \ tools/api_server.py \ --llama-checkpoint-path checkpoints/fs-1.2-int4-g128-s2-pro-nf4 \ --decoder-checkpoint-path checkpoints/s2-pro/codec.pth \ --listen 127.0.0.1:8081
Если выходит новая версия S2-Pro:
python tools/llama/quantize.py --checkpoint-path ... --mode int4 --groupsize 128--llama-checkpoint-path на новый квантизованный чекпоинтTTS_BACKEND=fish_speech \ DEFAULT_VOICE_REF=voices/default_ref.wav \ DEFAULT_REF_TEXT="текст референса" \ WARMUP=true \ python -m voice_tts.main
TTS_BACKEND=xtts_v2 \ DEFAULT_VOICE_REF=voices/default_ref.wav \ python -m voice_tts.main
Модель скачивается автоматически при первом запуске.
TTS_BACKEND=dummy python -m voice_tts.main
curl http://localhost:8765/health
# {"status":"ok","backend":"s2"}
В examples/:
client_python.py — Python-клиент с sounddeviceclient_browser.html — браузерный клиентpip install websockets sounddevice python examples/client_python.py --uri ws://localhost:8765/ws "Привет, мир!"
Поместите в voices/:
voices/ ├── product_voice_sample_clean.wav ├── product_voice_sample_clean.lab (точный транскрипт для Fish Speech) └── ...
Требования:
.wav можно положить .lab с транскриптомpytest tests/ -v
src/voice_tts/tts/my_model.pyTTSEngine, добавить декоратор:from voice_tts.tts import register as _register_backend
from voice_tts.tts.engine import TTSEngine
@_register_backend("my_model")
class MyEngine(TTSEngine):
def __init__(self):
# читать настройки из voice_tts.config.settings
async def synthesize(self, text, ref_audio_path, language, speed, emotion, ref_text=None):
...
async def warm_up(self):
...
TTS_BACKEND=my_modelПолный список — в .env.example.