質問
こちらは何をしたいと思い:
たいすることができ私がプログラム一部サウンドデータによるマイク入力)を開催してでは250ミリ秒、その出力で、スピーカーです。
そして、この使用のJava Sound APIに含まれています。問題は、この新お疲遅くなります。でに要するお時間は最短約1-2秒時からの音の時間にな音が聞こえて再度スピーカーから、なんともた実施の遅延の論理だ。理論的にはありませんの遅延があります。していると理解しているが、これについてのサウンドカードの入力バッファ内にあり、サンプルサイズのサンプリングレートしています。
私の質問は、この:だけのJava pathい。用していただきたいと思い、遅延下のように100msが可能です。は誰でも経験のASIOドライバJava?はずの時間が短く..
としても活動している.純男。この意味います。純ょうか?うC++?私の技術はこちらをご利用は、その国がどのように読み取り/書き込むオーディオ入力/出力ストリームをご提案技術プラットフォーム.おります。
解決
私は過去にJavaSoundを使用し、それが見事にフレーク状(と、それはVMのリリース間で変更し続ける)ことがわかりました。あなたは、C#のが好きで、それを使用している場合は、単にDirectXのAPIを使用しています。ここでは、DirectSoundのとC#を使用して何をしたいのかの種類を行うための一例です。あなたは250ミリ秒でエコーを実行するエフェクトプラグインを使用することができます。
<のhref = "http://blogs.microsoft.co.il/blogs/tamir/archive/2008/12/25/capturing-and-streaming-sound-by-using-directsound-with-c。 ASPX」のrel = "nofollowをnoreferrer"> http://blogs.microsoft.co.il/blogs/tamir/archive/2008/12/25/capturing-and-streaming-sound-by-using-directsound-with-c .aspxのの
他のヒント
あなたは JACK に、低遅延音声処理用に設計されたオーディオAPIに見てみたいことがあります。また、Googleは、JavaでJACKの使用について[PDF] のこの気の利いたプレゼンテーションをターンアップます。
理論的には遅延があってはならないが、そこにある。
まあ、それはゼロ遅延を持つことは不可能です。あなたが望むことができる最高のは、(人間の知覚の観点で)目立たない遅延です。それは、人々が発生する可能性がある問題を識別できるようにあなたは、サウンドデータの読み込み&書き込みのためのあなたの基本的なアルゴリズムを記述する場合に役立つかもしれない。
Javaなどのガベージコレクションの言語を使用しての潜在的な問題は、GCは、定期的に時間のいくつかの任意の量のためのあなたの処理を中断し、実行することです。それは通常の使用で> 100ミリ秒だ場合しかし、私は驚かれることと思います。 GCに問題がある場合は、ほとんどのJVMは、あなたが試すことができ、代替コレクション・アルゴリズムを提供します。
あなたはC / C ++道を行くことを選択した場合、私は非常にPortAudioの使用をお勧めします( http://portaudio.com/ を)。これは、複数のプラットフォーム上のほとんどすべてで動作し、それが実際に周りにある様々なサウンドドライバ技術に対処することなく、あなたのサウンドドライバの低レベルの制御を提供します。
私は複数のプロジェクトでPortAudioを使用しました、そして、使用する本当の喜びです。そして、ライセンスは許容されます。
ば低レイテンシーは、このなんと言っC.
libsoundio 低レベルのCライブラリのリアルタイムオーディオ入力および出力に出力します。でも プログラムの例 そのせいただけたらと思ってい-配管のマイク入力のスピーカー出力に出力します。
で確実に達成可能と JavaSound 取得によりend to endでの遅延のボールパーク、100 150ms.
の主要な原因である遅延は、バッファのサイズのみ再生します。このサイズに設定時に回線:
- 捕獲
TargetDataLine#open(AudioFormat format, int bufferSize)
- 再生:
SourceDataLine#open(AudioFormat format, int bufferSize)
- 捕獲
の場合バッファにも大きな影響を与えてしまうことにもなり超過の遅延があまりにも小さな影響を与えてしまうことにもなりstuttery ート再生はキャンセルされます。いすべてのバランス用アプリケーションのニーズに、あるいはお客様のコンピュータます。
デフォルトのバッファサイズで確認できます DataLine#getBufferSize
通話の場合 #open(AudioFormat format)
.デフォルトのサイズによって異なりますの AudioFormat
とそうなバークシャーで注目の高レ吃音無料の再生などへの応用インターネットストリーミング).だ開発低レイテンシー用途では、デフォルトのバッファサイズではあまりにも大きます。
私の試験は16ビットPCM AudioFormat
, バッファのサイズ1024バイトをしていかに最適な低レイテンシー
- 第二に、しばしば見逃されがオーディオの待ち時間はその他の活動の取り込みまたは再生す。例えば、ログメッセージをコンソールできる10代のmsの待ち時間をゼロにすることにOffにします。