🦁

ByteDance USSをgoogle colabで試してみた。

2023/05/17に公開

USSとは

USSはByteDanceから出されたUniversal Source Separation with Weakly labelled Dataの頭文字をとったもので、色々な音源が混ざっているものから自動的に音声を検出・分離してクラス分けすることができる音声分類モデルです。
https://github.com/bytedance/uss

リンク

Colab
github

準備

Google Colabを開き、メニューから「ランタイム→ランタイムのタイプを変更」でランタイムを「GPU」に変更します。

環境構築

インストール手順は非常に簡単です。

!pip install uss

推論

今回はrepositoryのサンプルでもあるハリーポッターの動画の音声を利用します。
https://www.youtube.com/watch?v=VyHV0BRtdxo

(1)データの取得

!wget -O "harry_potter.flac" "https://huggingface.co/RSNuts/Universal_Source_Separation/resolve/main/uss_material/harry_potter.flac"

(2)推論の実行
CLIツールになっているのでこのまま実行するだけです。今回はUSSで定義されているLevel1, Level2, Level3の分類を行っています。

!uss -i "harry_potter.flac"

(3) 結果
結果はseperated_resultsというフォルダに格納されます。
推論実行後はこんな感じになります。

音声データの再生に関しては以下のように出来ます。

IPython.display.Audio("/content/separated_results/harry_potter/level=1/Human sounds.wav", rate=16000, normalize=True)

実際に音声を聞いてみるとかなり綺麗に分けられていることがわかります。

音声データの解析結果についてはpdfにまとめられています。
今回は可視化してみようと思います。

!sudo apt-get install poppler-utils
!pdftoppm /content/_zz_1.pdf level1 -png
!pdftoppm /content/_zz_2.pdf level2 -png
!pdftoppm /content/_zz_3.pdf level3 -png

from PIL import Image
display(Image.open("/content/level1-1.png"))
display(Image.open("/content/level2-1.png"))
display(Image.open("/content/level3-1.png"))

Level1

Level2

Level3

最後に

今回はByteDanceから出されたUSSという音声分類モデルをgoogle colabで試してみました。かなり綺麗にいろんな音を分類できていて雑音消去とかにも使えそうですし、映画とか動画作成の時に人間の音だけ取り出したり、効果音だけ取り出したりみたいなレイヤー操作もかなり簡単に出来そうだと感じました。
whisperと組み合わせると強力な音声認識・文字起こしツールが作成できそうな感じ??
ぜひ今度作成してみたいです。

今後ともLLM, Diffusion model, Image Analysis, 3Dに関連する試した記事を投稿していく予定なのでよろしくお願いします。

Discussion