🚀 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 許可證。