传统 TTS 只会念稿?实测 SoulX-Podcast:多人对话、方言克隆、笑声叹息都能生成

发布时间:2026/9/30 8:22:18
传统 TTS 只会念稿?实测 SoulX-Podcast:多人对话、方言克隆、笑声叹息都能生成 一句话说明TTSText-to-Speech文本转语音就是把文字变成「人说话的声音」。普通 TTS 像机器念稿本文要聊的这个项目目标是让 AI 像真人一样「聊天式」地播报。前阵子我想给自己的技术博客配个「播客版」试了一圈 TTS 工具发现一个共同毛病它们基本都是一个人念稿。你说两句就停换个角色得重新配一遍方言更别提了最尴尬的是没有一点「人味」——该笑的地方不笑该叹气的时候干巴巴。直到我翻到SoulX-Podcast这个开源项目GitHub 上由 Soul AI Lab 团队维护它主打的就是「播客风格的多轮、多说话人对话语音」。我花了一晚上把它跑起来、翻了下文档和源码思路这篇文章把我看到的、试到的东西讲给你听——不是官方宣传稿就是一个普通使用者的实测笔记。它到底解决什么痛点先说清楚传统 TTS 的「代沟」在哪单说话人、单轮你给它一段文字它念完就结束不会「接话」。没有上下文两句之间没逻辑连续听起来像拼接的录音。没有方言想用四川话、粤语基本得单独训练模型。没有情绪笑声、叹息、咳嗽这些「副语言」[副语言paralinguistic说话时伴随但不属于文字本身的音比如笑、叹气、清嗓子]普通 TTS 一概没有。SoulX-Podcast 想做的事就是把这些短板一次性补上让 AI 生成的语音听起来像两个真人在聊播客。核心能力我翻文档 实跑验证的几点1. 多人、多轮对话生成这是它和传统 TTS 最大的区别。你给它一段「剧本」里面标好谁说话、说什么它能按顺序生成一整段对话并且保持上下文连贯——上一句提到的东西下一句语气是接得上的。打个比方普通 TTS 像让一个人分饰两角轮流念台词SoulX-Podcast 像两个真人坐在一起录节目中间还有自然的停顿和过渡。2. 跨方言零样本语音克隆零样本语音克隆[零样本zero-shot不专门训练只给一小段参考音频就能模仿这个人的声音]你给一段某人的录音它就学会这个人的音色之后用这个音色念任何新内容。它支持四川话、河南话、粤语等方言而且关键点是「跨方言」——你用普通话的参考音频也能让它用四川话说出来不需要为每种方言单独训练。原理上大概是把「说话人是谁」和「说什么方言」两件事拆开处理下文会细讲。3. 副语言控制笑声、叹息随便加这一点是我觉得最有意思的。它用特殊的标签标记情绪动作比如|laughter|笑声|sigh|叹息|breathing|呼吸声|coughing|咳嗽|throat_clearing|清嗓子你在文本里插一个标签生成的语音就会在那个位置自然地「笑一下」或「叹口气」。效果可以参考下面这张声波图——不同颜色代表不同说话人波形里嵌着的笑脸/叹气图标就是副语言事件。4. 单说话人 TTS 也没落下它也能老老实实做「一个人念长文本」的活而且质量不差。换言之即使你不需要对话功能拿来当普通配音工具也合格。5. 中英双语支持中文普通话 多种方言和英文还能混着用。比如一句里夹个英文术语它处理得比较自然。它怎么做到的尽量说人话下面这张图是官网给出的系统流程我简化了关键路径方便理解输入多说话人对话文本 参考音频文本处理对话解析 / 谁在说什么副语言标签识别上下文理解语音克隆参考音频编码说话人特征提取跨方言特征迁移语音生成多轮对话生成副语言事件生成高质量音频合成输出播客级音频几个值得记住的点模型底座是 1.7B 参数的 Transformer[Transformer现在主流的大模型基础架构擅长处理长序列、理解前后文]。有两个版本SoulX-Podcast-1.7B基础版支持多轮对话 副语言。SoulX-Podcast-1.7B-dialect方言版额外支持跨方言零样本克隆。方言克隆的比喻把声音想成「歌手 歌曲」。说话人特征是「歌手嗓音」方言是「曲调」。它先抽出嗓音再套到方言的曲调上于是你听到的是「同一个人的嗓子唱起了四川话的调子」。副语言怎么生成模型给每种情绪事件笑、叹气单独建了模识别到标签后在对应时间点把这段「非语言音」自然缝进语音流里而不是硬贴上去。实际数据和项目状态我扒了一下 GitHub 和官方时间线给你列个表数据会随时间变动以官网为准项目信息开发团队Soul AI Lab4 位核心贡献者开源协议Apache-2.0商用友好模型参数1.7B基础版 方言版社区热度GitHub Stars 3.1kForks 403持续增长创建时间2025 年 10 月论文arXiv:2510.235412025-10-28 发表模型上线Hugging Face2025-10-29在线 DemoHugging Face Spaces2025-10-31 部署加速部署vLLM Docker2025-11-03 支持小提示从社区反馈和迭代节奏看这是个还在快速更新的项目新功能比如更多方言大概率会持续加。和别的 TTS 比强在哪拿它和「传统单说话人 TTS」以及另一款对话式方案Supertonic主打设备端极速 TTS做个对比对比项SoulX-Podcast传统 TTSSupertonic多人对话✅ 原生支持❌ 不支持❌ 不支持多轮上下文✅ 连贯❌ 单轮❌ 单轮方言支持✅ 零样本跨方言❌ 不支持⚠️ 有限副语言控制✅ 笑/叹/咳等❌ 不支持❌ 不支持语音质量✅ 播客级⚠️ 一般⚠️ 极速但偏轻量部署方式云端 / 本地看实现设备端怎么选你想要播客级、多人、有情绪的语音 → SoulX-Podcast。你想要在手机/嵌入式设备上跑、追求极速 → Supertonic 更合适。你只是想给文章配个单人朗读 → 两者都行SoulX-Podcast 也能干。怎么用代码示例都保留安装# 1. 克隆仓库gitclone https://github.com/Soul-AILab/SoulX-Podcast.gitcdSoulX-Podcast# 2. 创建 Conda 环境conda create-nsoulxpodcast-ypython3.11conda activate soulxpodcast# 3. 安装依赖pipinstall-rrequirements.txt# 4. 下载模型pipinstall-Uhuggingface_hub huggingface-cli download --resume-download Soul-AILab/SoulX-Podcast-1.7B\--local-dir pretrained_models/SoulX-Podcast-1.7BWebUI最省事的方式不想写代码直接起个网页界面# 基础模型python3 webui.py--model_pathpretrained_models/SoulX-Podcast-1.7B# 想用方言换方言模型python3 webui.py--model_pathpretrained_models/SoulX-Podcast-1.7B-dialect界面长这样下图是我按官方描述生成的示意图实际以你本地起的服务为准WebUI 里你能做的事粘贴对话文本、上传每个人物的参考音频、插入副语言标签、实时试听、导出音频。Python 代码调用fromsoulxpodcastimportSoulXPodcast# 初始化模型modelSoulXPodcast(model_pathpretrained_models/SoulX-Podcast-1.7B)# 生成多说话人对话dialogue[{speaker:主持人,text:欢迎来到今天的播客节目},{speaker:嘉宾,text:谢谢邀请|laughter|今天很高兴来到这里。},{speaker:主持人,text:让我们开始今天的讨论吧。}]# 生成语音给每个说话人指定参考音频audiomodel.generate_dialogue(dialogue,reference_audios{主持人:path/to/host_audio.wav,嘉宾:path/to/guest_audio.wav})# 保存音频model.save_audio(audio,output_podcast.wav)注意嘉宾那句里的|laughter|就是前面说的副语言标签生成时会在那里自然笑一下。命令行一键跑示例bashexample/infer_dialogue.shAPI 接口想集成进自己的应用可以起个服务python3 run_api.py--model_pathpretrained_models/SoulX-Podcast-1.7B主要端点/generate生成单说话人语音/generate_dialogue生成多说话人对话/clone_voice零样本语音克隆想要更快上 vLLM Docker模型有 1.7B 参数本地 CPU 跑会比较慢。官方提供了 vLLM 加速和 Docker 部署# 构建镜像cdruntime/vllmdockerbuild-tsoulxpodcast:v1.0.# 跑容器需要 NVIDIA 显卡dockerrun-it--runtimenvidia--namesoulxpodcast\-v/mnt/data:/mnt/data-p7860:7860 soulxpodcast:v1.0经验之谈我有卡的环境跑起来明显更顺。没 GPU 的同学建议先用 Hugging Face 在线 Demo 体验别一上来就本地硬跑。适合谁 / 不适合谁适合做播客、想批量生成多人对谈内容的创作者做有声书需要不同角色、不同方言配音做教育内容想用「对话体」讲课游戏 / 娱乐应用里需要带情绪的角色语音对方言语音合成、语音质量有要求的开发者不太适合只需要「单人念稿」的简单场景杀鸡用牛刀设备端、对模型体积卡得很死的应用完全不需要多轮对话的场景资源汇总GitHubhttps://github.com/Soul-AILab/SoulX-Podcast在线 DemoHugging Face Spaceshttps://huggingface.co/spaces/Soul-AILab/SoulX-Podcast模型SoulX-Podcast-1.7B SoulX-Podcast-1.7B-dialect论文https://arxiv.org/abs/2510.23541小结我把 SoulX-Podcast 跑了一遍整体感受是它是目前少有的、把「多人多轮对话 方言克隆 副语言情绪」三件事打包做好的开源 TTS。对想做播客、有声书、对话式内容的人来说基本能省掉大量后期录音和剪辑的活。当然它也不是万能——模型偏大、本地没 GPU 会比较吃力而且作为活跃项目部分方言还在扩展中。我的建议是先用在线 Demo 试两段你自己的文本觉得音色和语气对味了再决定要不要拉到本地部署。如果你也在做类似的内容生成欢迎在评论区聊聊你用的方案我也在对比几款互相抄抄作业。