Bark 是由 Suno 开发的基于 Transformer 的文本转音频模型。Bark 能够生成高度逼真的多语言语音以及其他音频,包括音乐、背景噪音和简单的音效。该模型还可以产生非语言交流声音,如笑声、叹息声和哭泣声。为了支持研究社区,我们提供了可直接用于推理的预训练模型 checkpoint。
原始的 GitHub 仓库和模型卡片可在 此处 找到。
本模型仅供研究用途。模型输出未经过滤,作者不认可生成内容中的观点。使用本模型需自行承担风险。
已发布两个 checkpoint:
亲自试用 Bark!
import torch
import argparse
from openmind import AutoProcessor, AutoModel, is_torch_npu_available
import scipy
import time
def parse_args():
parser = argparse.ArgumentParser(description="Eval the model")
parser.add_argument(
"--model_name_or_path",
type=str,
help="path or model",
default="jeffding/bark-openmind",
)
args = parser.parse_args()
return args
def main():
args = parse_args()
model_path = args.model_name_or_path
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
processor = AutoProcessor.from_pretrained(model_path)
model = AutoModel.from_pretrained(model_path).to(device)
start_time = time.time()
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",
).to(device)
speech_values = model.generate(**inputs, do_sample=True)
print(speech_values)
end_time = time.time()
print(f"硬件环境:{device},推理执行时间:{end_time - start_time}秒")
if __name__ == "__main__":
main()从 4.31.0 版本开始,您可以借助 🤗 Transformers 库在本地运行 Bark。
pip install --upgrade pip
pip install --upgrade transformers scipyfrom 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"])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)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 库]((https://github.com/suno-ai/bark) 在本地运行 Bark:
首先安装 bark 库
运行以下 Python 代码:
from bark import SAMPLE_RATE, generate_audio, preload_models
from IPython.display import Audio
# download and load all models
preload_models()
# generate audio from text
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)
# play text in notebook
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模型组成的系统,可将文本转换为音频。
| 模型 | 参数规模 | 注意力机制 | 输出词汇表大小 |
|---|---|---|---|
| 文本到语义 tokens | 80/300 M | 因果型 | 10,000 |
| 语义到粗略 tokens | 80/300 M | 因果型 | 2x 1,024 |
| 粗略到精细 tokens | 80/300 M | 非因果型 | 6x 1,024 |
2023年4月
我们预计,该模型的文本转音频功能可用于改进多种语言的辅助工具。
虽然我们希望此次发布能让用户发挥创造力,构建造福社会的应用,但我们也认识到,任何文本转音频模型都存在双重用途的可能性。尽管使用 Bark 对知名人士进行声音克隆并非易事,但它仍有可能被用于恶意目的。为进一步降低 Bark 被不当使用的风险,我们还发布了一个简单的分类器,能够以较高准确率检测 Bark 生成的音频(详见主仓库的 notebooks 部分)。