音メディア処理研究室

 
TorchScriptを用いた音源分離アプリケーション

TorchScriptを用いた音源分離アプリケーション

2024年1月に行われたデモ大会の内容です。

・概要


PyTorchで作成された音源分離モデルをTorchScriptモデルに変換し、スマートフォン上で動作させることを目的にアプリケーションを作成しました。


TorchScriptは、PyTorchコードの表現を変換し、Pythonに依存しない環境でも動作することができるようになる仕組みです。これにより、基本的にPythonを実行することのできないスマートフォン上でも、音源に対する推論を可能にすることができると考え、作成に取り掛かることにしました。

・開発環境について


使用言語 : Kotlin
統合開発環境(IDE) : Android Studio(Ladybug 2024.2.1 Patch 2)
使用した分離モデル : open-unmix
Python(PyTorchモデル保存) : Python 3.11.9
アプリ実行環境 : Pixel 9 Pro(Android 15 AP4A.241205.013)

・アプリの動作イメージ

・分離に使用した音源

Mike’s Sulking / Spike Mullings より部分抜粋(25秒)
引用元 : https://www.cambridge-mt.com/ms/mtk/

・分離結果

open-unmixで使用されているモデルのうち、umxlモデルを変換し、利用しました。
実際の分離(分離スタートボタンを押してから分離が終了するまで)には、およそ21秒かかりました。

実際に端末上で分離した後の各音源は以下の通りです

1. ボーカル

2. ベース

3. ドラム

4. その他

・まとめ

TorchScriptを用いて、スマートフォン上でも音源分離を行うことができるアプリを作成できました。
プログラムの作成を通して、音データを扱うために、サンプリング周波数やチャンネル数、動作環境で利用できるライブラリの制約など、考慮するべき点が多数あることを学びました。
今回のプログラムでは、主にCPUを利用した音源分離を行う仕組みになっているため、モバイル上のリソースを有効活用したアプリケーションの作成にもつなげられると考えています。

・参考文献

TorchScript – PyTorch 2.5 documentation
https://pytorch.org/docs/stable/jit.html

PyTorchのモデルをTorchScriptへ変換する
https://ohke.hateblo.jp/entry/2019/12/21/230000

open-unmix-pytorch
https://github.com/sigsep/open-unmix-pytorch

«

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です