音楽を聴いているとき、「この曲のBPMって何?」「この音の成分はどうなっているんだろう?」と気になったことはありませんか?
今回、Pythonと音声解析ライブラリを組み合わせて、音声ファイルを解析してくれるWebツール「audioforge」を開発し、無料で公開しました。
ブラウザから音声ファイルをアップロードするだけで、BPM・波形・スペクトログラムが即座に表示されます。インストール不要で誰でも使えます。
audioforgeでできること
audioforgeは以下の3つの情報を自動で解析・表示します。
1. BPM(テンポ)の自動推定
アップロードした音声ファイルのテンポを自動で計算します。DTMや音楽制作をしている方が「サンプル音源のBPMを調べたい」というときに活用できます。手作業でタップテンポを取る必要がなくなります。
2. 波形(Waveform)の可視化
音声の時間軸に対する振幅変化をグラフで表示します。どの時間帯に音が大きいか、無音区間がどこにあるかが一目でわかります。ポッドキャスト編集や収録チェックにも使えます。
3. スペクトログラムの表示
時間と周波数の関係を色で表したグラフです。低音・中音・高音の成分がそれぞれいつ、どのくらいの強さで含まれているかがわかります。音色の分析や、ノイズ除去の参考にも役立ちます。
実際に使ってみる
以下のデモから試せます。wavまたはmp3ファイルをアップロードしてください。
※ Hugging Face Spacesが別タブで開きます
対応フォーマットはwavとmp3です。ファイルサイズは小さめ(1〜5MB程度)のものが解析が速くて快適です。
開発の背景
もともと趣味で音楽を聴いたり、音声データをPythonで扱うコードを書いていました。librosaというPythonライブラリを使うと、音声の特徴量をかなり簡単に取り出せることがわかり、「それならWebから使えるツールにしてしまおう」と思ったのがきっかけです。
GradioというPython用のUI構築ライブラリを組み合わせることで、Pythonのコードをそのままブラウザで動くWebアプリにできました。公開にはHugging Face Spacesを使っており、無料で世界中から使えるようになっています。
使った技術スタック
| 技術 | 用途 |
|---|---|
| Python 3.12 | メイン開発言語 |
| librosa | 音声読み込み・BPM推定・スペクトログラム生成 |
| matplotlib | 波形・スペクトログラムの描画 |
| Gradio | WebUIの構築 |
| Hugging Face Spaces | 無料ホスティング・公開 |
開発環境はWindows11 + WSL(Ubuntu)です。venvで仮想環境を作り、ローカルで動作確認してからHugging Face Spacesにgit pushで公開しました。
今後追加したい機能
現在のバージョンはBPM・波形・スペクトログラムの3機能ですが、今後は以下の機能も追加していく予定です。
- 音声の文字起こし(OpenAI Whisperを使用)
- 楽器・音色の自動分類(機械学習モデルを活用)
- 複数ファイルの一括解析
- 解析結果のCSVダウンロード
追加されたらまたこのブログでお知らせします。
おわりに
音声解析はPythonを使うと意外と手軽に始められます。librosaのドキュメントは充実していて、BPM推定なら数行のコードで実装できます。
「Pythonで何か作ってみたいけどネタがない」という方には、音声・画像・テキストの処理系ツールを作って公開するのがおすすめです。手を動かして公開まで持っていくことで、技術的な理解が一気に深まります。
audioforgeは引き続き機能追加していくので、ぜひブックマークしておいていただけると嬉しいです。フィードバックや「こんな機能がほしい」というリクエストがあればコメント欄からお気軽にどうぞ。
関連記事(今後公開予定)
- Pythonとlibrosaで音声解析を始める方法
- Gradioで自作ツールをWebアプリにする手順
- Hugging Face Spacesへのデプロイ完全ガイド
開発・運営:hitoiri-sekai


コメント