语言支持:
- 英语
- 德语
- 西班牙语
- 法语
- 印地语
- 意大利语
- 日语
- 韩语
- 波兰语
- 葡萄牙语
- 俄语
- 土耳其语
- 中文
缩略图: >-
https://user-images.githubusercontent.com/5068315/230698495-cbb1ced9-c911-4c9a-941d-a1a4a1286ac6.png
库: bark
许可证: mit
标签:
- bark
- 音频
- 文本转语音
复制来源: ylacombe/bark-small
管道标签: 文本转语音
Bark语音合成系统
Bark是由Suno开发的基于Transformer架构的文本转音频模型。该模型能够生成高度逼真的多语言语音,以及音乐、背景噪音和简单音效等其他音频内容,还能模拟笑声、叹息和哭泣等非语言交流。为支持研究社区,我们提供了可直接用于推理的预训练模型检查点。
原始GitHub仓库和模型卡片详见此处。
本模型仅限研究用途,生成内容未经审查且不代表作者观点,使用风险自负。
发布两个检查点版本:
使用示例
亲身体验Bark的强大功能:
-
Bark协作笔记本:
-
Hugging Face协作笔记本:
-
Hugging Face演示空间:
🤗 Transformers使用指南
自4.31.0版本起,可通过🤗 Transformers库本地运行Bark。
- 首先安装🤗 Transformers库和scipy:
pip install --upgrade pip
pip install --upgrade transformers scipy
- 通过
文本转语音
(TTS)管道进行推理:
from transformers import pipeline
import scipy
synthesizer = pipeline("text-to-speech", "suno/bark-small")
audio_output = synthesizer("你好,我的狗狗比你酷多了!", forward_params={"do_sample": True})
scipy.io.wavfile.write("bark_output.wav", rate=audio_output["sampling_rate"], data=audio_output["audio"])
- 通过建模代码实现精细控制:
from transformers import AutoProcessor, AutoModel
processor = AutoProcessor.from_pretrained("suno/bark-small")
model = AutoModel.from_pretrained("suno/bark-small")
inputs = processor(
text=["你好,我是Suno。呃...我喜欢披萨。[笑声] 但我也喜欢玩井字棋等其他活动。"],
return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True)
- 在笔记本中试听或保存为WAV文件:
from IPython.display import Audio
Audio(audio_values.cpu().numpy().squeeze(), rate=model.generation_config.sample_rate)
import scipy
scipy.io.wavfile.write("output.wav", rate=model.config.sample_rate, data=audio_values.cpu().numpy().squeeze())
详细使用说明参阅Bark文档。
优化技巧
参考技术博客获取完整优化方案及基准测试结果。
显著加速方案:
使用🤗 Better Transformer
通过内核融合实现20-30%的速度提升:
model = model.to_bettertransformer()
需提前安装🤗 Optimum。
使用Flash Attention 2
更高效的注意力机制实现:
model = BarkModel.from_pretrained("suno/bark-small", torch_dtype=torch.float16, use_flash_attention_2=True).to(device)
需使用半精度并安装Flash Attention 2。
内存优化方案:
半精度模式
内存占用减少50%:
model = AutoModel.from_pretrained("suno/bark-small", torch_dtype=torch.float16)
CPU卸载
闲置子模型自动卸载至CPU,内存占用降低80%:
model.enable_cpu_offload()
需安装🤗 Accelerate。
原始库使用
通过原始Bark库运行:
- 安装Bark库
- 执行Python代码:
from bark import SAMPLE_RATE, generate_audio, preload_models
from IPython.display import Audio
preload_models()
text = "你好,我是Suno。我喜欢披萨。[笑声] 也喜欢玩井字棋。"
audio_array = generate_audio(text)
Audio(audio_array, rate=SAMPLE_RATE)
保存音频文件:
from scipy.io.wavfile import write as write_wav
write_wav("output.wav", SAMPLE_RATE, audio_array)
模型架构
Bark包含三个级联的Transformer模型:
-
文本→语义标记
- 输入:经BERT分词器处理的文本
- 输出:10,000维语义标记
- 参数量:80/300M | 因果注意力
-
语义→粗糙标记
- 输入:语义标记
- 输出:EnCodec编解码器前两套码本
- 参数量:80/300M | 因果注意力
-
粗糙→精细标记
- 输入:EnCodec前两套码本
- 输出:8套完整码本
- 参数量:80/300M | 非因果注意力
发布日期:2023年4月
社会影响
本模型有望提升多语言无障碍工具的实用性。虽然我们鼓励创造性应用,但需注意任何文本转音频技术都存在潜在滥用风险。为降低风险,我们同步发布了高精度的Bark音频检测分类器(详见主仓库notebooks目录)。
许可协议
Bark采用MIT许可证,允许商业用途。