Bark
Overview
Section titled “Overview”Bark は、suno-ai/bark で Suno AI によって提案されたトランスフォーマーベースのテキスト読み上げモデルです。
Bark は 4 つの主要なモデルで構成されています。
BarkSemanticModel(‘テキスト’モデルとも呼ばれる): トークン化されたテキストを入力として受け取り、テキストの意味を捉えるセマンティック テキスト トークンを予測する因果的自己回帰変換モデル。BarkCoarseModel(‘粗い音響’ モデルとも呼ばれる):BarkSemanticModelモデルの結果を入力として受け取る因果的自己回帰変換器。 EnCodec に必要な最初の 2 つのオーディオ コードブックを予測することを目的としています。BarkFineModel(‘微細音響’ モデル)、今回は非因果的オートエンコーダー トランスフォーマーで、以前のコードブック埋め込みの合計に基づいて最後のコードブックを繰り返し予測します。EncodecModelからすべてのコードブック チャネルを予測したので、Bark はそれを使用して出力オーディオ配列をデコードします。
最初の 3 つのモジュールはそれぞれ、特定の事前定義された音声に従って出力サウンドを調整するための条件付きスピーカー埋め込みをサポートできることに注意してください。
Optimizing Bark
Section titled “Optimizing Bark”Bark は、コードを数行追加するだけで最適化でき、メモリ フットプリントが大幅に削減され、推論が高速化されます。
Using half-precision
Section titled “Using half-precision”モデルを半精度でロードするだけで、推論を高速化し、メモリ使用量を 50% 削減できます。
from transformers import BarkModelimport torch
device = "cuda" if torch.cuda.is_available() else "cpu"model = BarkModel.from_pretrained("suno/bark-small", dtype=torch.float16).to(device)Using CPU offload
Section titled “Using CPU offload”前述したように、Bark は 4 つのサブモデルで構成されており、オーディオ生成中に順番に呼び出されます。言い換えれば、1 つのサブモデルが使用されている間、他のサブモデルはアイドル状態になります。
CUDA デバイスを使用している場合、メモリ フットプリントの 80% 削減による恩恵を受ける簡単な解決策は、アイドル状態の GPU のサブモデルをオフロードすることです。この操作は CPU オフロードと呼ばれます。 1行のコードで使用できます。
model.enable_cpu_offload()この機能を使用する前に、🤗 Accelerate をインストールする必要があることに注意してください。 インストール方法はこちら
Suno は、多くの言語で音声プリセットのライブラリを提供しています こちら。 これらのプリセットは、ハブ こちら または こちら。
>>> from transformers import AutoProcessor, BarkModel
>>> processor = AutoProcessor.from_pretrained("suno/bark")>>> model = BarkModel.from_pretrained("suno/bark")
>>> voice_preset = "v2/en_speaker_6"
>>> inputs = processor("Hello, my dog is cute", voice_preset=voice_preset)
>>> audio_array = model.generate(**inputs)>>> audio_array = audio_array.cpu().numpy().squeeze()Bark は、非常にリアルな 多言語 音声だけでなく、音楽、背景ノイズ、単純な効果音などの他の音声も生成できます。
>>> # Multilingual speech - simplified Chinese>>> inputs = processor("惊人的!我会说中文")
>>> # Multilingual speech - French - let's use a voice_preset as well>>> inputs = processor("Incroyable! Je peux générer du son.", voice_preset="fr_speaker_5")
>>> # Bark can also generate music. You can help it out by adding music notes around your lyrics.>>> inputs = processor("♪ Hello, my dog is cute ♪")
>>> audio_array = model.generate(**inputs)>>> audio_array = audio_array.cpu().numpy().squeeze()このモデルは、笑う、ため息、泣くなどの非言語コミュニケーションを生成することもできます。
>>> # Adding non-speech cues to the input text>>> inputs = processor("Hello uh ... [clears throat], my dog is cute [laughter]")
>>> audio_array = model.generate(**inputs)>>> audio_array = audio_array.cpu().numpy().squeeze()オーディオを保存するには、モデル設定と scipy ユーティリティからサンプル レートを取得するだけです。
>>> from scipy.io.wavfile import write as write_wav
>>> # save audio to disk, but first take the sample rate from the model config>>> sample_rate = model.generation_config.sample_rate>>> write_wav("bark_generation.wav", sample_rate, audio_array)このモデルは、Yoach Lacombe (ylacombe) および Sanchit Gandhi (sanchit-gandhi) によって提供されました。 元のコードは ここ にあります。
BarkConfig
Section titled “BarkConfig”[[autodoc]] BarkConfig - all
BarkProcessor
Section titled “BarkProcessor”[[autodoc]] BarkProcessor - all - call
BarkModel
Section titled “BarkModel”[[autodoc]] BarkModel - generate - enable_cpu_offload
BarkSemanticModel
Section titled “BarkSemanticModel”[[autodoc]] BarkSemanticModel - forward
BarkCoarseModel
Section titled “BarkCoarseModel”[[autodoc]] BarkCoarseModel - forward
BarkFineModel
Section titled “BarkFineModel”[[autodoc]] BarkFineModel - forward
BarkCausalModel
Section titled “BarkCausalModel”[[autodoc]] BarkCausalModel - forward
BarkCoarseConfig
Section titled “BarkCoarseConfig”[[autodoc]] BarkCoarseConfig - all
BarkFineConfig
Section titled “BarkFineConfig”[[autodoc]] BarkFineConfig - all
BarkSemanticConfig
Section titled “BarkSemanticConfig”[[autodoc]] BarkSemanticConfig - all