跳到主要内容

语音合成模型

Bark 本地部署:满血 12GB 显存,省着跑 2GB

Suno 开源的文本到音频模型,能说话、能笑、能哼歌。它小到几乎任何一张卡都塞得下 —— 真正的问题从来不是能不能跑,而是多快、并发多少条。

Bark 不是传统意义上的 TTS。它没有音素、没有时长预测器、也没有声码器流水线,而是一条 GPT 式的自回归链路:文本先被 semantic 模型压成语义 token,再由 coarse 模型预测出 EnCodec 的前两个码本,最后 fine 模型非因果地补齐剩下的码本,交给 EnCodec 解码成 24kHz 单声道波形。三段 transformer 各 300M 参数(small 版各 80M),加上 EnCodec 解码器构成完整模型。副作用是它会顺手生成笑声、叹气、清嗓子、背景音乐甚至环境噪声 —— 在文本里写 `[laughs]`、`[sighs]`、`♪` 就能触发。官方支持 13 种语言,含简体中文,附带 100+ 说话人预设(`v2/zh_speaker_0` 到 `v2/zh_speaker_9` 是中文那批),MIT 授权,可商用。

有一件事必须先说清楚:上游仓库已经基本冻结了。suno-ai/bark 最后一次实质代码提交停在 2023 年 9 月,README 在 2024 年 4 月动过一次,至今没有发过任何一个 release,269 个 issue 挂在那里。Suno 本身把重心转向了商业音乐产品。但这不等于 Bark 死了 —— 权重以 MIT 放出来收不回去,而 Hugging Face 那侧的 `BarkModel` 是随 transformers 主干一起维护的,Flash Attention 2、SDPA、`enable_cpu_offload()` 这些支持全是上游冻结之后才加进去的。suno/bark 与 suno/bark-small 两个 checkpoint 月下载量合计仍有约 9.5 万次。要用就走 transformers 这条路,别指望原仓库再更新。官方从来不支持声音克隆,克隆能力只存在于社区分支 serp-ai/bark-with-voice-clone。

README 里那个「约 12GB 显存」经常把人吓退,其实指的是原生库把所有 fp32 子模型同时常驻在显存里的情况。换成 transformers 路径,Hugging Face 在一张 TITAN RTX 24GB 上实测:不做任何优化、256 个新 token 时峰值 5025MB、单条 10.48 秒;叠上 CPU offload 与 BetterTransformer 降到 2040.7MB;再加 fp16 只剩 1010.4MB、8.10 秒 —— 显存省了 80%,速度反而快了 23%。也就是说 Bark 的显存门槛低得离谱,真正花钱的地方在吞吐:batch 8 配 fp16 大约 0.78 样本/秒,A100 上开 Flash Attention 2 跑 batch 16、400 个 semantic token 能拿到 17 倍吞吐。所以按秒计费租一张卡跑完就停,比买卡划算得多。

01 —

有哪些版本,各要多少显存

同一套权重,跑法不同显存能差一个数量级

版本参数量显存上下文说明
suno/bark(v2 large)3 × 300M + EnCodec原生库 fp32 全量常驻 ~12GB;transformers 权重 4.49GB,fp16 约 2.2GB文本截断至 256 token/单次约 13 秒音质最好的满血版,中文与非语言音效表现都靠它。月下载约 3.8 万次。
suno/bark-small3 × 80M + EnCodec权重 1.68GB(fp32),fp16 约 0.85GB;`SUNO_USE_SMALL_MODELS` 下 8GB 卡稳跑文本截断至 256 token/单次约 13 秒速度明显更快、音质略降。下载量反而比大版本更高(约 5.8 万/月),说明大多数人跑的是它。
原生库 + OFFLOAD_CPU + SMALL_MODELS3 × 80M低至 ~2GB,官方明确支持 <4GB 显存的卡文本截断至 256 token/单次约 13 秒老卡、白嫖 Colab 或纯 CPU 的兜底方案,代价是子模型反复在显存与内存之间搬运。
transformers + fp16 + CPU offload3 × 300M实测峰值 1010.4MB(TITAN RTX 24GB,256 新 token)文本截断至 256 token/单次约 13 秒显存降 80%、延迟还降 23% 的组合,单条生成场景的最优解。
transformers + fp16 + Flash Attention 23 × 300Mbatch 8 约 4198.8MB;batch 16 需要 Ampere 及以上文本截断至 256 token/单次约 13 秒生产批量首选。A100 上 batch 16、400 semantic token 可达 17 倍吞吐。V100 这类 Volta 卡用不了 FA2,只能退回 fp16。
serp-ai/bark-with-voice-clone3 × 300M(社区分支)与 suno/bark 相同文本截断至 256 token/单次约 13 秒官方不做声音克隆,要克隆特定音色只有这条路。分支至今仍在维护。

