マイクから音声を入力して、それを周波数スペクトルを表示する様な
音声分析ソフトはVBで作れるでしょうか?
たぶん作れるよ。でもVB自体の機能では無理だから、DLLとかが必要になってくるとおもう。ネットでダウンロードとかするといいかもな。シェアウェアーが多いと思うけど ^^;
先ずマイク入力ですが、アナログ/デジタル変換が必要です、通常はPCIスロットに専用の
ボードを追加しA/Dコンバーターを乗せてWAVのデーターを作ります。
ボードを自作するにはかなり高度なハードウェアーの知識とドライバーの知識が
必要です。この辺にはVBが入り込む要素はありません。もちろんDLLを作ってVBでGUIの部分を作ることは可能です。A/Dボードはたくさん市販されています。
次に周波数分析ですが、通常はFFTと言う技術を使います。
これは ”「高速フーリエ・コサイン・サイン変換 Fast Fourier/Cosine/Sine Transform”の略ですが、このソフトを作成する為には高度な数学的な知識が必要です。
又名前が示すようにスピードが命ですのでVBには馴染まないでしょう。
VBから呼び出すことの出来るDLLがたくさん有ります。
最後に分析結果の表示ですが、これはVBでも可能であると思います。
結論的に言えば、マイクから取り込むGUIの部分をVBで、
周波数分析の設定表示の部分をVBでその他の部分はVBからDLLを呼び出す形で可能であると思います。
音声分析でも、最終的に何がしたいかによっては、いろいろな方法があります。
先の述べられているFFTや逆FFTと言う方法をとりあえずは理解しないこと
には、音をどうこうする・・・と言う部分はかなり難しいと思います。
時間とお金があるならば、他のソフトを利用することをオススメします。
私は『MATLAB』を使いました。高価なソフトですが、必要な関数や機能は
まず全て揃っています。
それと、FFT等はC言語で記述するのが好ましいですが、VBで組めないこと
もありません・・・かなりの苦労を要すると思います。
当時(15年前・・・)このプログラミングを行う為に使った書籍では、今は多分
入手不可能なので・・・
FFT (高速フーリエ・コサイン・サイン変換) の概略と設計法
http://momonga.t.u-tokyo.ac.jp/~ooura/fftman/
サッと検索して解りやすそうだったので、URL載せておきます。
周波数スペクトル分析で、ノイズ混入による異常周波数帯が検出されるはずです
ので、通常ならノイズ除去にFFTと逆FFTを使って、不必要な周波数を取り
除くことを行いますが、この過程で当然、周波数スペクトルを見ないといけない
ので・・・もし、大学等でMATLABを使っているようなところがありました
ら一度見られたらよいと思います。音声データ(WAVEファイル)を食わせて
そのWAVE波形を表示しつつ、リアルタイムに変化する周波数スペクトルも、
表示し、その変化を見ることが可能です。当然、フィルターもできて不必要な周
波数帯域を除去することもできますので・・・
昔MATLAB使った折はVBやエクセルとOLEで連継できたので、グラフ等
を表示させることもできました。
全て手でプログラミングして行うのは好ましいですが、初めてやられるのですか
らできれば、視覚表示可能なツールのひとつとしてお考え頂くのもよいかと思い
ます。
※ 私はMATLABの回し者ではありませんので、あしからず・・・
以上。
追伸・・・
VisualBASIC で使えるFFT等が掲載されているサイトを紹介しておきます。
ただし、英語です・・・
http://www.mathtools.net/
http://www.mathtools.net/Basic/index.html
http://www.mathtools.net/Basic/Numerical_Computation/index.html
以上。
皆さん、アドバイスありがとうございます。
とりあえず「パソコン音声処理(昭晃堂)」あたりを読んで勉強したいと思います。
ツイート | ![]() |