以观书法
108.85M · 2026-02-05
这是"一天一个开源项目"系列的第12篇文章。今天带你了解的项目是 SoulX-Podcast(GitHub)。
传统的TTS系统主要面向单说话人、单轮对话,生成的语音缺乏真实对话的自然感。SoulX-Podcast专为播客风格的多轮、多说话人对话式语音生成而设计,不仅支持跨方言的零样本语音克隆,还能控制副语言事件(如笑声、叹息),让AI生成的语音更自然、更真实,真正达到播客级别的质量。
SoulX-Podcast 是一个专为播客风格的多轮、多说话人对话式语音生成而设计的TTS系统,由Soul AI团队开发。它不仅能在传统的单说话人TTS任务上表现优异,更重要的是实现了高质量的多轮对话式语音生成,让AI生成的语音更接近真实播客的自然感。
项目解决的核心问题:
面向的用户群体:
团队:Soul AI Lab
项目创建时间:2025年10月(从GitHub活动来看是持续活跃的项目)
项目发展历程:
SoulX-Podcast的核心作用是生成高质量、自然、真实的播客风格多轮对话式语音,主要功能包括:
播客内容生成
有声书制作
教育内容制作
游戏和娱乐应用
辅助技术应用
安装步骤:
# 1. 克隆仓库
git clone
cd SoulX-Podcast
# 2. 创建Conda环境
conda create -n soulxpodcast -y python=3.11
conda activate soulxpodcast
# 3. 安装依赖
pip install -r requirements.txt
# 4. 下载模型
pip install -U huggingface_hub
huggingface-cli download --resume-download Soul-AILab/SoulX-Podcast-1.7B
--local-dir pretrained_models/SoulX-Podcast-1.7B
最简单的使用示例:
# 使用WebUI(最简单的方式)
python3 webui.py --model_path pretrained_models/SoulX-Podcast-1.7B
# 或者使用方言模型
python3 webui.py --model_path pretrained_models/SoulX-Podcast-1.7B-dialect
# 使用命令行示例脚本
bash example/infer_dialogue.sh
Python代码示例:
from soulxpodcast import SoulXPodcast
# 初始化模型
model = SoulXPodcast(model_path="pretrained_models/SoulX-Podcast-1.7B")
# 生成多说话人对话
dialogue = [
{"speaker": "主持人", "text": "欢迎来到今天的播客节目!"},
{"speaker": "嘉宾", "text": "谢谢邀请!<|laughter|>今天很高兴来到这里。"},
{"speaker": "主持人", "text": "让我们开始今天的讨论吧。"}
]
# 生成语音
audio = model.generate_dialogue(dialogue, reference_audios={
"主持人": "path/to/host_audio.wav",
"嘉宾": "path/to/guest_audio.wav"
})
# 保存音频
model.save_audio(audio, "output_podcast.wav")
多轮、多说话人对话式语音生成
跨方言零样本语音克隆
副语言控制
<|laughter|>、<|sigh|>、<|breathing|>、<|coughing|>、<|throat_clearing|>高质量单说话人TTS
多语言支持
WebUI界面
API支持
vLLM加速
| 对比项 | SoulX-Podcast | 传统TTS | 其他对话式TTS |
|---|---|---|---|
| 多说话人对话 | 原生支持 | 不支持 | ️ 有限支持 |
| 多轮对话 | 上下文连贯 | 单轮 | ️ 有限支持 |
| 方言支持 | 零样本跨方言 | 不支持 | 不支持 |
| 副语言控制 | 多种副语言 | 不支持 | 不支持 |
| 语音质量 | 播客级别 | ️ 一般 | ️ 一般 |
| 自然度 | 高自然度 | ️ 中等 | ️ 中等 |
| 零样本克隆 | 支持 | ️ 有限 | ️ 有限 |
为什么选择SoulX-Podcast?
相比传统TTS和其他对话式TTS系统,SoulX-Podcast专为播客风格的多轮、多说话人对话而设计,支持跨方言零样本语音克隆和副语言控制,生成的语音更自然、更真实,是播客内容生成和高质量对话式语音合成的理想选择。
SoulX-Podcast采用基于Transformer的生成式架构,专门针对多轮、多说话人对话式语音生成进行了优化。
SoulX-Podcast System
├── Text Processing(文本处理)
│ ├── 多说话人对话解析
│ ├── 副语言标签识别
│ ├── 上下文理解
│ └── 多语言处理
├── Voice Cloning(语音克隆)
│ ├── 参考音频编码
│ ├── 说话人特征提取
│ ├── 跨方言特征迁移
│ └── 零样本克隆
├── Speech Generation(语音生成)
│ ├── 多轮对话生成
│ ├── 副语言事件生成
│ ├── 上下文连贯性保持
│ └── 高质量音频合成
└── Model Architecture(模型架构)
├── Transformer Encoder
├── Multi-Speaker Attention
├── Dialect-Aware Module
└── Paralinguistic Control Module
SoulX-Podcast的核心创新在于多轮对话的上下文理解:
工作流程:
技术特点:
SoulX-Podcast实现了跨方言的零样本语音克隆,这是一个重要的技术突破:
工作原理:
支持的方言:
优势:
SoulX-Podcast支持多种副语言事件,增强语音的真实感:
支持的副语言标签:
<|laughter|>:笑声<|sigh|>:叹息<|breathing|>:呼吸声<|coughing|>:咳嗽声<|throat_clearing|>:清嗓声实现方式:
应用示例:
# 在文本中使用副语言标签
text = "今天天气真好!<|laughter|>我们出去走走吧。<|sigh|>不过要注意防晒。"
# 模型会自动识别并生成对应的副语言事件
audio = model.generate(text, reference_audio="speaker.wav")
SoulX-Podcast基于1.7B参数的Transformer模型:
模型特点:
两个版本:
SoulX-Podcast通过以下方式处理多说话人对话:
零样本语音克隆的实现:
副语言事件的生成方式:
SoulX-Podcast提供了友好的WebUI界面:
# 启动WebUI(基础模型)
python3 webui.py --model_path pretrained_models/SoulX-Podcast-1.7B
# 启动WebUI(方言模型)
python3 webui.py --model_path pretrained_models/SoulX-Podcast-1.7B-dialect
WebUI功能:
SoulX-Podcast提供API接口:
# 启动API服务
python3 run_api.py --model_path pretrained_models/SoulX-Podcast-1.7B
API端点:
/generate:生成单说话人语音/generate_dialogue:生成多说话人对话/clone_voice:零样本语音克隆SoulX-Podcast支持vLLM加速:
# 构建Docker镜像
cd runtime/vllm
docker build -t soulxpodcast:v1.0 .
# 运行容器
docker run -it --runtime=nvidia --name soulxpodcast
-v /mnt/data:/mnt/data -p 7860:7860 soulxpodcast:v1.0
优势:
| 特性 | SoulX-Podcast | Supertonic |
|---|---|---|
| 主要用途 | 播客风格多轮对话 | 设备端单说话人TTS |
| 多说话人 | 原生支持 | 不支持 |
| 多轮对话 | 上下文连贯 | 单轮 |
| 方言支持 | 零样本跨方言 | ️ 有限 |
| 副语言控制 | 多种副语言 | 不支持 |
| 部署方式 | 云端/本地 | 设备端 |
| 性能 | 高质量 | 极速 |
选择建议:
SoulX-Podcast相比其他对话式TTS系统的优势:
SoulX-Podcast特别适合:需要生成播客内容的创作者、需要多说话人对话式语音的应用开发者、需要方言语音合成的开发者、需要高质量、自然语音合成的AI应用开发者、对语音合成质量有高要求的开发者、需要副语言控制的应用开发者。
不适合:只需要简单单说话人TTS的用户、对模型大小有严格限制的设备端应用、不需要多轮对话的场景。
欢迎来我中的个人主页找到更多有用的知识和有趣的产品