Bark:把语音只当作众多声音之一的模型
让大多数 TTS 模型生成一声笑,你得到的要么是沉默,要么像是从音效库里粗糙拼接进来的声音。Suno 的开源模型 Bark 采用了不同的处理方式,因为它从一开始就不是一款狭义的文本转语音引擎——它是一款生成式文本转音频模型,而语音只是它恰好擅长生成的声音之一。在句子里加入 [laughs],Bark 就会像生成前后文字一样,在语境中亲自演绎这声笑。
Bark 是什么?
Bark 是 Suno 创建、采用 MIT 许可证发布的基于 Transformer 的生成式音频模型。它并不遵循传统 TTS 的流程——从文本到音素,再到声学特征,最后到波形——而更像一个碰巧输出音频 token 而不是文本 token 的语言模型。它通过三阶段自回归流程,将书面提示直接转换为 24kHz 波形:先生成表示预期内容的语义 token,再生成粗粒度声学 token,最后生成细粒度声学 token,底层音频 token 化使用 Meta 的 EnCodec。整个过程完全没有音素转换步骤——文本输入后,越来越细致的音频表示端到端地输出。
方括号标签:笑声和叹气究竟如何工作
这是 Bark 最具代表性的功能,而且确实很容易使用。只要把标签直接插入输入文本,就能触发非语言声音和情绪提示:[laughter]、[sighs]、[gasps] 以及类似标记会让模型在句子的对应位置生成该声音,由当前正在说话的声音亲自演绎,而不是作为独立音频片段插入。除方括号标签外,Bark 也会把普通格式当作表达提示——把某个词写成全大写会促使模型加重语气,在句末用“...”收尾则会产生自然的迟疑感,两种效果都不需要专门的参数。
不只是语音
因为 Bark 生成的是广义音频,而不只是语音,所以它还能直接根据文本提示生成简单的音乐、背景环境声和基础音效——这些能力完全超出了专用 TTS 模型的设计范围。它支持十多种语言,并能自然地进行语码转换,也就是说,脚本在一句话中途切换语言时不需要分别发起生成调用;它还内置了一系列覆盖不同声音风格的说话人预设,而不是只有一种默认声音。
Bark 做不到什么(开始前请先阅读)
有几项实际限制值得提前了解,因为它们决定了 Bark 真正适合做什么:
它主要不是一款声音克隆模型。 与大多数以克隆为重点的系统不同,Bark 的标准工作流围绕其内置说话人预设构建,而不是根据短音频片段复现任意参考声音——如果你的核心需求是克隆某个特定人物的声音,专门为此设计的模型会更适合。
输出真的可能出乎意料。 Bark 是完全生成式模型,而不是受到严格约束的 TTS 系统,因此它偶尔会以意想不到的方式偏离输入提示——跳过某个短语、加入未要求的声音,或者没有逐字说出你输入的内容。这是架构本身的特性,不是能通过配置消除的 bug。
它速度较慢,而且单次生成长度有限。 Bark 的自回归流程意味着,即使在 GPU 上,生成一个句子通常也需要 5 到 15 秒;每次生成调用还被限制在大约 13-14 秒的音频——更长的内容需要拆成多次调用,无法一次生成完毕。
Bark 入门
- 通过 pip 安装或克隆代码仓库。 使用
pip install git+https://github.com/suno-ai/bark.git可以快速开始;如果你想查看或修改代码,也可以直接克隆仓库。 - 检查 PyTorch 和 CUDA 版本。 Bark 需要 PyTorch 2.0 或更高版本;如果使用 GPU 运行,则需支持 CUDA 11.7 或 12.0。
- 显存有限时使用小模型变体。 加载模型前设置环境变量
SUNO_USE_SMALL_MODELS=True,即可让 Bark 在大约 8GB 显存上运行,但输出质量会有所降低。 - 在提示词中直接写入标签。 一次基础生成只需几行代码:加载模型,传入包含所需方括号标签的文本字符串,再写出生成的波形——非语言提示本身无需单独配置。
- 把较长的脚本拆成多次生成。 考虑到每次调用大约 13-14 秒的限制,应把较长旁白拆成句子或段落大小的片段,再拼接生成的音频,不要期待一次调用处理完整的长段落。
- 如果不想使用独立仓库,可以尝试 Hugging Face Transformers 集成。 从 4.31.0 版本开始,Transformers 已支持 Bark;如果项目本来就依赖该库,这种方式可以简化集成。
获得更好效果的技巧
- 少量使用标签,并确保符合语境。 在脚本中真正好笑的内容后加入
[laughs]会显得自然;到处散布非语言标签会削弱效果,让表达听起来像照本宣科,而不是自然反应。 - 先测试预设说话人,再判断是否需要自定义声音。 Bark 并非围绕零样本克隆构建,因此先浏览其内置说话人预设,通常比强行把任意参考声音塞进流程更快。
- 重新生成,不必和不可预测的输出较劲。 鉴于 Bark 的生成式特性,偶尔出现异常结果时,直接用相同提示重新生成,往往比试图只靠提示工程提前阻止问题更快。
- 从一开始就为单次调用的长度限制做好规划。 提前把脚本整理成自然片段,比写完一整篇长稿后才在项目中途发现长度上限更能避免返工。
- 把它用在表达力比精确度更重要的地方。 角色配音、动画内容和创意音频项目最能体现 Bark 的非语言表现范围——对于精确、可预测的旁白,更传统的 TTS 模型可能更合适。
Bark 与其他表达性 TTS 模型对比
| Bark | Chatterbox | CosyVoice3 | |
|---|---|---|---|
| 核心用途 | 生成式文本转音频 | 带情绪控制的声音克隆 | 支持方言的多语言克隆 |
| 非语言声音 | 原生方括号标签,另支持音乐/音效 | 副语言标签(Turbo 变体) | 并非专用功能 |
| 声音克隆 | 不是主要工作流 | 是,零样本 | 是,零样本 |
| 输出可预测性 | 可能偏离提示 | 更一致 | 更一致 |
| 语言 | 13+ | 英语(Multilingual:23) | 9 种语言 + 18 种中文方言 |
| 许可证 | MIT | MIT | 开放,提供托管 API |
Bark 的独特定位是表达性强、以角色为中心的音频;在这类音频中,笑声、叹气和语调变化比复现某个特定人物的声音更重要——针对这项工作,很少有开源模型能像它一样自然地生成非语言声音。
常见问题
如何让 Bark 生成笑声或叹气?
在希望声音出现的位置,直接在输入文本中插入 [laughter] 或 [sighs] 等方括号标签——Bark 会用当前说话人的声音进行演绎,无需额外添加独立音效。
Bark 可以克隆某个特定人物的声音吗?
这不是它的主要设计。Bark 围绕一组预设声音构建,而不是根据参考片段进行零样本克隆——如果要克隆某个真实人物的特定声音,专用克隆模型更合适。
Bark 可以免费用于商业用途吗?
可以。Bark 采用 MIT 许可证发布,允许商业使用,无需支付版税或另行签订许可协议。
为什么 Bark 有时生成的内容和我输入的不一样?
Bark 是完全生成式音频模型,而不是受限的 TTS 系统,因此它偶尔会偏离准确提示——这是其架构的已知特性,而不是配置问题。
Bark 单次生成可以有多长?
每次生成调用限制在大约 13-14 秒的音频;更长的内容需要拆成多个片段,分别生成。
在浏览器中把文字转换为语音
如果你希望完成相近的“文字 → 单人语音”流程,可以使用 Echora 的文字转语音。输入最多 5,000 个字符,选择内置音色或已保存的自定义音色,按需添加支持的表达标签并调整语音稳定度,然后试听结果并下载生成的 MP3。