02 —

该租哪张卡

Bark 是个不到 10 亿参数的模型,把钱花在吞吐上,别花在显存上

  • 试音、调 prompt、跑 bark-small

    Tesla V100 32GB$0.188/卡·时

    全网最便宜的一档,32GB 装满血 Bark 绰绰有余;Volta 不支持 Flash Attention 2,但单条试听本来也用不上。

  • 满血 suno/bark 常驻 + fp16 批量生成

    RTX 3090 24GB$0.193/卡·时

    Ampere 架构能开 Flash Attention 2,24GB 相对 12GB 峰值有一倍余量,性价比在整个价目表里最高。

  • 上千条配音的高吞吐流水线

    RTX 4090 24GB$0.540/卡·时

    Ada 架构 + FA2 + batch 16,自回归解码吃单核算力,4090 在这类小模型上的每秒样本数远超同显存的老卡。

  • Bark + Whisper + 克隆分支微调同机跑

    RTX A6000 48GB$0.817/卡·时

    48GB 能让语音识别、合成、后处理模型同时常驻,省掉反复加载卸载的时间。

03 —

四步跑起来

从空机器到出第一个 wav,通常十分钟以内

  1. 01

    开机器,装对包

    选 PyTorch 预置镜像开一台 RTX 3090,SSH 进去直接装。注意一个坑:PyPI 上那个叫 `bark` 的包不是这个项目,装了会一脸茫然,必须从 GitHub 装。Bark 在 PyTorch 2.0+、CUDA 11.7 与 12.0 上都验证过。

    pip install git+https://github.com/suno-ai/bark.git  # 不要 pip install bark
  2. 02

    最省显存的原生跑法

    两个环境变量决定显存占用。`SUNO_USE_SMALL_MODELS` 换成 80M 的小模型,`SUNO_OFFLOAD_CPU` 让空闲子模型退回内存,两个一起开能把占用压到 2GB 左右。输出固定 24kHz 单声道,中括号标签可以触发笑声等非语言音。

    SUNO_USE_SMALL_MODELS=True SUNO_OFFLOAD_CPU=True python -c "from bark import SAMPLE_RATE, generate_audio, preload_models; preload_models(); import scipy.io.wavfile as w; w.write('out.wav', SAMPLE_RATE, generate_audio('你好,这是 Bark 的中文测试。[laughs]'))"
  3. 03

    生产跑法:transformers + fp16 + FA2

    真要批量出活就别用原生库。走 `BarkModel`,半精度加载再挂上 Flash Attention 2,音质几乎无损而显存与延迟双降。显存紧张时追加一行 `model.enable_cpu_offload()`,三种优化可以叠加使用。

    model = BarkModel.from_pretrained('suno/bark', torch_dtype=torch.float16, attn_implementation='flash_attention_2').to('cuda')
  4. 04

    锁音色,拼长音频

    不给 `voice_preset` 时 Bark 每次都会随机一个音色,同一段旁白前后不一致。用 `v2/` 前缀的预设锁定说话人。单次生成上限约 13 秒是架构决定的,长音频要自己按句切分、逐句生成再拼接,并且始终传同一个预设保持音色连贯。

    inputs = processor('欢迎收听本期节目。', voice_preset='v2/zh_speaker_1')

算笔账:1000 条配音要多少钱

