LAION 开源了一个「会演戏」的语音模型:你写台词,它负责怎么演——叹气、停顿、破音都能指定
3分钟看懂:它把「说什么」和「怎么演」拆成了两个输入
11 月 4 日,德国非营利 AI 组织 LAION 在 Hugging Face 上放出了 Humaneness Voice Large 1.7 的完整权重,许可协议是 CC BY 4.0,可以商用。
一句话说清它和普通 TTS 的区别:普通 TTS 你给它一段文字,它读出来;这个模型你给它两个东西——要说的字,和怎么演。
第二个输入长这样:
GENERAL: A natural, close conversation. The speaker is trying to contain
strong anger rather than turning the whole line into a shout.
SCRIPT:
(intensely angry, held back) [3.2 seconds duration] You knew what this meant to me.
[0.4 seconds pause]
(quieter, the anger still present) [2.5 seconds duration] And you did it anyway.GENERAL: 管整体:这是什么场景、什么距离感、这个人现在什么状态。 SCRIPT: 管细节:在台词的哪个位置,插入什么表演。
圆括号里是「怎么演」——情绪、语气、以及非语言的声音,比如 (sharp gasp, 0.3 seconds)、清嗓子、笑场。方括号里是「多久」——这句要拖 3.2 秒,这里停 0.4 秒。
关键是:这些括号里的内容不会被人念出来。 真正送进模型的 text 只有那两句台词本身。模型学会了把「表演指令」和「台词内容」当成两件事处理——这正是过去大部分开源 TTS 做不到的地方。
为什么这件事值得关心:大多数 TTS 读得对,但演得假
用过 TTS 做有声书或播客的人都有同一个感受:字是一个不错的字,语气不对。
问题不在音质。现在的模型音色已经很像真人了,问题在于「太完美」——没有犹豫、没有换气、没有那种话说重了之后的半秒停顿。而人说话的情绪,恰恰藏在这些「不完美」里。
以前的绕法有两种:一种是把情绪写进文本提示里(「用生气的语气说」),但模型对这类描述的执行力很飘;另一种是找个配音演员录一遍,成本就回去了。
Humaneness 1.7 走的是第三条路:把表演拆成可枚举、可复现的指令。LAION 给了一份交互式手册,覆盖 455 个「目标 / 语言 / 条件」组合,其中包含 40 种情绪、15 种说话风格、18 类非语言发声(叹气、笑、哽咽这类)。每个组合都附了提示词原文、CFG 设置、以及六条留出测试音频——包括失败的。
这一点很重要:它把失败的样本也放出来了。 大多数模型发布只展示精选 demo。
怎么用:一行下载,一条命令出音频
权重在 Hugging Face 上,模型卡给了完整命令:
hf download laion/Humaneness-Voice-Large-1.7 --local-dir humaneness-large17
cd humaneness-large17
pip install -r requirements.txt
python infer.py --language en --seconds 9.2 --seed 1701 \
--text 'I thought you had forgotten. You remembered every little detail. I am so glad you came back.' \
--prompt-file examples/prompt-en.txt --output example.wav几个要注意的点:
- 需要 CUDA 显卡。 模型卡写的是在 CUDA 版 PyTorch 上测的,没有承诺 Mac 或 CPU 的可用性。
- 要开
trust_remote_code=True。 用自定义实现,模型卡明确写了「加载前请先读代码」。这在开源模型里是常规操作,但意味着你不能把它当成一个开箱即用的库。 - 根权重是 FP32 存的,推理用 BF16。 目录里是三段 safetensors 分片,磁盘占用约 16.5 GB。
想固定音色:给一段参考音频,至少 5.04 秒
不加参考音频时,模型会自己造一个说话人。想让它固定成某个声音,就加 --reference-wav:
python infer.py --language en --seconds 9.2 --seed 1701 \
--text '...' --prompt-file examples/prompt-en.txt \
--reference-wav clean-speaker.wav --output example.wav规则有几条是硬的:
- 参考音频至少要 5.04 秒,少于这个长度直接用不了(老版本那个 2.96 秒的限制已经取消)。
- 超过 14.96 秒的部分会被裁掉。
- 参考音频里的话要和你要合成的台词不一样,否则会把参考的内容一起带进来。
- 单人、干净、无混响。
官方也把话说在前面了:参考音频只「引导」音色身份,不保证完全复刻。这和那些主打「1:1 克隆」的商业产品是两种定位。
CFG 那个数字:1 是关闭,2.5 只是演示用的
如果你熟悉扩散模型,会看到 --cfg 这个参数。这里的规则是:
- CFG = 1 表示完全关闭引导,模型按自己的判断演。
- CFG = 2.5 是官方演示视频里用的设置,不是普适最优。
- 手册里针对每个具体情绪/风格条件做过单独搜索,那些搜索结果都是在「合并后的 1.7 权重 + 无参考音频 + 无额外适配器」这个配置下测的。想复现,配置就得一致。
用 CFG 时要额外给一份「中性提示词」——同样的台词、同样的时长、同样的参考音频,只把情绪和风格描述去掉。模型拿这两份的差值来决定往哪个方向推。
它到底有多大
- 4,129,990,144 个参数(约 41.3 亿),FP32 根权重,三段分片。
- 五种语言:英语、德语、法语、西班牙语、荷兰语。没有中文。
- 48 kHz 单声道输出,比很多 TTS 的 24 kHz 高一档。
- 架构是分层的 MOSS Local Transformer:一个 Qwen3 系的语义 Transformer 加一个 local Talker。每 80 毫秒一帧,每帧出 12 个 codec 索引(12 个码本各一个,每个码本 1024 种取值),也就是每秒 150 个索引。模型不生成全部 32 个码本。
- 权重构成:Acting High-8654 有监督检查点 + 它的 rank-32 表演适配器(取 update 44,250,scale 1.0)合并而成。分支源头是 Large 1.3 Alpha,不是 1.6 再加个适配器。
官方自己承认的短板,别忽略
这份模型卡写得比大多数发布都克制,里面几句自我限定值得单独拎出来:
- 选择实验不是独立验证。 7 个候选检查点在 108 个英德任务上比过(40 种情绪 + 14 个边界情况,单 seed,无参考音频,CFG 1)。选出 update 44,250,composite 0.63709。但这是开发集上的选择,不是留出集上的独立确认。
- 分数是模型预测,不是人耳评分。 表里的 Content Enjoyment、Genuineness 这些来自 EARS 预测模型。「Requested emotion/style CDF」是一个诊断量,不是准确率百分比。
- 合并会改变结果。 FP32 合并做过代数校验,但合并会改变 BF16 舍入,采样出的语音可能和未合并路径不同。官方为此专门留了一份 canary 对照音频,并且明确说「五段脚本不足以证明合并带来质量提升」。
- 那个 0.16 秒的延迟数字不是这个模型的。 它是 Humaneness-Voice 服务器在 Jetson Thor 上跑 Small 模型的结果,不能套到 1.7 上。
- CC BY 4.0 不等于可以随便用别人的声音。 协议覆盖的是 LAION 自己的模型贡献和发布材料;外部 codec、依赖、训练数据各自有各自的条款。用别人的声音做参考,得有授权。
几个容易踩的坑(避坑)
- 别把适配器再叠一次。 根目录里的权重已经是合并后的结果。如果你又手动把
adapter/adapter.safetensors应用一遍,得到的东西不是官方测过的模型。要用未合并路径,就走--unmerged,它会自己加载parent_model/加适配器,且只加一次。 - 别把 1.5/1.6 的配方直接搬过来。 老的表演适配器和 CFG 建议是在不同的权重上测的,那些数字对新模型不成立。手册首页就写明:用 1.7 的那份。
- 参考音频的内容别和目标台词撞。 撞了会串味——把参考里说过的话也带进输出。
- 表演指令尽量用英文写。 模型卡建议
GENERAL/SCRIPT里的表演描述用英文,台词本身可以用五种语言里的任意一种。
适合谁,不适合谁
适合:
- 做有声书、广播剧、播客片头,需要「同一句话演出不同情绪」对比的。
- 做语音 Agent,想让机器人在特定节点叹气、停顿、示弱的。
- 想在自己机器上跑、不想把音频传到云端的团队——权重能下载,推理在本地。
- 研究者:这份模型卡把训练配方、checkpoint 选择记录、合并审计、失败样本全放出来了,可复现性少见。
不适合:
- 需要中文的。 只有英德法西荷五语。
- 没有 CUDA 显卡的。 41 亿参数的 FP32 权重 16.5 GB,模型卡只在 CUDA 上验证过。
- 想要开箱即用 API 的。 要装依赖、要
trust_remote_code、要自己处理 codec 下载。 - 要 1:1 声音克隆的。 官方明说参考音频只引导身份,不保证复刻。
- 要极低延迟实时流的。 这次发布给的是整段参考推理路径和批量 CFG 辅助,模型卡没有为 1.7 承诺实时流指标。
成本
权重免费(CC BY 4.0),成本全在算力:
- 磁盘:约 16.5 GB(FP32 根权重三段分片),不含 codec 和其他依赖。
- 显存:模型卡没给具体下限,但 41 亿参数以 BF16 加载,权重本身就在 8 GB 量级,实际还要留出激活和 KV 的空间——按经验至少要 16 GB 级显卡才稳。
- 时间:
--seconds 9.2是一次生成 9.2 秒音频的目标时长,不是推理耗时。批量跑建议常驻模型和 codec、缓存参考音频的编码结果,官方专门写了一份推理优化文档讲这件事。
第一步可以做什么
- 先听官方那份五语表演网格(模型卡里有链接),挑一个和你业务接近的场景,确认它的水平是不是你要的。
- 下载权重,用模型卡里那条现成命令跑通一次,先用它自带的示例提示词,别一上来就自己写。
- 想改某个情绪,去交互手册里找最近的组合,复制原文提示词和 CFG,再改一两个词。别凭空造句——手册里每个配方都标了
usable字段,只有通过留出门槛的才算推荐。 - 要固定音色,准备一段 6 到 10 秒、单人、干净、内容和目标台词不同的录音。
- 真要用在生产里,先在自己的数据上做一次听测。模型卡自己都说了,checkpoint 选择不是独立留出验证——别人的分数不能替你做决定。
参考来源
本文基于 LAION 官方 Hugging Face 模型卡与 GitHub 仓库记录,并结合多家媒体的转述整理:
https://huggingface.co/laion/Humaneness-Voice-Large-1.7
https://github.com/LAION-AI/Humaneness-Voice
https://artrealmai.com/article/laion-humaneness-voice-large-1-7-merged-acting-tts