ローカル音声認識・音声合成

SAM Audioで録音から声や音を分離する

音を説明して入力し、対象音と残りの音声を分離します。

MetaのSAM Audioは、テキスト説明、映像手がかり、時間区間で指定した音を複雑な録音から分離するモデルです。公式例はCUDA1 GPU2で実行し、事前学習チェックポイント3のアクセス申請と認証を求めます。ボーカル除去専用ではなく、音声、音楽、効果音を含む録音から対象音を探す汎用分離ツールです。

実行条件と要点
  • テキスト、時間区間、映像の手がかりで対象音を指定します。
  • 公式例はPython 3.11以降とCUDA GPUを必要とします。
  • 事前学習チェックポイントへのアクセスを別途申請します。

説明した音と残りを別の音声に分ける

SAM Audioは音源分離モデルです。会議録音の特定話者、BGM、クラクションなどを自然言語で説明し、時間区間や映像の手がかりで指定できます。入力ミックスから対象音と残りの信号を出力します。Metaの紹介・公式リポジトリ

マイクの横のノートPCに音声波形が表示されています
短い説明で分離する対象音を指定します。

CUDA環境とチェックポイントアクセスを準備する

Python 3.11以降とCUDA対応GPUを用意し、公式リポジトリをインストールしてください。まずSAM AudioのHugging Faceモデルカードでチェックポイントへのアクセスを申請して承認を受けます。リポジトリをcloneし、meeting.wavをルートに置いてHugging Face CLI4でログインします。

公式リポジトリのcloneからインストール
git clone https://github.com/facebookresearch/sam-audio.git
cd sam-audio
python -m pip install .
認証して入力録音を準備
python -m pip install "huggingface_hub[cli]"
hf auth login
# Enter the token in the interactive prompt
cp /path/to/meeting.wav ./meeting.wav

テキストで対象音を具体的に指定する

以下のコードをseparate.pyとして保存して実行します。指定した音声はtarget.wav、残りはresidual.wavに保存されます。meeting.wavはリポジトリのルートに置き、出力はprocessorのサンプルレートで記録します。

テキストプロンプトによる分離例
from sam_audio import SAMAudio, SAMAudioProcessor
import torchaudio
import torch

checkpoint = "facebook/sam-audio-large"
model = SAMAudio.from_pretrained(checkpoint).eval().cuda()
processor = SAMAudioProcessor.from_pretrained(checkpoint)
batch = processor(audios=["meeting.wav"], descriptions=["speech"]).to("cuda")
with torch.inference_mode():
    result = model.separate(batch, predict_spans=False, reranking_candidates=1)
sample_rate = processor.audio_sampling_rate
torchaudio.save("target.wav", result.target[0].cpu().unsqueeze(0), sample_rate)
torchaudio.save("residual.wav", result.residual[0].cpu().unsqueeze(0), sample_rate)
分離スクリプトを実行
python separate.py

対象信号と残余信号をそれぞれ確認する

対象に意図した話者や効果音だけが残るか、残余トラックに必要な背景会話が残っているか比べてください。結果は元録音とプロンプト5に依存します。説明をone person's speechのように絞るか、公式の時間区間指定で再実行します。使用例

ヘッドホン、マイク、文字起こし画面が置かれた机
分離した対象音と残りの背景をそれぞれ聞きます。

汎用音源分離とボーカル除去を区別する

SAM Audioはテキスト、映像、時間区間で音声、楽器、効果音を指定する汎用分離ツールです。ボーカル除去が目的ならsinging voiceを試せますが、専用のボーカル・伴奏モデルと品質やワークフローが同じとは限りません。原音と分離結果で歪み、リバーブの残り、楽器の欠落を聞いてください。

研究用チェックポイントと利用条件を確認する

チェックポイントの承認はモデルファイルへのアクセスを許可しますが、録音内の声を分離・共有する権利までは与えません。会議や相談の録音では参加者に知らせ、組織の保存方針に従ってください。

録音機、メモ、音声認識結果を聞くためのヘッドホン
時間区間や映像の手がかりで対象音を絞ります。

用語の注釈

  1. CUDA — NVIDIA GPUで汎用計算を行うソフトウェア基盤です。

    本文に戻る
  2. GPU — 多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。

    本文に戻る
  3. チェックポイント — 学習済みモデルの重みなどを保存したファイルです。同じモデル系列でも、版や用途によって異なるチェックポイントを使うことがあります。

    本文に戻る
  4. CLI — Command-Line Interfaceの略です。ターミナルにコマンドを入力してプログラムを操作する方式です。

    本文に戻る
  5. プロンプト — モデルに送る入力文です。生成モデルでは作りたい結果を説明する文になり、出力の構成や内容を大きく左右します。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
MetaのSAM Audioは、テキスト説明、映像手がかり、時間区間で指定した音を複雑な録音から分離するモデルです。公式例はCUDA GPUで実行し、事前学習チェックポイントのアクセス申請と認証を求めます。ボーカル除去専用ではなく、音声、音楽、効果音を含む録音から対象音を探す汎用分離ツールです。
選ばないほうがよいのはどのような場合ですか?
SAM Audioはテキスト、映像、時間区間で音声、楽器、効果音を指定する汎用分離ツールです。ボーカル除去が目的なら`singing voice`を試せますが、専用のボーカル・伴奏モデルと品質やワークフローが同じとは限りません。原音と分離結果で歪み、リバーブの残り、楽器の欠落を聞いてください。