製作メモ:Spresenseでマイクの音圧検出

サンプルスケッチ SoundDetector について

  • File → Examples → Examples for Spresense → Signal Processing → SoundDetector
  • マイクで入力されている音声データをFFTライブラリでリアルタイム周波数解析を行い、指定した周波数範囲内に一定以上の音圧のある音声が入力されたかどうかを検出する。

動作確認

(1) ハードウェア


(2) SubCoreの書き込み
  • File → Examples → Examples for Spresense → Signal Processing → SoundDetector→ SubFFT
  • Tools → Core → SubCore1 を選択
  • ボードへの書き込みを実行
(3) MainCoreの書き込み
  • File → Examples → Examples for Spresense → Signal Processing → SoundDetector→ MainAudio
  • Tools → Core → MainCore を選択
  • ボードへの書き込みを実行
(4) 実行
  • Tools → Serial Monitor を開く
  • マイクから入力された各チャネルの音声を周波数解析し、指定した周波数範囲内に一定以上の音圧が入力された場合、 Found channel 0 等のように表示される

メモ

  • 入力音声のチャンネル数は MainAudio.ino の mic_channel_num で指定
    (SubFFT.ino の MAX_CHANNEL_NUM も一致させる)
  • 検出器のパラメータは、SubFFT.ino で下記のように指定する
#define POWER_THRESHOLD       30  // 音声検出のパワーの閾値
#define LENGTH_THRESHOLD      30  // 30ms以上連続で閾値を超えたとき検出
#define INTERVAL_THRESHOLD    100 // 100ms以上の間隔があれば別の音として検出
#define BOTTOM_SAMPLING_RATE  1000 // 検出周波数範囲の下限 1kHz
#define TOP_SAMPLING_RATE     1500 // 検出周波数範囲の上限 1.5kHz