MOSS-TTS 开源语音合成实战:复旦团队出品,3 秒音频就能生成专属语音
上个月,复旦大学和 MOSI.AI 的 OpenMOSS 团队开源了一整套语音合成模型——MOSS-TTS。这个项目最近在 GitHub 上热度非常高,一周涨了 700 多颗星,而且还在持续增长。
我花了一个周末把这套工具从头到尾跑了一遍。说实话,效果超出预期——用一段 3 秒的录音就能学习一个人的音色特征,生成的语音几乎分辨不出是 AI 合成的。关键是:完全开源,Apache 2.0 协议,可以商用。
这篇文章是完整的实战记录。我会带你从安装环境开始,到生成第一段 AI 语音,再到训练自己的声音模型。
MOSS-TTS 能做什么
先说说它能做什么,让你有个直观感受:
1. 文本转语音(TTS)。 输入文字,输出自然的人声。支持 31 种语言,中文和英文效果特别好。
2. 零样本声音复刻。 给它一段 3 秒的录音,它能学习这个人的音色读出任何文字。不需要训练,不需要标注数据。
3. 声音设计。 你可以用自然语言描述你想要的声音:「一个温暖的中年女声,语速稍慢,带一点播音腔」——它能生成符合描述的声音。
4. 多人对话生成。 输入一段对话脚本(比如「小明:你今天去哪了?小红:我去图书馆了。」),它能自动生成带不同音色的对话音频。
5. 实时流式 TTS。 适合语音助手、直播等需要低延迟的场景。
最后还有一个彩蛋:MOSS-TTS-Nano,一个只有 0.1B 参数的超轻量模型,可以直接在 CPU 上跑,不需要显卡。
安装环境
我用的是一台带 RTX 3060(12GB 显存)的机器。如果你只有 CPU,后面我会说怎么用 Nano 版本。
第一步:创建虚拟环境
# 用 conda 创建环境
conda create -n moss-tts python=3.10 -y
conda activate moss-tts
# 或者用 venv
python3 -m venv moss-tts-env
source moss-tts-env/bin/activate
第二步:克隆项目并安装依赖
git clone https://github.com/OpenMOSS/MOSS-TTS.git
cd MOSS-TTS
# 安装 PyTorch(CUDA 版本)
pip install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu121
# 安装项目依赖
pip install -e .
# 如果想要更快的推理速度,装 FlashAttention
pip install flash-attn –no-build-isolation
整个过程大概需要 10-15 分钟,主要是下载 PyTorch 比较大。
第一个例子:基础文本转语音
先来一个最简单的,把一段文字转成语音:
from moss_tts_local import MossTTSLocalPipeline
import soundfile as sf
# 加载模型(第一次运行会自动下载权重,约 3GB)
pipe = MossTTSLocalPipeline.from_pretrained(
"OpenMOSS-Team/MOSS-TTS-Local-Transformer",
device="cuda", # 改成 "cpu" 如果没有显卡
)
# 生成语音
wavs, sr = pipe.generate(
text="你好,我是 MOSS-TTS,一个开源的语音合成模型。今天天气真不错,适合出去走走。",
language="Chinese",
)
# 保存音频文件
sf.write("output.wav", wavs[0], sr)
print(f"音频已保存,采样率: {sr}Hz,时长: {len(wavs[0])/sr:.2f}秒")
第一次运行的时候会自动从 Hugging Face 下载模型权重(约 3GB),之后就会快很多。在我的 3060 上,生成这段 7 秒的语音只需要不到 1 秒。
听听效果——如果你不告诉别人这是 AI 生成的,大概率听不出来。
声音复刻:3 秒录音就够了
这才是 MOSS-TTS 最让人惊艳的功能。你只需要录一段极短的音频(3-10 秒),就能让模型学习这个人的音色。
from moss_tts_local import MossTTSLocalPipeline
import soundfile as sf
pipe = MossTTSLocalPipeline.from_pretrained(
"OpenMOSS-Team/MOSS-TTS-Local-Transformer",
device="cuda",
)
# 指定参考音频文件路径
wavs, sr = pipe.generate(
text="欢迎来到我的技术博客。今天我们要讲的是如何使用 MOSS-TTS 进行声音复刻。",
language="Chinese",
prompt_wav_path="./my_voice.wav", # 你的 3 秒录音
prompt_text="大家好,这是我的声音样本。", # 录音的文字内容
)
sf.write("cloned_voice.wav", wavs[0], sr)
几个要点:
- prompt_wav_path:你的参考音频文件。建议 3-10 秒,不要太长,也不要太短。
- prompt_text:这段音频对应的文字。模型需要知道「这段声音在说什么」,才能学会音色和文字的映射关系。
- 录音质量很重要。尽量在安静环境录音,不要有背景噪音。手机自带的录音功能就够用。
我用自己的声音试了一下——录了 5 秒的一段话,然后让模型生成了一段英文自我介绍。朋友听了之后说「这跟你自己说的有什么区别?」。
声音设计:用文字描述你想要的声音
如果你不想复刻真实的人声,而是想「创造」一个声音,MOSS-TTS 的 VoiceGenerator 模型可以做到:
from moss_tts_delay import MossTTSDelayPipeline
import soundfile as sf
pipe = MossTTSDelayPipeline.from_pretrained(
"OpenMOSS-Team/MOSS-VoiceGenerator",
device="cuda",
)
# 用文字描述想要的声音特征
wavs, sr = pipe.generate(
text="欢迎收听今天的科技新闻。首先来看 AI 领域的最新进展。",
language="Chinese",
speaker="一个沉稳的男播音员,声音低沉有磁性,语速适中,像新闻联播的感觉。",
)
sf.write("broadcaster.wav", wavs[0], sr)
你可以自由描述声音的方方面面:
- 性别和年龄:「年轻女性」「中年男性」
- 音色特征:「低沉」「明亮」「沙哑」「温柔」
- 说话风格:「播音腔」「像朋友聊天」「正式演讲」
- 语速和情绪:「语速快」「慢条斯理」「兴奋」「平静」
这个功能特别适合做有声书、播客、视频配音——你不需要找配音演员,直接用文字描述就能生成想要的声音。
多人对话:一条命令生成对话音频
如果你在做播客或者对话类内容,这个功能会让你相见恨晚:
from moss_tts_delay import MossTTSDelayPipeline
import soundfile as sf
pipe = MossTTSDelayPipeline.from_pretrained(
"OpenMOSS-Team/MOSS-TTSD-v1.0",
device="cuda",
)
# 定义对话
dialogue = [
{"speaker": "小明", "text": "嘿小红,你听说了吗?MOSS-TTS 开源了!"},
{"speaker": "小红", "text": "真的吗?就是那个可以做声音复刻的模型?"},
{"speaker": "小明", "text": "对!而且效果特别好,我试了一下,3秒录音就能学习一个人的音色。"},
{"speaker": "小红", "text": "太厉害了,我也要试试看!"},
]
wavs, sr = pipe.generate_dialogue(
dialogue=dialogue,
language="Chinese",
)
sf.write("dialogue.wav", wavs, sr)
模型会自动给每个说话人分配不同的音色,你不需要手动指定。如果想给某些角色指定参考声音,也可以用 prompt_wav_path 参数。
没有显卡怎么办?MOSS-TTS-Nano 来了
如果你的电脑没有 NVIDIA 显卡(或者只有 MacBook),别担心。OpenMOSS 团队还发布了一个超轻量版本——MOSS-TTS-Nano,只有 0.1B 参数,纯 CPU 就能跑。
# 克隆 Nano 版本
git clone https://github.com/OpenMOSS/MOSS-TTS-Nano.git
cd MOSS-TTS-Nano
# 安装依赖
pip install -r requirements.txt
from moss_tts_nano import MossTTSNano
import soundfile as sf
# 加载模型(只有几百 MB)
model = MossTTSNano.from_pretrained("OpenMOSS-Team/MOSS-TTS-Nano")
# CPU 上跑
wavs, sr = model.generate(
text="虽然我在 CPU 上运行,但生成质量依然不错。",
language="Chinese",
)
sf.write("nano_output.wav", wavs[0], sr)
Nano 版本的质量肯定不如 1.7B 或 8B 的完整模型,但对于实时对话、简单的语音播报来说完全够用。而且它提供了一个 Web Demo,你可以直接在浏览器里测试:
# 启动 Web Demo(需要装 ONNX Runtime)
python web_demo.py
浏览器打开 http://localhost:7860 就能用了。
踩坑记录
踩了几个坑,帮你省点时间:
1. Transformers 版本问题。 MOSS-TTS 要求 transformers>=5.0.0,如果你之前装了旧版本,可能会报错。先升级:
pip install transformers –upgrade
2. 显存不够。 8B 模型(MOSS-TTS-v1.5)需要大约 16GB 显存。如果你的显卡只有 8GB 或 12GB,用 1.7B 的 MOSS-TTS-Local-Transformer 版本,质量已经很好了。
3. 中文长文本生成可能吞字。 超过 200 字的中文输入偶尔会丢字。解决方案:把长文本拆成短句,逐句生成后再拼接。
import re
def split_text(text, max_len=100):
"""把中文长文本按句号拆成短句"""
sentences = re.split(r'[。!?]', text)
chunks = []
current = ""
for s in sentences:
if len(current + s) < max_len:
current += s + "。"
else:
chunks.append(current)
current = s + "。"
if current:
chunks.append(current)
return chunks
4. 下载模型太慢。 Hugging Face 的服务器在国外,国内下载可能会很慢。解决方案:
- 用 ModelScope 镜像:Hugging Face 所有模型在 modelscope.cn 都有镜像,把 from_pretrained 的路径换成 ModelScope 的即可。
- 或者设置 HF 镜像:
export HF_ENDPOINT=https://hf-mirror.com
模型怎么选
MOSS-TTS 有多个模型,挑一个适合你的:
| MOSS-TTS-v1.5 | 8B | ~16GB | 高质量语音生成 | 31 种语言,效果最好 |
| MOSS-TTS-Local-Transformer | 1.7B | ~6GB | 声音复刻、日常使用 | 速度快,质量接近 8B |
| MOSS-TTS-Nano | 0.1B | CPU 可跑 | 实时对话、嵌入式 | 体积最小 |
| MOSS-TTSD | 8B | ~16GB | 多人对话 | 支持多角色音色 |
| MOSS-VoiceGenerator | 1.7B | ~6GB | 声音设计 | 文字描述生成声音 |
| MOSS-TTS-Realtime | 1.7B | ~6GB | 实时流式 | 低延迟,流式输出 |
如果你只是想体验一下,建议从 Local-Transformer (1.7B) 开始。这个模型在质量和速度之间做了很好的平衡,大多数场景都够用。
总结
MOSS-TTS 是目前开源 TTS 领域最有诚意的项目之一。主要体现在几个方面:
效果真的能打。 不是那种「开源项目嘛,效果差不多就行」的水平。中文语音合成质量已经非常接近商业产品(比如讯飞、腾讯云的 TTS)。
3 秒声音复刻是杀手级功能。 这个门槛低到离谱——你甚至可以用手机录一段语音发过去,就能生成自己的 AI 声音。
Apache 2.0 协议,可以商用。 这意味着你可以把它集成到自己的产品里,不需要担心版权问题。
有轻量版本。 Nano 版只有 0.1B 参数,CPU 可跑。这意味着即使是最简单的硬件也能用。
如果你想试试,建议直接从 Local-Transformer (1.7B) 入手,安装简单,效果靠谱。GitHub 上有完整的 Jupyter Notebook 示例,复制粘贴就能跑。
GitHub:https://github.com/OpenMOSS/MOSS-TTS
ModelScope 镜像:https://modelscope.cn/organization/openmoss
📌 作者:Aliaoo 🚀 专注 AI 工具实战、云部署、自动化脚本。每篇都是亲测可跑的教程。

🖥️ 需要云服务器跑项目? 👉 CSDN 开发云常年折扣,新用户首单特惠
📬 觉得有用就点个赞,想追更就点个关注——下次搜到我不靠缘分。




