以下の内容はhttps://lipoyang.hatenablog.com/entry/2026/03/08/133946より取得しました。


AIスタックチャンのWakeWord.cppを解読 (2)

前回の続きです。

simplevox::VadEngine

デフォルトの設定は下記の通り

  • サンプルレート = 16000 Hz
  • フレーム時間 = 10 msec
  • フレーム長 = フレーム時間 × サンプルレート = 160 サンプル
  • VADモード = レベル0 (レベル0~4, 高いほど判定が厳しい)
  • hangbefore_ms = 100 msec (音声区間に含まれる音声検出前の時間)
  • decision_time_ms = 200 msec (音声あり判定がこれ以上続くと音声区間と判断)
  • hangover_ms = 200 msec (音声区間として含まれる音声終了後の時間)


simplevox::MfccEngine

デフォルトの設定は下記の通り

  • サンプルレート = 16000 Hz
  • フレーム時間 = 32 msec
  • フレーム長 = フレーム時間 × サンプルレート = 512 サンプル
  • ホップ長 = フレーム長さ / 2 = 256 サンプル
  • FFTデータ点数 = 512
  • メルフィルタバンクのチャンネル数 = 24
  • MFCC係数の数 = 12
  • プリエンファシス係数 = 97 % (高域成分強調)

esp_ns (ノイズ抑制)

  • ns_pro_create(フレーム時間[msec], レベル, サンプルレート[Hz]) → ハンドル
    • レベルは 0 ~ 2
  • ns_process(ハンドル, 入力データ, 出力データ)
  • ns_destroy(ハンドル)

esp_vad (音声アクティブ検出)

  • vad_create(レベル) → ハンドル
    • モード 0 ~ 4 (高いほど判定が厳しい)
  • vad_process(ハンドル, データ, サンプルレート[Hz], サンプル時間[msec] ) → 状態
    • 状態 : 沈黙 | 発話
  • vad_destroy(ハンドル)

esp_dsp

  • dsp_is_power_of_two( ) → bool : 2のn乗か否かをチェック
  • float型の基数4の複素FFT (4R FFT)
    • dsps_fft4r_init_fc32(バッファ, FFTデータ点数 / 2) : 初期化処理
    • dsps_fft4r_fc32(データ, FFTデータ点数 / 2) : 複素FFT演算
    • dsps_bit_rev4r_fc32(データ, データ点数) : バタフライ演算によるFFT結果の並べ直し
    • dsps_cplx2real_fc32(データ, データ点数) : 入力が実数列の場合のFFT結果の変換
    • dsps_fft4r_deinit_fc32() : 終了処理



以上の内容はhttps://lipoyang.hatenablog.com/entry/2026/03/08/133946より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14