1

オーディオファイルの操作中に問題が発生しました。オーディオファイルを処理するアルゴリズムを実装しています。このアルゴリズムでは、入力が5KHzのモノラルオーディオファイルである必要があります。

私が持っているオーディオファイルのほとんどはPCM44.1KHz 16ビットステレオです。私の問題は、44.1KHzステレオファイルを5KHzモノラルファイルに変換する方法です。

アイデアの背後にあるDSPの基本やJAVAライブラリを説明するチュートリアルを誰かが提供してくれれば幸いです。

4

3 に答える 3

2

Prasad が既に述べたことを補強するために、結果のエイリアシングを防ぐために、ダウンサンプリングの前に 2.5 kHz で信号をローパス フィルター処理する必要があります。元の信号に 4 kHz のトーンが含まれている場合、5 kHz のサンプル レートでは表現できない可能性があり、2.5 kHz のナイキスト制限を越えて折り返され、1.5 kHz で偽の (「エイリアスされた」) トーンが作成されます。 .

関連参照: Java を使用してローパス フィルターを実装する方法

また、44100 から 5000 Hz にダウンサンプリングする場合は、元の 8.82 サンプルごとに 1 つ保存します。良い整数除算ではありません。これは、元の信号から非整数値をサンプリングするため、ある種の補間も使用する必要があることを意味します。

于 2011-08-24T08:26:33.653 に答える
1

私が通常扱っているステレオPCMでは、pcmバイトアレイの16ビット値は特定のステレオチャネルに対応するデータポイントであり、これはインターリーブと呼ばれます。したがって、最初にステレオチャネル内の1つおきの値を取得して、モノラルPCMバイトアレイを抽出します。

周波数のダウンサンプリングに関しては、44100 Hzのオーディオファイルを5000Hzのオーディオファイルのように再生すると、データが多すぎてサウンドが遅くなります。したがって、int(44100/5000)の増分でサンプルを取得して、5kHzの信号にダウンサンプリングします。

于 2011-08-22T06:43:16.233 に答える
1

Java Sound API (javax.sound.*) には、サウンドを操作するための便利な関数が多数含まれています。

http://download.oracle.com/javase/tutorial/sound/index.html

オーディオ ファイルを簡単にダウンサンプリングするために、既に実装されている Java コードをここで見つけることができます

于 2011-08-20T21:27:03.607 に答える