• 締切済み

DSPでトーン検出

現在、DSP(デジタルシグナルプロセッサ)の勉強もかねて、DSPICを使いいろいろな実験をしています。 フィルタなどのサンプルは、いろいろなページで紹介されていました。 しかし、今回は特定の周波数のトーン(単音または2音)が鳴っているかを検出したいです。 バンドパスフィルタを使って、その結果の波形の高さを見れば出来そうですが、周波数の精度を上げたい場合にうまく動作してくれません。 たとえば、1kHz±5Hzと1.1kHz±5Hzといった具合での検出は無理なのでしょうか? 信号があるかどうかわかれば良く、100ms程度の時間がかかっても問題ありません。 どのように実現するか、ご存じの方や良いサイト等ありましたら是非とも教えていただけないでしょうか?

みんなの回答

  • MOMON12345
  • ベストアンサー率32% (1125/3490)
回答No.1

【フィルタ方式】 タップ数の多いFIRかQの高いIIRを使えばフィルタ方式でも実現可能だと思います。 【周波数比較方式】 また1.05KHzの発振器を構成して、その発振器と入力周波数を比較する(周波数弁別機)事でも実現できます。 【FFT方式】 入力波形をそのままFFTにかければ、直接的に周波数弁別が出来ます。

hipon046
質問者

お礼

ご回答ありがとうございます。用語ばかりですが自分なりに調べてみました。 フィルタ方式なら実現出来そうなことは確かですね。 特定の周波数のみ通す様なフィルタがあれば良いのですが・・・。 いろいろ探してみた結果、範囲を指定したバンドパスのサンプルしか見つけることが出来ず、理想のものでは無かったです。 共振器といった物が理想な特性でしたが、フィルタの作り方がわかりませんでした。 周波数比較方式は全然知りませんでした。周波数弁別機で調べたところアナログ回路の説明がほとんどでした。おそらく比較との事ですが、その他の音も混じった場合、単純に比較することができるのでしょうか? FFT方式はよく見かける物ですが、分解能をあげる場合、ものすごく膨大の処理になってしまいます。特定の周波数のみ変換する事が出来れば実現できそうです。仕組みを理解していないところが問題ですが。 せっかくご回答頂いたのですが、理解不足もあり意味のわかっていない部分もあると思います。いろいろと調べてみようと思います。指摘やさらなるアドバイス等ありましたら教えて頂けると助かります。

関連するQ&A