注意:Bark 是 Suno 的开源文本转语音+模型。如果您正在寻找我们的文本转音乐模型,请访问我们的网页并加入我们的Discord社区。
🐶 Bark
Bark 是由 Suno 创建的基于 transformer 的文本转音频模型。Bark 可以生成高度逼真的多语言语音以及其他音频 - 包括音乐、背景噪音和简单的音效。该模型还可以产生非语言交流,如笑声、叹息和哭泣。为了支持研究社区,我们提供预训练模型检查点的访问权限,这些检查点已准备好进行推理并可用于商业用途。
⚠ 免责声明
Bark 是为研究目的而开发的。它不是传统的文本转语音模型,而是一个完全生成式的文本转音频模型,可能会以意想不到的方式偏离提供的提示。Suno 不对生成的任何输出负责。使用风险自负,请负责任地行事。
📖 快速索引
🎧 演示
🚀 更新
2023.05.01
-
©️ Bark 现在采用 MIT 许可证,这意味着它现在可以用于商业用途!
-
⚡ GPU 上速度提高 2 倍。CPU 上速度提高 10 倍。我们还添加了 Bark 的较小版本选项,以提供额外的加速,但代价是略低的质量。
-
👥 我们创建了一个语音提示库。我们希望这个资源能帮助您找到适合您用例的有用提示!您也可以加入我们的 Discord,社区在 #audio-prompts 频道积极分享有用的提示。
-
💬 在这里获得不断增长的社区支持和新功能访问:
-
💾 现在您可以在低 VRAM (<4GB) 的 GPU 上使用 Bark。
2023.04.20
- 🐶 Bark 发布!
🐍 Python 中的使用
🪑 基础
from bark import SAMPLE_RATE, generate_audio, preload_models
from scipy.io.wavfile import write as write_wav
from IPython.display import Audio
# 下载并加载所有模型
preload_models()
# 从文本生成音频
text_prompt = """
你好,我的名字是 Suno。呃 — 我喜欢披萨。[笑]
但我也有其他兴趣,比如玩井字游戏。
"""
audio_array = generate_audio(text_prompt)
# 将音频保存到磁盘
write_wav("bark_generation.wav", SAMPLE_RATE, audio_array)
# 在笔记本中播放文本
Audio(audio_array, rate=SAMPLE_RATE)
🌎 外语
Bark 支持各种语言的开箱即用,并自动从输入文本中确定语言。当提示包含代码切换的文本时,Bark 将尝试采用各自语言的本地口音。目前英语质量最佳,我们预计其他语言将随着规模扩大而进一步改进。
text_prompt = """
추석은 내가 가장 좋아하는 명절이다. 나는 며칠 동안 휴식을 취하고 친구 및 가족과 시간을 보낼 수 있습니다.
"""
audio_array = generate_audio(text_prompt)
注意:由于 Bark 自动从输入文本中识别语言,因此可以使用例如德语历史提示与英语文本。这通常会导致带有德语口音的英语音频。
text_prompt = """
Der Dreißigjährige Krieg (1618-1648) war ein verheerender Konflikt, der Europa stark geprägt hat.
This is a beginning of the history. If you want to hear more, please continue.
"""
audio_array = generate_audio(text_prompt)
🎶 音乐
Bark 可以生成所有类型的音频,原则上不区分语音和音乐。有时 Bark 会选择将文本生成为音乐,但您可以通过在歌词周围添加音乐符号来帮助它。
text_prompt = """
♪ In the jungle, the mighty jungle, the lion barks tonight ♪
"""
audio_array = generate_audio(text_prompt)
🎤 语音预设
Bark 支持 100 多个支持语言的说话者预设。您可以在这里或代码中浏览支持的语音预设库。社区也经常在 Discord 中分享预设。
Bark 尝试匹配给定预设的音调、音高、情感和韵律,但目前不支持自定义语音克隆。该模型还尝试保留音乐、环境噪音等。
text_prompt = """
I have a silky smooth voice, and today I will tell you about
the exercise regimen of the common sloth.
"""
audio_array = generate_audio(text_prompt, history_prompt="v2/en_speaker_1")
📃 生成更长的音频
默认情况下,generate_audio
适用于大约 13 秒的口语文本。有关如何进行长形式生成的示例,请参见 👉 笔记本 👈
点击切换示例长形式生成(来自示例笔记本)
命令行
python -m bark --text "你好,我的名字是 Suno。" --output_filename "example.wav"
💻 安装
‼️ 注意 ‼️ 不要使用 pip install bark
。它会安装一个不同的包,该包不是由 Suno 管理的。
pip install git+https://github.com/suno-ai/bark.git
或者
git clone https://github.com/suno-ai/bark
cd bark && pip install .
🤗 Transformers 使用
Bark 从 4.31.0 版本开始在 🤗 Transformers 库中可用,只需要最少的依赖项和额外的包。开始使用的步骤:
- 首先从主分支安装 🤗 Transformers 库:
pip install git+https://github.com/huggingface/transformers.git
- 运行以下 Python 代码生成语音样本:
from transformers import AutoProcessor, BarkModel
processor = AutoProcessor.from_pretrained("suno/bark")
model = BarkModel.from_pretrained("suno/bark")
voice_preset = "v2/en_speaker_6"
inputs = processor("Hello, my dog is cute", voice_preset=voice_preset)
audio_array = model.generate(**inputs)
audio_array = audio_array.cpu().numpy().squeeze()
- 在ipynb笔记本中收听音频样本:
from IPython.display import Audio
sample_rate = model.generation_config.sample_rate
Audio(audio_array, rate=sample_rate)
或使用第三方库(如scipy
)将其保存为.wav
文件:
import scipy
sample_rate = model.generation_config.sample_rate
scipy.io.wavfile.write("bark_out.wav", rate=sample_rate, data=audio_array)
有关使用🤗 Transformers库进行Bark模型推理的更多详细信息,请参阅Bark文档或实践Google Colab。
🛠️ 硬件和推理速度
Bark已在CPU和GPU上进行了测试并能正常工作(pytorch 2.0+
, CUDA 11.7和CUDA 12.0)。
在企业级GPU和PyTorch nightly版本上,Bark可以实时生成音频。在较旧的GPU、默认的colab或CPU上,推理时间可能会明显变慢。对于较旧的GPU或CPU,您可能需要考虑使用较小的模型。详细信息可以在我们的教程部分找到。
Bark的完整版本需要大约12GB的VRAM才能同时将所有内容保存在GPU上。
要使用较小版本的模型(应该能适应8GB VRAM),请设置环境标志SUNO_USE_SMALL_MODELS=True
。
如果您没有可用的硬件,或者想要使用我们更大版本的模型,您也可以在这里注册我们模型操场的早期访问权限。
⚙️ 详细信息
Bark是一个完全生成式的文本到音频模型,专为研究和演示目的而开发。它遵循类似于AudioLM和Vall-E的GPT风格架构,以及来自EnCodec的量化音频表示。它不是传统的TTS模型,而是一个完全生成式的文本到音频模型,能够以意想不到的方式偏离任何给定的脚本。与以前的方法不同,输入文本提示直接转换为音频,无需中间使用音素。因此,它可以泛化到语音以外的任意指令,如音乐歌词、音效或其他非语音声音。
以下是一些已知的非语音声音列表,但我们每天都在发现更多。如果您发现特别有效的模式,请在Discord上告诉我们!
[laughter]
[laughs]
[sighs]
[music]
[gasps]
[clears throat]
—
或...
表示犹豫♪
表示歌词- 大写字母用于强调某个词
[MAN]
和[WOMAN]
分别用于使Bark倾向于男性和女性说话者
支持的语言
语言 | 状态 |
---|---|
英语 (en) | ✅ |
德语 (de) | ✅ |
西班牙语 (es) | ✅ |
法语 (fr) | ✅ |
印地语 (hi) | ✅ |
意大利语 (it) | ✅ |
日语 (ja) | ✅ |
韩语 (ko) | ✅ |
波兰语 (pl) | ✅ |
葡萄牙语 (pt) | ✅ |
俄语 (ru) | ✅ |
土耳其语 (tr) | ✅ |
中文简体 (zh) | ✅ |
未来语言支持请求在这里或在Discord的**#forums**频道。
🙏 致谢
- nanoGPT提供了一个简单明了且快速的GPT风格模型实现
- EnCodec提供了一个最先进的出色音频编解码器实现
- AudioLM提供了相关的训练和推理代码
- Vall-E、AudioLM以及许多其他开创性论文使Bark的开发成为可能
© 许可证
Bark使用MIT许可证。
📱 社区
🎧 Suno Studio (早期访问)
我们正在开发一个模型操场,包括Bark。
如果您感兴趣,可以在这里注册早期访问权限。
❓ 常见问题
如何指定模型下载和缓存的位置?
- Bark使用Hugging Face下载和存储模型。您可以在这里找到更多信息。
Bark的生成有时与我的提示不同。这是怎么回事?
- Bark是一个GPT风格的模型。因此,它可能会在生成过程中采取一些创造性的自由,导致模型输出的变异性比传统的文本到语音方法更高。
Bark支持哪些声音?
为什么输出限制在约13-14秒?
- Bark是一个GPT风格的模型,其架构/上下文窗口针对大约这个长度的输出生成进行了优化。
我需要多少VRAM?
- Bark的完整版本需要大约12Gb的内存才能同时将所有内容保存在GPU上。然而,即使是小到~2Gb的显卡也可以通过一些额外的设置工作。只需在生成之前添加以下代码片段:
import os
os.environ["SUNO_OFFLOAD_CPU"] = "True"
os.environ["SUNO_USE_SMALL_MODELS"] = "True"
我生成的音频听起来像1980年代的电话通话。这是怎么回事?
- Bark从头开始生成音频。它并不旨在仅创建高保真度、录音室质量的语音。相反,输出可以是从完美的语音到使用劣质麦克风录制的棒球比赛上多人争论的任何内容。