0

大量の wav ファイルのコレクションを小さなセグメントに分割し、それらを 16 khz、16 ビットのモノ wav ファイルに変換する必要があります。wav ファイルを分割するために、WavFile ClassWavFileというサイトからクラスをダウンロードしました。任意の数のフレームをスキップできるように少し調整しました。そのクラスを使用して、ソース wav ファイルを読み取り、時間 x と時間 y の間のフレームを新しい wav ファイルにコピーするクラスを作成しました。提供された XML ファイルから取得できる開始時間と終了時間、および を使用してフレームを取得できます。私の問題は、サンプル レートを 44,100 から 16,000 に変換する方法がわからないことです。WavSegmentersample rate * time

現在、これについて Java の Sound API を調べています。ガイドが長いので、最初は調べませんでしたが、それが最善の既存のオプションである場合は、進んで検討します。とはいえ、他に方法があれば教えていただきたいです。WavFile最後に、Java の Sound API を完全に適応させ、現在使用しているクラスを削除する必要があるかどうかを知りたいです。私には、それは健全に見えますが、確認したいだけです。

お時間を割いていただき、誠にありがとうございました。

4

2 に答える 2

1

あなたのタスクの最も難しい部分は、1秒あたり44.1Kから16Kサンプルへのリサンプリングだと思います。そこから22Kまたは11Kにダウンサンプリングする方がはるかに簡単でした。そこで補間を行う必要があります。

編集: OPとのさらなるレビューと議論の後、この状況の正しい選択は、さまざまなサンプリングレートを含むさまざまなサウンドファイル形式間の変換方法を提供するJavaSoundAPIを使用することだと思います。WavFile APIを使い続けるには、44.1Kから16Kへの変換の場合に実装するのが非常に複雑なリサンプリングが必要になります。

于 2011-07-19T15:25:08.937 に答える
1

http://www.jsresources.org/examples/SampleRateConverter.html。私はこれがあなたを助けると思います...

于 2011-07-28T06:07:23.093 に答える