0

現在、String1 と 0 を含む があります。Java を使用して、できれば .WAV 形式で、この文字列からオーディオ ファイルを作成したいと考えています。どうすればいいですか?.WAV を作成するためにバイトを書き込む API はありますか? チュートリアル/ブログはありますか?

前もって感謝します !乾杯 !

4

2 に答える 2

1

これは Java サード パーティの Sound API であり、役立つが多数含まれています。Sun Java API については、こちらを参照してください。

JavaサウンドAPIに関するスタックの質問です。

于 2011-08-09T10:46:38.850 に答える
1

あなたの最善の策は、TargetDataLineインターフェイスを見ることだと思います。文字列を byte[] 配列に変換できると思います。このバイト配列は生のオーディオ データと同等のものとして扱うことができますが、それが何か面白いものに聞こえるかどうかはわかりません。.wav 形式では、文字のサイズに応じて、16 ビット エンコーディング (サンプルあたり 2 バイト) または 8 ビットも選択できます。

しかし、1 秒あたり 44100 サンプルが最も一般的なレートの 1 つであることを考えると、各サンプルが文字の場合、非常に短い時間で大量のテキストが必要になることを指摘しておきます。

TargetDataLine の「キー」関数は、この配列へのインデックスであり、このインデックスを read() メソッドとして使用する read() メソッドが繰り返し呼び出されます。read() メソッドは、呼び出しごとに最大でバッファのバイト数を返す必要があります。

同様に実装する必要があるメソッドの 1 つは、getFormat() です。シンプルな「テルミン」シンセサイザーで次のコードを使用して、テーブル フロートからバイトを出力します (音波の 1 回の反復に対して約 1000 フロートの「ウェーブ テーブル」を使用)。ステレオ、16 ビット、44100 fps、リトル エンディアンの .wav 形式を SourceDataLine に変換して再生します。

@Override
public AudioFormat getFormat() 
{
    AudioFormat af = new AudioFormat(
        AudioFormat.Encoding.PCM_SIGNED, 
        44100, 16, 2, 4, 44100, false);
    return af;
}

詳細については、Java チュートリアルを参照してください。特に、オーディオのキャプチャチュートリアルの「TargetDataLine の設定」と「TargetDataLine からの読み取り」のセクションを参照してください。

また、サウンド データの性質が説明されているサウンド チュートリアルの最初の部分も、時間をかける価値があるでしょう。

于 2011-08-20T04:11:10.730 に答える