Skip to content

処理の検証や比較検討での用途を想定したノードエディターベースのオーディオ処理アプリ(A node editor-based audioprocessing application intended for use in processing verification and comparison studies)

License

Notifications You must be signed in to change notification settings

Kazuhito00/Audio-Processing-Node-Editor

Repository files navigation

[Japanese/English]

Audio-Processing-Node-Editor

ノードエディターベースのオーディオ処理アプリです。
処理の検証や比較検討での用途を想定しています。

Note

ノードは作成者(高橋)が必要になった順に追加しているため、
オーディオ処理における基本的な処理を担うノードが不足していることがあります。

Requirements

dearpygui            2.0.0     or later
onnx                 1.17.0    or later
onnxruntime          1.17.0    or later
opencv-python        4.11.0.86 or later
librosa              0.11.0    or later
sounddevice          0.5.1     or later
soundfile            0.13.1    or later
webrtcvad-wheels     2.0.14    or later
vosk                 0.3.45    or later ※Speech Recognition(Vosk)ノードを実行する場合
google-cloud-speech  2.32.0    or later ※Speech Recognition(Google Speech-to-Text)ノードを実行する場合

Video Fileノードを使用する場合は、FFmpeg をインストールしてください。

Installation

以下の何れかの方法で環境を準備してください。

  • スクリプトを直接実行
    1. リポジトリをクローン
      git clone https://github.com/Kazuhito00/Audio-Processing-Node-Editor
    2. パッケージをインストール
      pip install -r requirements.txt
    3. 「main.py」を実行
      python main.py
  • 実行ファイルを利用(Windowsのみ)
    1. apn-editor_win_x86_64.zipをダウンロード
    2. 「main.exe」を実行

Usage

アプリの起動方法は以下です。

python main.py
  • --setting
    ノードサイズやサンプリング周波数、Googleクレデンシャルパスの設定が記載された設定ファイルパスの指定
    デフォルト:node_editor/setting/setting.json

Create Node

メニューから作成したいノードを選びクリック

Connect Node

出力端子をドラッグして入力端子に接続
端子に設定された型同士のみ接続可能

Delete Node

削除したいノードを選択した状態で「Del」キー

Export

メニューから「Export」を押し、ノード設定(jsonファイル)を保存

Import

Exportで出力したノード設定(jsonファイル)を読み込む

Node

