サンプルスケッチ SoundDetector について
- File → Examples → Examples for Spresense → Signal Processing → SoundDetector
- マイクで入力されている音声データをFFTライブラリでリアルタイム周波数解析を行い、指定した周波数範囲内に一定以上の音圧のある音声が入力されたかどうかを検出する。
動作確認
(1) ハードウェア
- Spresense メイン&拡張ボード にマイクを接続
- コンデンサマイクの場合、BIAS端子とMIC端子を2.2kΩでつなぐ
- 参考 → SPRESENSE用のアナログマイクを作ってみた!:息子と一緒に Makers:So-netブログ
- 参考 → SpresenseのPinout - 滴了庵日録
(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