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 306012GB 显存的机器。如果你只有 CPU后面我会说怎么用 Nano 版本。第一步创建虚拟环境# 用 conda 创建环境conda create-nmoss-ttspython3.10-yconda activate moss-tts# 或者用 venvpython3-mvenv moss-tts-envsourcemoss-tts-env/bin/activate第二步克隆项目并安装依赖gitclone https://github.com/OpenMOSS/MOSS-TTS.gitcdMOSS-TTS# 安装 PyTorchCUDA 版本pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121# 安装项目依赖pipinstall-e.# 如果想要更快的推理速度装 FlashAttentionpipinstallflash-attn --no-build-isolation整个过程大概需要 10-15 分钟主要是下载 PyTorch 比较大。第一个例子基础文本转语音先来一个最简单的把一段文字转成语音frommoss_tts_localimportMossTTSLocalPipelineimportsoundfileassf# 加载模型第一次运行会自动下载权重约 3GBpipeMossTTSLocalPipeline.from_pretrained(OpenMOSS-Team/MOSS-TTS-Local-Transformer,devicecuda,# 改成 cpu 如果没有显卡)# 生成语音wavs,srpipe.generate(text你好我是 MOSS-TTS一个开源的语音合成模型。今天天气真不错适合出去走走。,languageChinese,)# 保存音频文件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 秒就能让模型学习这个人的音色。frommoss_tts_localimportMossTTSLocalPipelineimportsoundfileassf pipeMossTTSLocalPipeline.from_pretrained(OpenMOSS-Team/MOSS-TTS-Local-Transformer,devicecuda,)# 指定参考音频文件路径wavs,srpipe.generate(text欢迎来到我的技术博客。今天我们要讲的是如何使用 MOSS-TTS 进行声音复刻。,languageChinese,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 模型可以做到frommoss_tts_delayimportMossTTSDelayPipelineimportsoundfileassf pipeMossTTSDelayPipeline.from_pretrained(OpenMOSS-Team/MOSS-VoiceGenerator,devicecuda,)# 用文字描述想要的声音特征wavs,srpipe.generate(text欢迎收听今天的科技新闻。首先来看 AI 领域的最新进展。,languageChinese,speaker一个沉稳的男播音员声音低沉有磁性语速适中像新闻联播的感觉。,)sf.write(broadcaster.wav,wavs[0],sr)你可以自由描述声音的方方面面性别和年龄「年轻女性」「中年男性」音色特征「低沉」「明亮」「沙哑」「温柔」说话风格「播音腔」「像朋友聊天」「正式演讲」语速和情绪「语速快」「慢条斯理」「兴奋」「平静」这个功能特别适合做有声书、播客、视频配音——你不需要找配音演员直接用文字描述就能生成想要的声音。多人对话一条命令生成对话音频如果你在做播客或者对话类内容这个功能会让你相见恨晚frommoss_tts_delayimportMossTTSDelayPipelineimportsoundfileassf pipeMossTTSDelayPipeline.from_pretrained(OpenMOSS-Team/MOSS-TTSD-v1.0,devicecuda,)# 定义对话dialogue[{speaker:小明,text:嘿小红你听说了吗MOSS-TTS 开源了},{speaker:小红,text:真的吗就是那个可以做声音复刻的模型},{speaker:小明,text:对而且效果特别好我试了一下3秒录音就能学习一个人的音色。},{speaker:小红,text:太厉害了我也要试试看},]wavs,srpipe.generate_dialogue(dialoguedialogue,languageChinese,)sf.write(dialogue.wav,wavs,sr)模型会自动给每个说话人分配不同的音色你不需要手动指定。如果想给某些角色指定参考声音也可以用prompt_wav_path参数。没有显卡怎么办MOSS-TTS-Nano 来了如果你的电脑没有 NVIDIA 显卡或者只有 MacBook别担心。OpenMOSS 团队还发布了一个超轻量版本——MOSS-TTS-Nano只有 0.1B 参数纯 CPU 就能跑。# 克隆 Nano 版本gitclone https://github.com/OpenMOSS/MOSS-TTS-Nano.gitcdMOSS-TTS-Nano# 安装依赖pipinstall-rrequirements.txtfrommoss_tts_nanoimportMossTTSNanoimportsoundfileassf# 加载模型只有几百 MBmodelMossTTSNano.from_pretrained(OpenMOSS-Team/MOSS-TTS-Nano)# CPU 上跑wavs,srmodel.generate(text虽然我在 CPU 上运行但生成质量依然不错。,languageChinese,)sf.write(nano_output.wav,wavs[0],sr)Nano 版本的质量肯定不如 1.7B 或 8B 的完整模型但对于实时对话、简单的语音播报来说完全够用。而且它提供了一个 Web Demo你可以直接在浏览器里测试# 启动 Web Demo需要装 ONNX Runtimepython web_demo.py浏览器打开http://localhost:7860就能用了。踩坑记录踩了几个坑帮你省点时间1. Transformers 版本问题。MOSS-TTS 要求transformers5.0.0如果你之前装了旧版本可能会报错。先升级pipinstalltransformers--upgrade2. 显存不够。8B 模型MOSS-TTS-v1.5需要大约 16GB 显存。如果你的显卡只有 8GB 或 12GB用 1.7B 的MOSS-TTS-Local-Transformer版本质量已经很好了。3. 中文长文本生成可能吞字。超过 200 字的中文输入偶尔会丢字。解决方案把长文本拆成短句逐句生成后再拼接。importredefsplit_text(text,max_len100):把中文长文本按句号拆成短句sentencesre.split(r[。],text)chunks[]currentforsinsentences:iflen(currents)max_len:currents。else:chunks.append(current)currents。ifcurrent:chunks.append(current)returnchunks4. 下载模型太慢。Hugging Face 的服务器在国外国内下载可能会很慢。解决方案用 ModelScope 镜像Hugging Face 所有模型在 modelscope.cn 都有镜像把from_pretrained的路径换成 ModelScope 的即可。或者设置 HF 镜像exportHF_ENDPOINThttps://hf-mirror.com模型怎么选MOSS-TTS 有多个模型挑一个适合你的模型参数量显存需求适合场景特点MOSS-TTS-v1.58B~16GB高质量语音生成31 种语言效果最好MOSS-TTS-Local-Transformer1.7B~6GB声音复刻、日常使用速度快质量接近 8BMOSS-TTS-Nano0.1BCPU 可跑实时对话、嵌入式体积最小MOSS-TTSD8B~16GB多人对话支持多角色音色MOSS-VoiceGenerator1.7B~6GB声音设计文字描述生成声音MOSS-TTS-Realtime1.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 示例复制粘贴就能跑。GitHubhttps://github.com/OpenMOSS/MOSS-TTSModelScope 镜像https://modelscope.cn/organization/openmoss 作者Aliaoo 专注 AI 工具实战、云部署、自动化脚本。每篇都是亲测可跑的教程。️需要云服务器跑项目 CSDN 开发云常年折扣新用户首单特惠 觉得有用就点个赞想追更就点个关注——下次搜到我不靠缘分。