Javaでwavファイルを読みたいので、K-meansで分類します。
Javaでwavファイルを読み取り、それらを配列またはそのようなもの(アイデアを提案できます)に割り当てて分類するにはどうすればよいですか?
EDIT: wavファイルの読み取りとK-meansにAPIを使用したい。
公式 Javaサウンドプログラマガイド ウォークスルー 読み取り および 書き込み オーディオファイル。
A Greenstedによるこの記事: JavaでのWavファイルの読み取りと書き込み 役立つはずです。 WavFileクラスは非常に便利であり、バッファリングされたフラグメントの代わりにデータ配列全体を返すように調整できます。
JavaxサウンドライブラリとFileInputStreamを使用してサウンドファイルを読み取り( ここで素敵な例を見つけました )、マルチプルシーケンスアラインメントを使用してウェーブファイルをビット(0,1)またはバイトのベクトルとして扱うことができます( Wiki )ビット/バイトのすべてのストリーム間に距離行列を作成し、そこからクラスタリングを簡単に行う必要があります。
問題は、この方法はノイズなどに非常に敏感であるということですが、一見の価値があります...
これが誰かを助けるかどうかわからない。 Java JDKはすでに AudioSystem クラスを提供しています。
生成されたWAVプロパティをチェックするためのテストの一部としてこれを使用しました。
AudioFileFormat audioFileFormat = AudioSystem.getAudioFileFormat(new File(response.get()));
assertEquals(1, audioFileFormat.getFormat().getChannels());
assertEquals(8000.0, audioFileFormat.getFormat().getSampleRate(), 0.0f);
assertEquals(8, audioFileFormat.getFormat().getSampleSizeInBits());