firered-tts
FireRedTTS3 — 다국어 TTS (24개 언어, 우크라이나어 포함)
FireRedTTS3 기반 로컬 음성 합성 서비스로, HTTP-API와 MCP 서버를 갖추고 있으며 포트 :8020에서 동작합니다.
모델은 2026년 8월 13일에 출시되었으며, Apache 2.0 라이선스, 가중치는 공개되어 있습니다.
시작 전에 알아야 할 사항
사전 설정된 음성이 없습니다. 빈 라이브러리 = 합성할 수 없음. 먼저
어떤 음성 녹음에서든 음성을 등록하고(add_firered_voice), 그 후
이름으로 사용합니다. 모델은 합성 중에 zero-shot으로 복제합니다.
레퍼런스의 트랜스크립트가 필요합니다. 모델에게는 오디오만으로 부족합니다 — 오디오에 담긴 내용의 텍스트도 필요합니다. 전달하지 않으면 Whisper로 인식하지만, 직접 제공한 텍스트가 항상 더 정확합니다.
강세(악센트)가 없습니다. 사전도, ByT5 폴백도, 수동 Му+дрого도 없습니다.
모델은 강세를 문맥에서 스스로 결정하며, 동음이의어(за́мок/замо́к)에서는
혼동할 것입니다. 이것은 다국어 모델의 근본적인 한계입니다.
Related MCP server: STT2TTS MCP
설치
cd /Users/admin/Projects/firered-tts
./setup.sh # venv + залежності + апстрім + патч + вагиsetup.sh는 네 가지 작업을 수행합니다: Python 3.11과 torch 2.8.0이 포함된 .venv를
MPS/CPU용으로 생성하고, 고정된 커밋 00570ad에서 업스트림을 vendor/FireRedTTS3로
클론하며, Apple Silicon용으로 패치를 적용하고(아래 참조), base+redae 가중치
(~11.4 GB)를 pretrained_models/로 다운로드합니다.
가중치는 별도로 (오래 걸림 — detached로 실행하는 것이 좋음):
nohup ./download-weights.sh base > data/download.log 2>&1 &
./download-weights.sh instruct # +7.9 ГБ, для дизайну голосу й редагування패치가 필요한 이유
업스트림은 전적으로 NVIDIA 전용으로 작성되어 Mac에서는 전혀 실행되지 않습니다:
flash_attn은 Metal에서 원칙적으로 빌드되지 않고, 장치가 cuda로 하드코딩되어 있으며,
autocast가 CUDA에 고정되어 있습니다. 패치는 flash_attention_2를 sdpa로
교체하고(NVIDIA를 포함한 모든 곳에서 작동), 장치를 동적으로 만들며,
속도 섹션의 최적화를 추가합니다. 전체 목록은
src/patch_upstream.py의 헤더에 있습니다.
패치는 멱등적이며, 교체가 실패하면 즉시 실패합니다 — 업스트림이 변경된 경우, 첫 합성에서 CUDA 오류로 알게 되는 것이 아니라 즉시 알 수 있습니다.
실행
./run.sh # http://localhost:8020별도로 실행할 필요는 없습니다 — MCP 서버가 백엔드를 자동으로 시작합니다. 백엔드는 유휴 시간 후 종료되어 메모리를 해제합니다.
HTTP API
메서드 | 엔드포인트 | 기능 |
|
| 상태, 장치, 메모리에 로드된 모델 |
|
| 음성 이름 ( |
|
| 24개 언어 + 21개 방언 |
|
| 레퍼런스 + 트랜스크립트 → 음성 |
|
| 음성 삭제 (원본 녹음 파일은 건드리지 않음) |
|
| 텍스트 → 응답의 오디오 바이트 |
|
| 텍스트 → |
|
| 음성 설명 → 오디오 (instruct) |
|
| 녹음 편집: |
# 1) завести голос
curl -X POST localhost:8020/clone_voice -H 'Content-Type: application/json' -d '{
"audio": "prompts/зразок.wav", "name": "Богдан",
"prompt_text": "Це зразок мого голосу для клонування.",
"language": "Ukrainian", "gender": "male"}'
# 2) озвучити
curl -X POST localhost:8020/tts -H 'Content-Type: application/json' -d '{
"text": "Сьогодні чудова погода, ходімо гуляти в парк.",
"voice": "Богдан", "format": "mp3"}' -o out.mp3
# Або one-shot — без реєстрації голосу: передай reference_audio замість voice,
# транскрипт зробить Whisper (перший виклик +~30с, далі кешується)
curl -X POST localhost:8020/tts -H 'Content-Type: application/json' -d '{
"text": "Сьогодні чудова погода.", "reference_audio": "prompts/зразок.mp3",
"format": "mp3"}' -o out.mp3MCP
mcp_server/README.md 참조. 요약:
claude mcp add firered-tts -- /Users/admin/Projects/firered-tts/.venv/bin/python \
/Users/admin/Projects/firered-tts/mcp_server/server.py도구: firered_backend_status, list_firered_voices,
add_firered_voice, delete_firered_voice, synthesize_firered_speech,
design_firered_voice, edit_firered_speech.
메모리
Mac mini M4, 16 GB. 디스크의 가중치: base (7.9) + redae (3.5) = 11.4 GB.
메모리에서는 더 적음 — LLM 백본은 half로 유지됨 (8.4 GB 대신 4.2), — 하지만
16 GB에서는 여전히 빠듯합니다. 코드에 반영된 결과:
메모리에는 정확히 하나의 모델만 상주 —
base또는instruct; 전환 = 전체 재로드 (수 분, 크게 로그 출력됨);합성은 전역 락으로 직렬화 — 16 GB에서 두 개의 병렬 요청은 가속이 아닌 OOM을 초래함;
유휴 1800초 후 자동 종료 — 의도적으로 길게 설정: 재시작 시 셰이더 컴파일에 ~40초가 소요되므로 프로세스를 유지하는 것이 더 유리함;
자동 트랜스크립트용 Whisper — CPU에서
int8, 인식 직후 즉시 언로드됨.
속도와 네 가지 최적화
M4에서 업스트림을 단순 실행하면 실시간의 ×186 — 우크라이나어 3초가
9분이 걸렸습니다. 네 가지 수정 후 ×3.0, 즉 약 ~60배 빨라졌습니다.
무엇이 문제였는지 (모두 tools/profile_steps.py로 측정):
1. AR 루프 단계의 Autocast — 가장 큰 문제. 업스트림은
@torch.autocast 데코레이터를 _backbone_one_step에 걸어서, 즉
자동회귀의 매 단계마다 영역이 열리고 닫힙니다. torch의 가중치 재캐스트 캐시는
영역 내부에서만 유지되므로, 1.7B fp32 파라미터가 매 단계마다
half로 변환되었습니다. 백본 단계: 19000 → 2710 ms. 이제 autocast는 비활성화되고,
캐스트는 백본 경계에서 명시적으로 수행됩니다.
2. fp32의 백본. 가중치는 float32로 저장되어 있으며 (3.0B 파라미터), 16 GB에서는 스왑을 의미합니다. LLM 백본만 half로 변환 (8.4 대신 4.2 GB), 그리고 redae와 flow 디코더는 fp32로 유지 — half는 MPS-matmul을 깨뜨립니다. 단계: 2710 → 1387 ms.
3. 레퍼런스가 문장마다 다시 인코딩됨. generate()는 텍스트의 각
문장마다 호출되며, 각 호출은 동일한 레퍼런스 녹음에 대해 redae 인코더를
실행했습니다: 매번 5.6초, 텍스트 길이와 무관하게. 이제
오디오 내용을 키로 하는 캐시가 있습니다. 6.6분 오디오에서 — 2회 미스 대비
30회 히트, 실행 시간의 ~11%.
4. Metal 셰이더 컴파일. "느림"의 가장 큰 부분은 일회성으로
판명됨: Metal은 첫 실행 시 커널을 컴파일합니다. 백본 단계의 개별 측정:
9873, 2104, 120, 93, 96, 97… ms. 따라서 서비스는
시작 시 워밍업(FIRERED_WARMUP=1)을 수행하고 긴 유휴 타임아웃을 갖습니다.
Mac mini M4 / 16 GB, 우크라이나어 3.0초, 워밍업된 모델로 측정:
n_timesteps | 시간 | ×실시간 | 품질 |
10 (기본값) | 12 초 | ×4.0 | 기준 |
6 | 10 초 | ×3.0 | 차이 거의 구분 안 됨 |
4 | 7 초 | ×2.3 | 눈에 띄게 거칠어짐 |
2 | 6 초 | ×1.9 | 눈에 띄는 아티팩트 |
워밍업된 생성 프로필: flow 디코더 57%, 백본 18%, redae 11% —
가장 효과적인 레버는 바로 n_timesteps입니다. 실시간은 아니지만, 이제
"밤새 실행"이 아닌 실용적인 도구입니다.
텍스트 정규화
내장 TN(wetext)은 중국어와 영어만 지원하므로, 우크라이나어에는
쓸모없어 설치하지 않습니다. 19:30, 250 грн, 2026 р.는
모델이 알아서 발음합니다. 두 가지 방법: 텍스트를 처음부터 단어로 쓰거나,
LLM-TN을 활성화 — .env의 FIRERED_TN_API_URL / _API_KEY / _MODEL.
로컬(llama.cpp / vLLM / Ollama)을 포함한 모든 OpenAI 호환 엔드포인트가
적합합니다 — 그러면 모든 것이 오프라인으로 유지됩니다.
라이선스
코드와 가중치는 Apache 2.0입니다. 업스트림 README에는 zero-shot 복제가 "solely for academic research purposes"라고 별도로 명시되어 있습니다 — 이는 Apache 2.0과 모순되며, 복제된 음성의 상업적 사용은 주의해서 검토하세요. 가정용 사용에는 문제가 없습니다.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted text-to-speech MCP server: 66 voices in 9 languages, long-form narration, podcasts.
71AI voice generation: text-to-speech and voice cloning from any MCP client.
MCP server for Text-to-Speech
- AudexumOAuthcom.audexum
Text to speech and transcription for any AI model: MP3 voiceovers, audio and YouTube to text.
Related MCP Servers
- AlicenseAqualityDmaintenanceA Model Context Protocol server for FlowSpeech text-to-speech. It lets MCP-compatible clients generate human-like audio with context-aware emotion control, pause control, multi-speaker dialogue, and 30+ available voices.317 npmMIT
- AlicenseNot gradedqualityDmaintenanceLocal-first speech-to-text and text-to-speech MCP server. Hot-swappable engines via config.yaml — no code changes, no API keys required.2MIT
- AlicenseNot gradedqualityBmaintenanceA text-to-speech MCP server with 48 voices across 9 languages, supporting emotion spans, SFX tags, and multi-speaker dialogue. Deployable via a single npx command with built-in guardrails and swappable backends.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Vietnamese text-to-speech with voice cloning, 10 built-in voices, text normalization, and long-form queuing, running 100% locally.Apache 2.0