🎵

ノードエディタ形式のオーディオ処理ツール「Audio-Processing-Node-Editor」

に公開

はじめに

ノードエディタ形式のオーディオ処理ツール「Audio-Processing-Node-Editor」を作りました。
音声波形やスペクトログラムなどの処理結果を可視化しながら動作確認を行い、
処理の検証や比較検討の用途で利用することを想定しています。

https://github.com/Kazuhito00/Audio-Processing-Node-Editor

画像処理ツール「Image-Processing-Node-Editor」をベースに開発した弟分にあたるツールです。

https://qiita.com/Kazuhito/items/03741785301f5f47caa2
https://github.com/Kazuhito00/Image-Processing-Node-Editor

「Audio-Processing-Node-Editor」とは

以下のように、ノードを接続し処理結果を可視化しながら、オーディオ処理が行えるツールです。

※上記デモは音声を再生しながらノードを配置していますが、再生中での接続組み換えに向かないノードもあるため、ノードを配置後「再生」ボタンを押すことを推奨しています

Audio-Processing-Node-Editorには、以下のような特徴があります。

  • 主要な処理は全てPython ※ライブラリ部分除く
  • 各処理を可視化しながらオーディオ処理が試せる
  • 自作ノードの追加が容易 (だと信じている)
    ※Claude CodeやGemini CLI、Codexなどに頼れば比較的簡単に追加できます
    ※実装ノードの半分くらいは、Claude CodeやGemini CLIを用いて作成しています
  • OSS (Apache 2.0ライセンス)

開発動機

Image-Processing-Node-Editor も同じ動機ですが、
一つ一つの処理を確認しながら試行錯誤することが、画像処理やオーディオ処理で大事だと思っているからです。
あと、ノードエディタ的なツールが好きだから🦔

Image-Processing-Node-Editor を作成した時は、画像処理をメインにお仕事していたのですが、
最近はマイク入力など音声系の処理も触る機会がちょいちょいあり、オーディオ版を作りました。

インストール方法、使い方、実装ノード

インストール方法、使い方、ノード一覧などは、GitHubのREADMEに詳細を記載しています。


ざっくりとだけ使い方を書くと、以下のノードを配置して「再生」ボタンを押す。という感じです。
⓪ 「再生」「一時停止」「停止」操作用のコントロール用のノードを配置する
① マイクやオーディオファイル、動画ファイルなどの入力用ノードを配置する
② 解析系ノードを配置する ※必須ではないです
③ スピーカーやWav保存などの出力系ノードを配置する ※必須ではないです
例で使用している音声認識ノードはGoogleクレデンシャルの設定が必須のため、ご注意ください。

処理概要

細かい処理などは省いていますが、
ノードエディタとノード動作をザックリ書くと以下のような感じです。
Image-Processing-Node-Editor ではノード間で受け渡すデータは画像でしたが、
Audio-Processing-Node-Editor ではオーディオチャンク(1024ポイントなど)です。

動作例

簡易的なスペクトログラムやVAD結果を見ながらWav録音

古典的なノイズゲートと音声強調(GTCRN)での音声認識(Vosk)比較

ノイズを付加した状態での音声認識(Google)確認

まとめ

ノードエディタ形式でオーディオ処理を可視化・検証できるツール「Audio-Processing-Node-Editor」を紹介しました。
画像処理版の「Image-Processing-Node-Editor」と同様、
「処理結果を目で見ながら試行錯誤する」ことを重視して開発しました。
Python製で拡張しやすい(と思っている)ため、音声処理の実験やアルゴリズムの比較検討など、
興味を持たれた方は、GitHubリポジトリを覗いてみてください

Discussion