System Node
Audio Control Audio Fileノード、Micノード、Noiseノード、Write Wav Fileノード を制御するノード
Audio Controlノードはシステムで1つのみ生成可能
Input Node
Audio File オーディオファイル(wav, mp3, ogg, m4a)を読み込み、チャンクデータを出力するノード
「Select Audio File」ボタンでファイルダイアログをオープン
Mic マイク入力を読み込み、チャンクデータを出力するノード
ドロップダウンリストからマイクを選択
Video File 動画ファイル(mp4, avi, webm)を読み込み、チャンクデータを出力するノード
「Select Audio File」ボタンでファイルダイアログをオープン
出力されるチャンクデータは全トラックを合成したデータ
Noise ノイズを生成し、チャンクデータを出力するノード
ドロップダウンリストからノイズ種類(ホワイトノイズ、簡易ピンクノイズ、ヒスノイズ、ハムノイズ、パルスノイズ)を選択
Int Value 整数値を出力するノード
Float Value フロート値を出力するノード
Zero 値が0の波形を出力するノード
Output Node
Speaker チャンクデータを受け取り、スピーカー出力を行うノード
ドロップダウンリストからスピーカーを選択
Write Wav File チャンクデータを受け取り、Wavファイル保存を行うノード
出力先は「node_editor/setting/setting.json」の「output_directory」に設定
※デフォルトは「./_output」
Vol/Amp Node
Gain Control(Scale Amplitude) チャンクデータを受け取り、定数倍したチャンクデータを出力するノード
Dynamic Range Compression チャンクデータを受け取り、ダイナミックレンジ圧縮を行ったチャンクデータを出力するノード
Threshold:閾値
Ratio:閾値を越えた値をどの程度の割合で圧縮するか
Attack(ms):閾値を超えたとき、ゲインを下げる速さ(ミリ秒)
Release(ms):閾値以下に戻ったとき、ゲインを戻す速さ(ミリ秒)
Hard Limit チャンクデータを受け取り、振幅制限を行ったチャンクデータを出力するノード
Soft Limit(tanh) チャンクデータを受け取り、tanhを用いた緩やかな振幅制限を行ったチャンクデータを出力するノード
Expander チャンクデータを受け取り、ダイナミックレンジ拡張を行ったチャンクデータを出力するノード
Threshold:閾値
Ratio:閾値を下回った値をどの程度の割合で減衰するか
Attack(ms):閾値を超えたとき、ゲインを下げる速さ(ミリ秒)
Release(ms):閾値以下に戻ったとき、ゲインを戻す速さ(ミリ秒)
Hold(ms):閾値を下回ってもすぐに減衰しない猶予期間(ミリ秒)
Noise Gate チャンクデータを受け取り、ノイズゲート処理を行ったチャンクデータを出力するノード
Threshold:閾値
Attack(ms):閾値を超えたとき、ゲインを下げる速さ(ミリ秒)
Release(ms):閾値以下に戻ったとき、ゲインを戻す速さ(ミリ秒)
Hold(ms):閾値を下回ってもすぐに減衰しない猶予期間(ミリ秒)
FreqDomain Node
Bandpass Filter(Butterworth IIR) チャンクデータを受け取り、バンドパスフィルター(バターワース IIR型)を通したチャンクデータを出力するノード
High Cut Freq(Hz):上側遮断周波数(Hz)
Low Cut Freq(Hz):下限遮断周波数(Hz)
Filter Order:フィルター次数
Bandstop Filter(Butterworth IIR) チャンクデータを受け取り、バンドストップフィルター(バターワース IIR型)を通したチャンクデータを出力するノード
High Cut Freq(Hz):上側遮断周波数(Hz)
Low Cut Freq(Hz):下限遮断周波数(Hz)
Filter Order:フィルター次数
Highpass Filter(Butterworth IIR) チャンクデータを受け取り、ハイパスフィルター(バターワース IIR型)を通したチャンクデータを出力するノード
Low Cut Freq(Hz):下限遮断周波数(Hz)
Filter Order:フィルター次数
Lowpass Filter(Butterworth IIR) チャンクデータを受け取り、ローフィルター(バターワース IIR型)を通したチャンクデータを出力するノード
High Cut Freq(Hz):上側遮断周波数(Hz)
Filter Order:フィルター次数
Simple EQ(Butterworth IIR) チャンクデータを受け取り、対象領域のゲイン増幅・減衰を行ったチャンクデータを出力するノード
High Cut Freq(Hz):上側遮断周波数(Hz)
Low Cut Freq(Hz):下限遮断周波数(Hz)
Gain(dB):ゲイン(dB)
Power Spectrum チャンクデータを受け取り、簡易的なパワースペクトルを表示するノード
-80dB~40dBの表示範囲
Simple Spectrogram チャンクデータを受け取り、簡易的なスペクトログラムを表示するノード
シフトサイズや窓関数(ハミング窓かハニング窓)、平滑化数などは「node_editor/setting/setting.json」に設定
表示データの下端が0Hz、上端がナイキスト周波数
TimeDomain Node
Start Delay チャンクデータを受け取り、指定時間遅延したチャンクデータを出力するノード
※時間指定は、Audio Controlノードで「停止」中に行うこと
Simple Mixer チャンクデータ2つを受け取り、ミキシングしたチャンクデータを出力するノード
Voice Activity Detection(Silero VAD) チャンクデータを受け取り、Silero VADを用いた音声区間検出を行うノード
Voice Activity Detection(WebRTC VAD) チャンクデータを受け取り、WebRTC VADを用いた音声区間検出を行うノード
aggressive は VAD の感度指定で、0がデフォルト、3が最高感度です。
AudioEnhance Node
Speech Enhancement(GTCRN) チャンクデータを受け取り、GTCRNを用いた音声強調を行ったチャンクデータを出力するノード
Analysis Node
Speech Recognition(Google Speech-to-Text) チャンクデータを受け取り、Google Speech-to-Textを用いて文字書き起こしを行うノード
現在は「日本語」と「English」のみ対応。
このノードを使用する際は、「node_editor/setting/setting.json」の「google_application_credentials_json」にサービスアカウントキーを設定してください
Speech Recognition(Vosk) チャンクデータを受け取り、Voskを用いて文字書き起こしを行うノード
現在は「日本語」と「English」のみ対応。
Other Node
Switch チャンクデータ2つを受け取り、指定したチャンクデータを出力するノード
FPS 処理時間を計測するノード

Node(Another repository)

他リポジトリで公開しているノードです。
Audio-Processing-Node-Editor で使用するには、各リポジトリのインストール方法に従ってください。

Input Node
Mic(getUserMedia()) WebブラウザのgetUserMedia()経由で取得したマイク入力を扱うノード
ノードを生成するとブラウザが立ち上がります。
 「1. Prepare Microphone」を押下後、マイク使用を許可し、「Start Recording」を押下してください。
ReSpeaker v2 Mic ReSpeaker v2のマイク入力を扱うノード
ドロップダウンリストから、使用したいマイク入力を選択してください。
ReSpeaker v2 DOA ReSpeaker v2のDOA機能を扱うノード
ReSpeaker v2 Mic ReSpeaker v2のVAD機能を扱うノード

Author

高橋かずひと(https://twitter.com/KzhtTkhs)

License

Audio-Processing-Node-Editor is under Apache-2.0 license.

Audio-Processing-Node-Editorのソースコード自体はApache-2.0 licenseですが、
各アルゴリズムのソースコードは、それぞれのライセンスに従います。
詳細は各ディレクトリ同梱のLICENSEファイルをご確認ください。

About

処理の検証や比較検討での用途を想定したノードエディターベースのオーディオ処理アプリ(A node editor-based audioprocessing application intended for use in processing verification and comparison studies)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages