オーディオを再生する必要がある Java で記述されたアプリケーションがあります。タスクには OpenAL (java-openal ライブラリを使用) を使用しましたが、OpenAL で直接サポートされていない WSOLA を使用したいと考えています。WSOLA をサポートする TarsosDSP という Java ネイティブ ライブラリを見つけました。
ライブラリは、オーディオ出力に標準の Java API を使用します。この問題は、SourceDataLine のセットアップ中に発生します。
IllegalArgumentException: No line matching interface SourceDataLine supporting format PCM_UNSIGNED 16000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian is supported.
問題の原因がアクセス許可の不足ではないことを確認し (Linux でルートとして実行し、Windows 10 で試しました)、プロジェクトで使用されている他の SourceDataLines がないことを確認しました。
フォーマットをいじった後、PCM_UNSIGNED から PCM_SIGNED に変更されたときにフォーマットが受け入れられることがわかりました。バイト範囲形式を unsigned から signed に移動するだけでかなり簡単なはずなので、これは小さな問題のように思えます。ただし、ネイティブでサポートされていないのは奇妙です。
では、ソース データを変更する必要のない解決策はありますか?
ありがとう、ジャン