👋

SAM-Audio達でつくる音声分離アプリ「Click to Hear」

に公開

こんにちは。松尾研究所 データサイエンティストの穴井です。
この記事は松尾研究所 Advent Calendar 2025の22日目の記事です。

はじめに

Meta社が2025年12月15日にSAM(Segment Anything model)シリーズの最新作、SAM-Audioを公開しました。
公式サイト

https://ai.meta.com/samaudio/

公式サイトのデモをみて精度・ユニークさに感動してたんですが、「公式サイトのデモ(動画中の対象物をクリック->音声分離)かっこいいなー。だけど実際はI/Fつけないとクリックで動かないんだよな。じゃあ作ってみるか」という好奇心ドリブンで、音声分離アプリを作ってみました。
結果的には公式サイトのように動画でヌルヌル動くレベルにはならなかったんですが、SAM-Audioの概要と合わせてアプリの中身などを紹介していきます。

以下に実際のアプリ動作の様子、リポジトリを公開してます。

アプリ動作の様子
(CCライセンスのYoutube動画にノイズ音声を付与したサンプル動画でトライ)
https://x.com/rikunchu_28/status/2001880514807107919?s=20

リポジトリ
https://github.com/anyai-28/click-to-hear

SAM-Audioとは

paper
https://ai.meta.com/research/publications/sam-audio-segment-anything-in-audio/


論文 Figure1 抜粋

SAM-AudioはMeta社が開発した音声分離の基盤モデルです。SAMといえば動画像のセグメンテーションでしたが、ついに音もセグメント対象になりました。
動画・音声・テキストのマルチモーダルデータに対し学習しており、モデル構成や学習データ構築にはMeta社の先行研究が数多く盛り込まれています。アベンジャーズ感あって良いですね。

アプリ実装

SAM-Audioは、以下の3種類のプロンプトで分離対象を指定します

  • Text prompt:抽出対象の説明文(例:「dog barking」)
  • Visual prompt:抽出対象のMask画像(SAM 2等で生成)
  • Span prompt:対象音声が存在する時間帯(開始・終了時間)

その中でも今回は「Visual(クリック)からText prompt(説明文)を自動生成し、SAM-Audioに渡す」というパイプラインを構築しました。
理由としては以下です。

  • Visual promptの存在を初めは気づいてなかった
    • 複数フレーム必要だったので、どちらにせよMacbook環境では難しかった
  • SAMシリーズを使ったことなかったので、SAMとSAM-Audio両方使用したい

開発にあたっては、Claude Codeを活用し、SAM 3とSAM-Audioを仲介するモデルの選定を含めて依頼しました。動作環境はMacbookを指定しています。

SAM AudioやSAM3を活用し、以下の動作をするアプリを作りたい。必要に応じてその他モデルの調査・適用もして。

# 機能概要
- 入力:動画(音声付き)
- 対象物をクリックすると、対象物がセグメンテーションされる
    - 動画の状態でセグメントされるとBest
- クリックされた対象が何なのか説明文を生成する
    - API、ローカルモデルなんでもOK
- 生成文をもとに、SAM Audioで対象物を指定
- SAM Audioで抽出した対象音声、除去音声をそれぞれ再生可能にする
- 音声は保存可能にする
- 動作環境はMacbook
- 可能な限り商用利用可能なライセンスのライブラリ・モデルで構築する
    - ライセンスがあやしい場合は、ユーザーに相談すること
- testは不要だが、ソースコードをきちんと実装すること
- 環境はuvで管理している

# 参考
- SAM3:https://ai.meta.com/sam3/
- SAM Audio:https://github.com/facebookresearch/sam-audio

調査の結果、画像キャプションモデルにはMITライセンスのSalesforce/blip2-opt-2.7bを使用しました。

以下の流れでSAM3->BLIP2->SAM-Audioが連携しています。

  • モデル間データ連携図

アプリの感想

Macbook環境でもSAM3, BLIP2, SAM-Audioの各基盤モデルがスムーズに動いて驚きました。
SAM-Audioの所感としては、

  • smallサイズでも音声分離結構してくれるがBaseモデルの方が安定
  • 周囲のノイズに対して対象の音が小さい場合は分離を失敗しやすい(人が聞き分けれるレベルのノイズ量でも失敗する)
    • BLIP2で生成したプロンプトの改善・Largeモデルを使用などで改善の余地はまたある
  • Visual promptやSpan promptを加えた場合の精度変化が気になる。Visual promptがあれば、話しているタイミングか否かは視覚的に分かるため抽出精度は向上しそう。

以上、SAM-Audioを使用した音声分離アプリの紹介でした。
今後も様々な基盤モデルが出てくると思うので、実際に動かして遊ぶ習慣を継続していきたいですね。

松尾研究所テックブログ

Discussion