假设要生成 1000 条约 13 秒的短句,用 RTX 3090 24GB($0.193/卡·时),走 transformers 的 fp16 + BetterTransformer,batch 8。按 Hugging Face 在同级 24GB 卡上实测的 0.78 样本/秒计算:1000 ÷ 0.78 ≈ 1282 秒 ≈ 0.36 小时,0.36 × $0.193 ≈ $0.069。加上拉权重与预热大约 5 分钟(0.083 小时 × $0.193 ≈ $0.016),总计约 $0.085 —— 不到一毛钱。真正需要留意的反而是存储:4.5GB 的权重按 $0.414/GB·月 存一个月要 $1.86,是计算成本的二十多倍。所以正确姿势是跑完即停、卷用完就销毁,下次重新拉权重(入站不计费)。1000 条 13 秒的 24kHz WAV 约 624MB,按 $0.0081/GB 出站算约 $0.005,可以忽略。计算按秒计费、停机即停止计费,没有起租时长,也没有开通费。

04 —

常见问题

Bark 到底需要多大显存?12GB 是硬门槛吗?

不是。12GB 是原生库把所有 fp32 子模型同时压在显存里的极端情况。用 transformers 走 fp16 加 CPU offload,实测峰值只有 1010.4MB;用 bark-small 配 `SUNO_USE_SMALL_MODELS` 在 8GB 卡上很轻松;两个环境变量全开甚至能压到 2GB。换句话说显存几乎不是约束,NexGPU 上 $0.188/卡·时 的 Tesla V100 32GB 或 $0.193/卡·时 的 RTX 3090 24GB 都有大把余量。

2026 年了,Bark 还值得用吗?项目还在维护吗?

上游 suno-ai/bark 已经冻结 —— 最后一次实质代码提交在 2023 年 9 月,从未发过 release,Suno 的精力转到了商业音乐产品上。但权重是 MIT 放出的,Hugging Face 的 `BarkModel` 随 transformers 主干持续维护,Flash Attention 2 支持还是冻结之后才加的,两个 checkpoint 月下载量合计约 9.5 万次。如果你要的是能笑、能叹气、能带背景音的生成式音频,而不是字正腔圆的播报腔,它依然是 MIT 授权里最有意思的一个。在 NexGPU 上按秒租一张卡验证一晚上,成本比开个会还低。

Bark 可以做声音克隆吗?怎么克隆自己的音色?

官方明确说不支持自定义声音克隆,只提供 100+ 个预设说话人和随机音色。要克隆得用社区分支 serp-ai/bark-with-voice-clone,它至今仍在维护。这条路要跑额外的编码步骤和显存占用会略高,建议直接在 NexGPU 开一张 RTX A6000 48GB($0.817/卡·时),把克隆分支和原版并排跑对比,选完再决定长期用哪个。

为什么 Bark 只能生成 13 秒?长音频怎么做?

这是模型架构定死的:文本输入被截断到 256 token,`generate_audio` 一次大约对应 13 到 14 秒语音。做长音频只能自己按句号切分、逐句生成再拼接,官方仓库的 long_form_generation notebook 就是这个思路。关键是每句都传同一个 `v2/` 预设,否则音色会漂。这类切分后的批量生成正好适合开 batch,用 NexGPU 的 RTX 4090 24GB($0.540/卡·时)一次把整集播客跑完。

Bark 的中文效果怎么样?

简体中文在官方支持的 13 种语言里,配套 `v2/zh_speaker_0` 到 `v2/zh_speaker_9` 十个预设。实话说中文稳定性不如英文,偶尔会串音或读错多音字,`[laughs]` 这类非语言标签也是英文语料上效果最好。值得反复试不同预设和随机种子挑样本 —— 而这种「多跑几轮挑一条」的用法,正是按秒计费最省钱的场景,NexGPU 上跑完停机就不再计费。

跑 Bark 要不要租 H100 或 H200?

不要。Bark 三段加起来不到 10 亿参数,H100 SXM 80GB 是 $3.582/卡·时、H200 141GB 是 $6.660/卡·时,绝大部分显存和算力会闲置,自回归解码也吃不满这种卡。同样的活 RTX 3090 24GB 只要 $0.193/卡·时,差价接近二十倍。NexGPU 有 75 种 GPU 型号、2498 张卡分布在 51 个国家地区,把 H100 留给真正需要它的训练任务,Bark 挑便宜的 Ampere 卡就行。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。