🚀 Bark
Bark 是由 Suno 开发的基于 Transformer 的文本转音频模型。该模型能够生成高度逼真的多语言语音,以及其他类型的音频,包括音乐、背景噪音和简单的音效。此外,它还能模拟如大笑、叹息和哭泣等非语言交流声音。为了支持研究社区,我们提供了可用于推理的预训练模型检查点。
原始的 GitHub 仓库和模型卡片可在 此处 找到。
本模型仅用于研究目的。模型输出内容未经过审查,作者不认可生成内容中的观点。使用时请自行承担风险。
目前发布了两个检查点:
🚀 快速开始
你可以亲自尝试使用 Bark!
✨ 主要特性
- 支持多种语言,包括英语、德语、西班牙语、法语、印地语、意大利语、日语、韩语、波兰语、葡萄牙语、俄语、土耳其语和中文。
- 能够生成高度逼真的语音、音乐、背景噪音和简单音效。
- 可以模拟非语言交流声音,如大笑、叹息和哭泣。
📦 安装指南
你可以使用 🤗 Transformers 库(版本 4.31.0 及以上)在本地运行 Bark。
- 首先安装 🤗 Transformers 库 和 scipy:
pip install --upgrade pip
pip install --upgrade transformers scipy
💻 使用示例
基础用法
使用 Text-to-Speech
(TTS) 管道进行推理,只需几行代码即可:
from transformers import pipeline
import scipy
synthesiser = pipeline("text-to-speech", "suno/bark")
speech = synthesiser("Hello, my dog is cooler than you!", forward_params={"do_sample": True})
scipy.io.wavfile.write("bark_out.wav", rate=speech["sampling_rate"], data=speech["audio"])
高级用法
使用 Transformers 建模代码进行推理,可实现更精细的控制:
from transformers import AutoProcessor, AutoModel
processor = AutoProcessor.from_pretrained("suno/bark")
model = AutoModel.from_pretrained("suno/bark")
inputs = processor(
text=["Hello, my name is Suno. And, uh — and I like pizza. [laughs] But I also have other interests such as playing tic tac toe."],
return_tensors="pt",
)
speech_values = model.generate(**inputs, do_sample=True)
播放或保存语音样本
在 ipynb 笔记本中播放语音样本:
from IPython.display import Audio
sampling_rate = model.generation_config.sample_rate
Audio(speech_values.cpu().numpy().squeeze(), rate=sampling_rate)
或者使用第三方库(如 scipy
)将其保存为 .wav
文件:
import scipy
sampling_rate = model.config.sample_rate
scipy.io.wavfile.write("bark_out.wav", rate=sampling_rate, data=speech_values.cpu().numpy().squeeze())
你也可以通过原始的 Bark 库 在本地运行 Bark:
- 首先安装
bark
库。
- 运行以下 Python 代码:
from bark import SAMPLE_RATE, generate_audio, preload_models
from IPython.display import Audio
preload_models()
text_prompt = """
Hello, my name is Suno. And, uh — and I like pizza. [laughs]
But I also have other interests such as playing tic tac toe.
"""
speech_array = generate_audio(text_prompt)
Audio(speech_array, rate=SAMPLE_RATE)
若要将 audio_array
保存为 WAV 文件:
from scipy.io.wavfile import write as write_wav
write_wav("/path/to/audio.wav", SAMPLE_RATE, audio_array)
📚 详细文档
有关使用 🤗 Transformers 库进行 Bark 模型推理的更多详细信息,请参考 Bark 文档。
🔧 技术细节
模型结构
Bark 是由三个 Transformer 模型组成的系列,用于将文本转换为音频。
文本到语义标记
语义到粗略标记
粗略到精细标记
- 输入:EnCodec 的前两个码本。
- 输出:EnCodec 的 8 个码本。
架构参数
模型 |
参数数量 |
注意力机制 |
输出词汇表大小 |
文本到语义标记 |
80/300 M |
因果 |
10,000 |
语义到粗略标记 |
80/300 M |
因果 |
2x 1,024 |
粗略到精细标记 |
80/300 M |
非因果 |
6x 1,024 |
发布日期
2023 年 4 月
📄 许可证
本项目采用 MIT 许可证。
📋 更广泛的影响
我们预计该模型的文本转音频功能可用于改进多种语言的无障碍工具。
虽然我们希望此次发布能让用户发挥创造力并构建有益的应用程序,但我们也认识到任何文本转音频模型都有潜在的双重用途。尽管使用 Bark 对已知人物进行语音克隆并不容易,但它仍可能被用于恶意目的。为了进一步降低 Bark 被意外使用的可能性,我们还发布了一个简单的分类器,可高精度检测 Bark 生成的音频(详见主仓库的笔记本部分)。