🚀 Bark
Bark 是由 Suno 開發的基於 Transformer 的文本轉音頻模型。該模型能夠生成高度逼真的多語言語音,以及其他類型的音頻,包括音樂、背景噪音和簡單的音效。此外,它還能模擬如大笑、嘆息和哭泣等非語言交流聲音。為了支持研究社區,我們提供了可用於推理的預訓練模型檢查點。
原始的 GitHub 倉庫和模型卡片可在 此處 找到。
本模型僅用於研究目的。模型輸出內容未經過審查,作者不認可生成內容中的觀點。使用時請自行承擔風險。
目前發佈了兩個檢查點:
🚀 快速開始
你可以親自嘗試使用 Bark!
✨ 主要特性
- 支持多種語言,包括英語、德語、西班牙語、法語、印地語、意大利語、日語、韓語、波蘭語、葡萄牙語、俄語、土耳其語和中文。
- 能夠生成高度逼真的語音、音樂、背景噪音和簡單音效。
- 可以模擬非語言交流聲音,如大笑、嘆息和哭泣。
📦 安裝指南
你可以使用 🤗 Transformers 庫(版本 4.31.0 及以上)在本地運行 Bark。
- 首先安裝 🤗 Transformers 庫 和 scipy:
pip install --upgrade pip
pip install --upgrade transformers scipy
💻 使用示例
基礎用法
使用 Text-to-Speech
(TTS) 管道進行推理,只需幾行代碼即可:
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 建模代碼進行推理,可實現更精細的控制:
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())
你也可以通過原始的 Bark 庫 在本地運行 Bark:
- 首先安裝
bark
庫。
- 運行以下 Python 代碼:
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)
📚 詳細文檔
有關使用 🤗 Transformers 庫進行 Bark 模型推理的更多詳細信息,請參考 Bark 文檔。
🔧 技術細節
模型結構
Bark 是由三個 Transformer 模型組成的系列,用於將文本轉換為音頻。
文本到語義標記
語義到粗略標記
粗略到精細標記
- 輸入:EnCodec 的前兩個碼本。
- 輸出:EnCodec 的 8 個碼本。
架構參數
模型 |
參數數量 |
注意力機制 |
輸出詞彙表大小 |
文本到語義標記 |
80/300 M |
因果 |
10,000 |
語義到粗略標記 |
80/300 M |
因果 |
2x 1,024 |
粗略到精細標記 |
80/300 M |
非因果 |
6x 1,024 |
發佈日期
2023 年 4 月
📄 許可證
本項目採用 MIT 許可證。
📋 更廣泛的影響
我們預計該模型的文本轉音頻功能可用於改進多種語言的無障礙工具。
雖然我們希望此次發佈能讓用戶發揮創造力並構建有益的應用程序,但我們也認識到任何文本轉音頻模型都有潛在的雙重用途。儘管使用 Bark 對已知人物進行語音克隆並不容易,但它仍可能被用於惡意目的。為了進一步降低 Bark 被意外使用的可能性,我們還發布了一個簡單的分類器,可高精度檢測 Bark 生成的音頻(詳見主倉庫的筆記本部分)。