こんにちは、wav オーディオ ファイルのサンプル レートを 44.1kHz から 8kHz にダウンサンプリングする必要があります。バイト配列を使用してすべての作業を手動で行う必要があります...これは学術目的のためです。
現在、Sink と Source の 2 つのクラスを使用して、バイト配列をポップおよびプッシュしています。線形補間を使用してデータ チャンクをダウンサンプリングする必要がある部分に到達するまで、すべてがうまくいきます。
44100 から 8000 Hz にダウンサンプリングしているため、128 000 000 バイトなどを含むバイト配列を補間するにはどうすればよいですか? 現在、i%2 == 0、i%2 == 1、および i%80 == 0 に応じて 5、6、または 7 バイトをポップし、これらの 5、6、または 7 バイトの平均を新しいファイルにプッシュしています。 .
結果は確かにオリジナルよりも小さいオーディオ ファイルですが、Windows Media Player で再生できず (ファイルの読み取り中にエラーが発生したと表示されます)、多くのノイズが含まれていますが、ノイズの背後に正しいトラックが聞こえます。
要約すると、線形補間部分に関する助けが必要です。前もって感謝します。