specgramを使用して、録音されたオーディオ (マイク経由) と処理されたオーディオ (WAV ファイル) の両方を、Python で同じ離散化表現に確実に変換したいと考えています。
私のプロセスは次のとおりです。
- 生のサンプルを取得する (ファイルから読み取るか、マイクからストリームする)
- いくつかの正規化を実行します (???)
- スペクトログラムを生成するためにウィンドウ処理を使用して FFT を実行します (振幅ピークを使用して周波数対時間をプロットします)。
- 音声のピークを離散化して記憶する
基本的に、最後の離散化プロセスに到達するまでに、同じ曲の周波数/時間/振幅空間で可能な限り確実に同じ値になりたいと考えています。
私の問題は、録音されたオーディオと WAV で読み取ったオーディオで異なるボリューム (つまり、サンプルの振幅) をどのように説明するかということです。
正規化のための私のオプション (多分?):
- FFT の前にウィンドウ内のすべてのサンプルを平均で割る
- FFTの前にウィンドウ内のすべてのサンプルをトレンド除去
- FFT の前に、ウィンドウ内のすべてのサンプルを最大振幅サンプル値 (ノイズと外れ値に敏感) で除算します。
- スペクトログラムのすべての振幅を平均で割ります
この問題にどのように取り組むべきですか?信号処理の知識や経験はほとんどありません。