传统TTS单句生成强,但对话韵律差、长音频拼接生硬。
MOSS-TTSD 是一个开源的双语语音对话合成模型,它将对话脚本转换为自然、富有表现力的对话语音,具备长语音生成能力,韵律表现力极佳。
基于Qwen3-1.7B-base,采用离散化语音序列建模,训练数据包含约100万小时单人语音和40万小时对话语音。
与专注于单个语句的传统文本到语音系统不同,MOSS-TTSD专门用于创建具有适当韵律、无缝话轮转换和说话人身份保留的多说话人对话。这使得它在播客制作、有声读物和教育材料方面尤为有价值。
MOSS-TTSD旨在接收带有说话人标签的对话脚本,并将其转换为逼真的语音对话。
该模型支持中文和英文两种语言,并能处理长篇大论的语音生成,非常适合从文本创建完整的播客剧集。
主要特点
MOSS-TTSD具备多项强大功能,使其有别于标准TTS系统:
- • 富有表现力的对话语音 :生成类似人类的对话,具有自然的话轮转换和情感表达
- • 双说话人语音克隆 :可以从短音频样本中采用两个不同说话人的声音
- • 双语支持 :无缝处理中文和英文文本
- • 长篇内容生成 :优化生成长篇对话内容
工作原理
MOSS-TTSD通过一个处理对话文本、编码说话人语音特征(如果提供)并生成自然对话语音的流程运作:
系统使用基于Qwen3的指令调优大型语言模型生成音频标记,并结合神经音频编码器(XY_Tokenizer)进行高质量音频合成。
快速入手
MOSS-TTSD需要Python 3.10+和PyTorch 2.0+。请按照以下步骤设置您的环境:
# 创建并激活conda环境
conda create -n moss\_ttsd python=3.10 -y
conda activate moss\_ttsd
# 安装所需依赖
pip install -r requirements.txt
pip install flash-attn # 可选,但推荐以提高速度
接下来,下载XY Tokenizer模型权重:
# 创建tokenizer权重目录
mkdir -p XY\_Tokenizer/weights
# 从Hugging Face下载tokenizer模型
huggingface-cli download fnlp/XY\_Tokenizer\_TTSD\_V0 xy\_tokenizer.ckpt --local-dir ./XY\_Tokenizer/weights/
使用方法
让我们从一个简单的文本输入生成对话。MOSS-TTSD接受带有说话者标签 [S1] 和 [S2] 的对话文本,以指示哪位角色在说话。
方法1:使用命令行
创建一个名为 my\_dialogue.jsonl 的文件,内容如下:
{"text": "[S1]嗨!你好吗?[S2]我很好,谢谢你的关心!你呢?[S1]我也很好。今天的天气真美。"}
然后运行推理脚本:
python inference.py --jsonl my\_dialogue.jsonl --output\_dir my\_outputs --use\_normalize
生成的音频将保存在 my\_outputs 目录中。
方法2:使用Web UI
为了获得更互动的体验,可以使用Gradio网页界面:
python gradio\_demo.py
这将启动一个本地Web服务器,通常位于http://127.0.0.1:7860。在浏览器中打开此URL,可以:
- • 输入对话文本
- • 上传用于克隆的语音样本
- • 直接在浏览器中生成和播放音频
语音克隆
MOSS-TTSD的一个强大功能是语音克隆。您可以通过提供参考音频样本,使生成的对话使用特定的声音。
基本语音克隆
创建一个带有语音参考的JSONL文件:
{
"text": "[S1]你好,我是第一位说话者。[S2]我是第二位说话者。很高兴见到你![S1]这是我的荣幸。",
"prompt\_audio\_speaker1": "path/to/speaker1\_sample.wav",
"prompt\_text\_speaker1": "与speaker1音频样本匹配的文本",
"prompt\_audio\_speaker2": "path/to/speaker2\_sample.wav",
"prompt\_text\_speaker2": "与speaker2音频样本匹配的文本"
}
运行推理:
python inference.py --jsonl my\_voice\_cloning.jsonl --output\_dir my\_outputs --use\_normalize
高级输入选项
MOSS-TTSD支持三种输入格式:
-
- 纯文本输入(默认声音,无克隆):
{"text": "[S1]说话者1文本[S2]说话者2文本[S1]说话者1的更多文本"}
-
- 单独的说话者参考(推荐):
{
"text": "[S1]说话者1文本[S2]说话者2文本",
"prompt\_audio\_speaker1": "speaker1.wav",
"prompt\_text\_speaker1": "说话者1的参考文本",
"prompt\_audio\_speaker2": "speaker2.wav",
"prompt\_text\_speaker2": "说话者2的参考文本"
}
-
- 共享音频参考:
{
"text": "[S1]说话者1文本[S2]说话者2文本",
"prompt\_audio": "combined\_speakers.wav",
"prompt\_text": "[S1]说话者1参考[S2]说话者2参考"
}
额外的命令行选项,在运行推理时,可以使用以下选项自定义行为:
写在最后
MOSS-TTSD以其基于Qwen3-1.7B的对话语音合成能力,为AI播客、有声书和教育内容创作提供了强大支持。支持中英双语、960秒长语音生成和零样本音色克隆。
安装部署也非常方便,也许你会发现,它不仅是TTS模型,对于语音自由任务也是相得益彰。
GitHub 项目地址:https://github.com/OpenMOSS/MOSS-TTSD
如果本文对您有帮助,也请帮忙点个 赞👍 + 在看 哈!❤️
在看你就赞赞我!
