[Bark] AIでテキストからAudioを生成する [Text to Audio]

2023年5月12日金曜日

Artificial Intelligence

本記事では、Barkと呼ばれる機械学習手法を用いてテキストプロンプトからオーディオを生成する方法をご紹介します。

eyecatch

Bark

概要

Bark は、Sunoによって作成されたトランスフォーマーベースのテキストからオーディオへのモデルです。

Bark は、非常にリアルな多言語音声だけでなく、音楽、背景ノイズ、単純な効果音などの他の音声も生成できます。
また、笑う、ため息、泣くなどの非言語コミュニケーションを生成することも可能でありながら、商用利用が可能な事前トレーニング済みモデルを提供しています。

詳細はこちらのGithubをご参照ください。

本記事では上記手法を用いて、テキストからスピーチや音楽を生成していきます。

デモ(Colaboratory)

それでは、実際に動かしながらText to Audioを試していきます。
ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。
GitHub - Colaboratory demo

また、下記から直接Google Colaboratoryで開くこともできます。
Open In Colab

なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。

環境セットアップ

それではセットアップしていきます。 Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。

「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更

初めにGithubからソースコードを取得します。

%cd /content

!git clone https://github.com/suno-ai/bark.git

%cd /content/bark
# Commits on May 4, 2023
!git checkout 6f32532c675079a26b595e59b3d819ba470c0c91

次にライブラリをインストールします。

%cd /content/bark

# install libraries
!pip install -e .

# # change pytorch version
# !pip uninstall -y torch torchvision torchaudio
# !pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu118

最後にライブラリをインポートします。

%cd /content/bark

from bark import SAMPLE_RATE, generate_audio, preload_models
from IPython.display import Audio

以上で環境セットアップは完了です。

学習済みモデルのセットアップ

続いて、学習済みモデルをダウンロードします。
関数が用意されているので、コールするのみです。

preload_models()

Text to Audio(日本語)

それでは、まず日本語の音声を生成してみます。

text_prompt = """
  かえるぴょこぴょこ みぴょこぴょこ あわせてぴょこぴょこ むぴょこぴょこ
"""

# speaker list
# https://suno-ai.notion.site/8b8e8749ed514b0cbf3f699013548683?v=bc67cff786b04b50b3ceb756fd05f68c
audio_array = generate_audio(text_prompt, history_prompt='v2/ja_speaker_3')

出力結果は以下の通りです。

Audio(audio_array, rate=SAMPLE_RATE)

Text to Audio(非言語)

続いて、言語だけではなく、笑い声を追加したオーディオを生成します。

text_prompt = """
  [laughs] You have all these rules, ... and you think they'll save you.
"""

audio_array = generate_audio(text_prompt, history_prompt="v2/en_speaker_1")
Audio(audio_array, rate=SAMPLE_RATE)

出力結果は以下の通りです。

Text to Audio(Sing)

最後に、テキストを歌詞として歌ったオーディオを生成します。

text_prompt = """
  ♪ I know that I would never disappoint myself  All the ladies if you feel me help me sing it out Yeah ♪
"""

audio_array = generate_audio(text_prompt)
Audio(audio_array, rate=SAMPLE_RATE)

出力結果は以下の通りです。

まとめ

本記事では、Barkを用いてText to Audioを動かす方法をご紹介しました。

Text to Speechと異なり、非言語コミュニケーションの生成が可能である点が特徴です。

また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。


また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。

参考文献

1. GitHub - suno-ai/bark

AIで副業ならココから!

まずは無料会員登録

プロフィール

メーカーで研究開発を行う現役エンジニア
組み込み機器開発や機会学習モデル開発に従事しています

本ブログでは最新AI技術を中心にソースコード付きでご紹介します


Twitter

カテゴリ

このブログを検索

ブログ アーカイブ

TeDokology