一、项目概述
MOSS-TTS Family 是由 MOSI.AI 和 OpenMOSS 团队 联合推出的开源语音与声音生成模型家族。该项目专为高保真、高表现力、复杂真实场景设计,覆盖:
- 稳定长文本语音合成
- 多说话人对话生成
- 声音/角色设计
- 环境音效生成
- 实时流式 TTS
项目地址:https://github.com/OpenMOSS/MOSS-TTS
核心特性
- 工业级音质:48 kHz 高采样率,支持双语(中英文)合成
- 零样本语音克隆:无需微调,仅用短参考音频即可克隆音色
- 精细控制:支持拼音、音素、时长级别的细粒度控制
- 多架构支持:提供 Delay 和 Local 两种架构,兼顾生产稳定和流式灵活
- 无 PyTorch 推理:通过 llama.cpp + ONNX Runtime 实现轻量级端侧部署
- 丰富模型家族:涵盖 TTS、对话、声音设计、实时、音效五大场景
二、技术原理
2.1 整体架构设计
MOSS-TTS Family 采用分层建模策略,将语音生成流程拆解为五个可独立使用、也可组合成完整流水线的生产级模型:
| 模型 | 核心能力 | 架构 | 参数量 |
|---|---|---|---|
| MOSS-TTS | 旗舰级零样本语音克隆 + 长文本生成 | MossTTSDelay | 8B |
| MOSS-TTSD | 多说话人对话生成 | MossTTSDelay | 8B |
| MOSS-VoiceGenerator | 文本提示驱动的声音设计(无需参考音频) | MossTTSDelay | 1.7B |
| MOSS-TTS-Realtime | 多轮上下文感知的实时语音代理 | MossTTSRealtime | 1.7B |
| MOSS-SoundEffect | 文生音效(环境声、动作声、音乐片段) | MossTTSDelay / DiT | 8B / 1.3B |
2.2 核心架构详解
MossTTSDelay 架构
- 核心机制:Multi-head parallel RVQ prediction with delay-pattern scheduling
- 优势:长上下文稳定性、推理速度快、生产就绪
- 适用场景:工业级 TTS、对话生成、音效生成
伪代码逻辑:
# Delay-pattern scheduling 示意
# 将 RVQ 的多个 codebook 通过 delay 模式交错排列
# 使模型能够并行预测多个 codebook,同时保证时序一致性
delayed_sequence = apply_delay_pattern(rvq_codes, num_codebooks, delay_pattern)
logits = transformer(delayed_sequence)
predicted_codes = sample(logits)
MossTTSLocal 架构
- 核心机制:Time-synchronous RVQ blocks with a depth transformer
- 优势:轻量灵活、客观指标强、适合流式系统
- 适用场景:端侧部署、流式 TTS
MossTTSRealtime 架构
- 核心机制:Hierarchical text-audio inputs for realtime synthesis
- 创新点:建模多轮上下文(历史文本 + 用户声学特征),实现低延迟、跨轮次声音一致性
- 性能指标:TTFB(首字节延迟)达 180 ms,与 LLM 组合后总延迟 377 ms
2.3 MOSS-Audio-Tokenizer
负责将音频编码为离散 token,供 TTS 模型使用。支持:
- 48 kHz 立体声输入输出
- ONNX 格式导出,支持无 PyTorch 环境部署
- 模型权重:https://huggingface.co/OpenMOSS-Team/MOSS-Audio-Tokenizer-ONNX
2.4 推理优化
llama.cpp 后端(无 PyTorch 推理)
通过将模型权重转换为 GGUF 格式,配合 ONNX 音频 tokenizer,实现:
- 8B 模型可在 8GB GPU 上运行(显著优化 VRAM 占用)
- 支持量化(GGUF 格式)
- 提供完整端到端文档和可运行流水线
量化权重:https://huggingface.co/OpenMOSS-Team/MOSS-TTS-GGUF
SGLang 后端(加速推理)
为 MossTTSDelay 架构提供 SGLang 后端支持,实现:
- 约 3 倍生成吞吐量提升
- 适用于 MOSS-TTS (Delay)、MOSS-SoundEffect 等模型
三、安装与快速开始
3.1 环境设置
使用 Conda
conda create -n moss-tts python=3.10
conda activate moss-tts
git clone https://github.com/OpenMOSS/MOSS-TTS.git
cd MOSS-TTS
pip install -e .
使用 uv(推荐)
git clone https://github.com/OpenMOSS/MOSS-TTS.git
cd MOSS-TTS
uv sync
(可选)安装 FlashAttention 2
pip install packaging ninja
pip install flash-attn --no-build-isolation
3.2 快速推理
from moss_tts import MOSS_TTS
# 加载模型(默认自动下载到 ~/.cache/huggingface/hub)
tts = MOSS_TTS.from_pretrained("OpenMOSS-Team/MOSS-TTS-v1.5")
# 基本推理
audio = tts.synthesize(
text="你好,我是 MOSS-TTS,一个开源的语音合成系统。",
reference_audio="path/to/reference.wav", # 可选:用于语音克隆
language="zh"
)
# 保存音频
tts.save_audio(audio, "output.wav")
3.3 最简运行示例(命令行)
# 使用 HuggingFace Space 在线试用
# https://huggingface.co/spaces/OpenMOSS-Team/MOSS-TTS
# 或者使用 API(需要部署 MOSS-TTS 服务)
curl -X POST https://studio.mosi.cn/api/moss-tts \
-H "Content-Type: application/json" \
-d '{
"text": "你好,世界!",
"reference_audio_url": "https://example.com/reference.wav",
"language": "zh"
}'
四、使用方法与实战
4.1 基础用法
零样本语音克隆
# 无需微调,直接用参考音频克隆音色
cloned_audio = tts.synthesize(
text="这是一段克隆出来的语音。",
reference_audio="speaker_A.wav", # 短参考音频(3-10秒)
language="zh"
)
多语言/ code-switching 合成
# MOSS-TTS-v1.5 支持 31 种语言
# 提供语言标签可增强多语言合成效果
audio = tts.synthesize(
text="Hello, 我是一个 bilingual TTS system.",
language_tags=["en", "zh"],
reference_audio="bilingual_speaker.wav"
)
精细控制(拼音、音素、停顿)
# 使用拼音控制发音
text_with_pinyin = "你好 [ni3] [hao3]"
# 插入显式停顿(v1.5 新特性)
text_with_pause = "你好,[pause 0.5s] 世界!"
audio = tts.synthesize(text_with_pause, reference_audio="ref.wav")
4.2 进阶用法
MOSS-TTSD:多说话人对话生成
from moss_tts import MOSS_TTSD
dlg_model = MOSS_TTSD.from_pretrained("OpenMOSS-Team/MOSS-TTSD-v1.0")
dialogue_script = [
{"speaker": "A", "text": "你觉得这个项目怎么样?", "reference": "speaker_A.wav"},
{"speaker": "B", "text": "非常棒!我很喜欢它的设计。", "reference": "speaker_B.wav"},
]
audio = dlg_model.synthesize_dialogue(dialogue_script)
MOSS-VoiceGenerator:文本提示驱动的声音设计
from moss_tts import MOSS_VoiceGenerator
vg = MOSS_VoiceGenerator.from_pretrained("OpenMOSS-Team/MOSS-VoiceGenerator")
# 无需参考音频,直接用文本描述生成声音
audio = vg.generate(
text="说出这句话:欢迎来到我的世界。",
voice_prompt="年轻女性,声音柔和,带一点南方口音,语速中等"
)
MOSS-TTS-Realtime:实时语音代理
from moss_tts import MOSS_TTS_Realtime
rt_tts = MOSS_TTS_Realtime.from_pretrained("OpenMOSS-Team/MOSS-TTS-Realtime")
# 增量合成(适用于语音代理场景)
for audio_chunk in rt_tts.stream_synthesize(
text_stream=llm_text_stream, # 来自 LLM 的文本流
context_audio=conversation_history_audio
):
play_audio(audio_chunk) # 低延迟播放
MOSS-SoundEffect:文生音效
from moss_tts import MOSS_SoundEffect
sfx = MOSS_SoundEffect.from_pretrained("OpenMOSS-Team/MOSS-SoundEffect-v2.0")
# 生成 48 kHz 双语音效,最长 30 秒
audio = sfx.generate(
prompt="雷声,大雨,窗户被风吹得嘎嘎作响",
duration=10.0,
sample_rate=48000
)
4.3 实际项目示例
构建语音助手
# 组合 LLM + MOSS-TTS-Realtime 构建低延迟语音助手
import openai
from moss_tts import MOSS_TTS_Realtime
llm = openai.OpenAI(api_key="...")
tts = MOSS_TTS_Realtime.from_pretrained(...)
def voice_assistant(user_input_audio):
# 1. ASR:语音识别
user_text = asr_model.transcribe(user_input_audio)
# 2. LLM:生成回复
llm_stream = llm.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": user_text}],
stream=True
)
# 3. TTS:实时语音合成
for audio_chunk in tts.stream_synthesize(
text_stream=(chunk.choices[0].delta.content for chunk in llm_stream),
context_audio=user_input_audio
):
yield audio_chunk
有声书生成
# 使用 MOSS-TTSD 生成多角色有声书
dlg_model = MOSS_TTSD.from_pretrained(...)
# 定义角色音色
characters = {
"narrator": "narrator_ref.wav",
"hero": "hero_ref.wav",
"villain": "villain_ref.wav"
}
# 解析剧本
script = parse_script("novel_script.txt")
# 生成完整有声书
audio_segments = []
for line in script:
segment = dlg_model.synthesize(
text=line["text"],
reference_audio=characters[line["character"]]
)
audio_segments.append(segment)
# 合并并导出
final_audio = concatenate_audio(audio_segments)
save_audio(final_audio, "audiobook.wav")
五、常见问题与解决方案
5.1 安装失败
问题:pip install -e . 失败,提示依赖冲突。
解决方案:
- 使用
uv sync代替pip install,自动解决依赖冲突 - 确保 Python 版本 ≥ 3.10
- 如使用 FlashAttention 2,需先安装
packaging和ninja
5.2 运行时错误
问题:CUDA out of memory。
解决方案:
- 使用量化版本(GGUF 格式)+ llama.cpp 推理
- 降低
max_new_tokens或batch_size - 使用 MOSS-TTS-Local-Transformer(1.7B 参数,更轻量)
问题:ImportError: librosa not found。
解决方案:
pip install librosa soundfile
5.3 音质问题
问题:生成的语音音质差、有杂音。
解决方案:
- 确保参考音频质量高(干净、无背景噪声)
- 使用 v1.5 版本(音质显著优于 1.0)
- 检查音频采样率是否为 48 kHz
问题:语音克隆效果差。
解决方案:
- 参考音频长度建议在 5-10 秒
- 参考音频应包含目标说话人的多种音素
- 使用
MossTTSDelay架构(零样本克隆效果最优)
5.4 性能问题
问题:推理速度慢。
解决方案:
- 使用 SGLang 后端(3 倍加速)
- 使用 llama.cpp + GGUF 量化推理
- 使用 MOSS-TTS-Nano(~100M 参数,仅 4 核 CPU 即可运行)
5.5 兼容性问题
问题:某些语言合成效果差。
解决方案:
- 使用 MOSS-TTS-v1.5(支持 31 种语言)
- 在文本中显式提供语言标签(如
[en],[zh]) - 对于中文,使用拼音控制多音字发音
六、总结
MOSS-TTS Family 是一个工业级、开源、模块化的语音与声音生成解决方案,其核心价值在于:
- 完整性:覆盖 TTS、对话、声音设计、实时、音效五大场景,提供一站式开源方案
- 高质量:在主观评价中超越豆包、Gemini 2.5-pro 等顶级闭源模型
- 生产就绪:支持 Docker 部署、API 服务、量化推理、端侧部署
- 活跃社区:提供 HuggingFace Space、ModelScope、Discord、技术报告等丰富资源
无论你是想构建语音助手、有声书平台、游戏音效系统,还是进行语音合成研究,MOSS-TTS Family 都值得深入研究和应用。
资源链接
- GitHub:https://github.com/OpenMOSS/MOSS-TTS
- HuggingFace 模型集合:https://huggingface.co/collections/OpenMOSS-Team/moss-tts
- ModelScope:https://modelscope.cn/collections/openmoss/MOSS-TTS
- 技术报告:https://arxiv.org/abs/2603.18090
- 在线试用:https://huggingface.co/spaces/OpenMOSS-Team/MOSS-TTS
- API 文档:https://studio.mosi.cn/docs/moss-tts
- Discord 社区:https://discord.gg/fvm5TaWjU3
本文基于 MOSS-TTS Family 官方 README 和技术报告撰写,更多细节请参考官方文档。