🚀 Bark
Bark 是由 Suno 开发的基于 Transformer 的文本转音频模型。Bark 能够生成高度逼真的多语言语音以及其他音频,包括音乐、背景噪音和简单的音效。该模型还能产生如大笑、叹息和哭泣等非语言交流声音。为了支持研究社区,我们提供了可用于推理的预训练模型检查点。
原始的 GitHub 仓库和模型卡片可在 此处 找到。
此模型仅用于研究目的。模型输出未经过审查,作者不认可生成内容中的观点。使用时请自行承担风险。
已发布两个检查点:
🚀 快速开始
你可以通过以下方式体验 Bark 的魅力:
- Bark Colab:
- Hugging Face Colab:
- Hugging Face 演示:
📦 安装指南
使用 🤗 Transformers 库
你可以使用 🤗 Transformers 库(版本 4.31.0 及以上)在本地运行 Bark。
- 首先安装 🤗 Transformers 库 和 scipy:
pip install --upgrade pip
pip install --upgrade transformers scipy
使用原始 Bark 库
你也可以通过原始的 Bark 库 在本地运行 Bark:
- 首先安装
bark
库
💻 使用示例
使用 🤗 Transformers 库
基础用法
通过 Text-to-Speech
(TTS) 管道运行推理。你可以通过几行代码使用 TTS 管道推理 Bark 模型!
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 建模代码运行推理。你可以使用处理器 + 生成代码将文本转换为单声道 24 kHz 语音波形,以实现更精细的控制。
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())
有关使用 🤗 Transformers 库使用 Bark 模型进行推理的更多详细信息,请参阅 Bark 文档。
使用原始 Bark 库
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)
🔧 技术细节
模型概述
Bark 是一系列将文本转换为音频的三个 Transformer 模型。
文本到语义标记
语义到粗略标记
粗略到精细标记
- 输入:EnCodec 的前两个码本
- 输出:EnCodec 的 8 个码本
架构
模型 |
参数 |
注意力机制 |
输出词汇表大小 |
文本到语义标记 |
80/300 M |
因果 |
10,000 |
语义到粗略标记 |
80/300 M |
因果 |
2 x 1,024 |
粗略到精细标记 |
80/300 M |
非因果 |
6 x 1,024 |
发布日期
2023 年 4 月
📚 详细文档
我们预计该模型的文本转音频功能可用于改进多种语言的无障碍工具。
虽然我们希望此次发布能让用户发挥创造力并构建有益的应用程序,但我们也认识到任何文本转音频模型都有双重用途的可能性。虽然使用 Bark 对已知人物进行语音克隆并不容易,但它仍可能被用于恶意目的。为了进一步降低 Bark 被意外使用的可能性,我们还发布了一个简单的分类器,可高精度检测 Bark 生成的音频(请参阅主仓库的笔记本部分)。
📄 许可证
本项目采用 MIT 许可证。