2012-05-05 6 views
1

私はwavファイルを持っています。私が必要とするのは、顕著な音の強さが再生されたときに機能を実行することだけです。時間に対して私のWAVファイルのサウンド振幅を取得するには?

たとえば、音量レベル10(想定されている)が再生されているので、音の強度レベルが10から増加すると、それが欲しいときは、イベントがトリガーされて、 。

私はwavファイルのバイトを読み込み、データチャンク(44バイト目以降)を読み取ると、ユーザーデータ(サウンドデータ)を取得することがわかりました。しかし、私はこのデータを分析するとき、音がないところで同じデータがあるので混乱しました。

私の質問がはっきりしていることを願っています。 私はあなたの提案/アイデアや参考書が必要です。

答えて

3

これにはFFTは必要ありません。短期間のRMSパワーを計算するだけで、これが所定のスレッショルドを超えると "大きな音"となります。 xはサンプル値であり、NはあなたがRMSパワーを計算したい、その上のサンプル数である

power_RMS = sqrt(sum(x^2)/N) 

- 私はの期間を使用することをお勧めしは、44.1 kHzのサンプルでN = 441個のサンプルを与える10ミリ秒を言いますレート。

+0

このラインを詳しく説明してください。「44.1kHzのサンプリングレートで10ms = 441サンプルの期間を使用することをお勧めします。 – azeem

+0

シンプル - 波形のN個のサンプルブロックごとにpower_RMSを計算するだけです。私は441kHzのサンプルレートを持っている場合はN = 441を使用することを提案しましたが、特定のアプリケーションに応じてブロックサイズを試してみてください。 –

+0

私はこれを試してみましょう。 – azeem

関連する問題