ArduinoとFFTで楽曲認識ができるのか #2

Arduinoを用いた音声認識を行おうと思いついてプロトタイプをここ数か月製作しています。やはり肝はFFTかな(と思っていた時も僕にはありました)。

※この記事は今やっているプロジェクトと少し時間差で更新するつもりなので現在進行形でやっていることとは少し違っています

音声認識ということでやはりFFT!Arduinoを使って音声をサンプリングして解析結果をもとに音声、もとい楽曲の認識ができないかと考えました。(ちなみに入力はマイクです)

正直なところ、FFTは授業で齧ったくらいで信号解析においては全くと言っていいほどの素人…頑張らないと…!

FFTで楽曲認識を行う際に決め手になる(と思う)ポイントを挙げて、これをもとに問題を解決していきます。

  1. Arduinoのクロック周波数でそもそも再現性のある解析は可能なのか?
  2. マイクの微弱な信号をArduinoは検知できるのか?
  3. 環境音などのノイズにどのように対応するのか?
  4. FFTがうまく行われたとしてどのような手法で解析を行うか?

これらの問題についてしばらく考えることになりそうです。

ちなみに1番についてはArduinoのクロック周波数が16MHzということを考えると…どうなんだろ…

まぁ、楽曲が44100Hzでサンプリングされていると考えるといけなくもないのかな?

まぁ、実際のところフーリエ変換というただでさえ超絶重い処理をArduinoというマイコンにさせると考えるだけでArduino側のサンプリングレートがだいぶ下がりそうだな~と思っています。

それだけではなく、Arduinoの言語は自分のような見習いプログラマにとっては非常に扱いやすいのですが、Arduinoの言語をアセンブラにするという処理そのものがArduinoの処理に負担をかけます。(これはクロック周波数が通常のPCより低いマイコン特有の問題っぽいですが)

普段はあまり気にしないですがFFTなんぞするときは結構シビアな問題になるんじゃないだろうかと思われます。

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to top