HuggingFace镜像/bark-openmind
模型介绍文件和版本分析
下载使用量0

Bark

Bark 是由 Suno 开发的基于 Transformer 的文本转音频模型。Bark 能够生成高度逼真的多语言语音以及其他音频,包括音乐、背景噪音和简单的音效。该模型还可以产生非语言交流声音,如笑声、叹息声和哭泣声。为了支持研究社区,我们提供了可直接用于推理的预训练模型 checkpoint。

原始的 GitHub 仓库和模型卡片可在 此处 找到。

本模型仅供研究用途。模型输出未经过滤,作者不认可生成内容中的观点。使用本模型需自行承担风险。

已发布两个 checkpoint:

  • small
  • large (此 checkpoint)

示例

亲自试用 Bark!

  • Bark Colab:
Open In Colab
  • Hugging Face Colab:
Open In Colab
  • Hugging Face 演示:
Open in HuggingFace

在 Openmind 中使用

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()

🤗 Transformers 使用方法

从 4.31.0 版本开始,您可以借助 🤗 Transformers 库在本地运行 Bark。

  1. 首先安装 🤗 Transformers 库 和 scipy:
pip install --upgrade pip
pip install --upgrade transformers scipy
  1. 通过“文本转语音”(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"])
  1. 通过 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)
  1. 可在 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 文档。

Suno 使用方法

您也可以通过原始的 [Bark 库]((https://github.com/suno-ai/bark) 在本地运行 Bark:

  1. 首先安装 bark 库

  2. 运行以下 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)

pizza.webm

将 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

  • 输入:使用 Hugging Face 的 BERT tokenizer 进行 token 化的文本
  • 输出:对要生成的音频进行编码的语义 tokens

语义 tokens 到粗略 tokens

  • 输入:语义 tokens
  • 输出:来自 facebook 的 EnCodec Codec 的前两个码本的 tokens

粗略 tokens 到精细 tokens

  • 输入:EnCodec 的前两个码本
  • 输出:EnCodec 的 8 个码本

架构

模型参数规模注意力机制输出词汇表大小
文本到语义 tokens80/300 M因果型10,000
语义到粗略 tokens80/300 M因果型2x 1,024
粗略到精细 tokens80/300 M非因果型6x 1,024

发布日期

2023年4月

更广泛影响

我们预计,该模型的文本转音频功能可用于改进多种语言的辅助工具。

虽然我们希望此次发布能让用户发挥创造力,构建造福社会的应用,但我们也认识到,任何文本转音频模型都存在双重用途的可能性。尽管使用 Bark 对知名人士进行声音克隆并非易事,但它仍有可能被用于恶意目的。为进一步降低 Bark 被不当使用的风险,我们还发布了一个简单的分类器,能够以较高准确率检测 Bark 生成的音频(详见主仓库的 notebooks 部分)。