2

私が作成したこの質問に基づいて: AsioOut を使用して NAudio で録音および再生する方法

このコードで:

[DllImport("Kernel32.dll", EntryPoint = "RtlMoveMemory", SetLastError = false)]
private static unsafe extern void MoveMemory(IntPtr dest, IntPtr src, int size);

private void OnAudioAvailable(object sender, AsioAudioAvailableEventArgs e)
{
     for (int i = 0; i < e.InputBuffers.Length; i++)
     {
          MoveMemory(e.OutputBuffers[i], e.InputBuffers[i], e.SamplesPerBuffer * e.InputBuffers.Length);
     }

     e.WrittenToOutputBuffers = true;
}

このようにすると、少し遅延と少しのエコーが感じられますが、それらを解決する方法がわかりません。

エコー ( AEC ) を除去できる Web 上のライブラリを検索しましたが、C# に役立つものは見つかりませんでした。誰かが私を助ける方法を知っていますか?

編集 1 : 私AsioOut.PlaybackLatencyは 2048ms です。ちょっと高すぎます..

EDIT 2 : ヘッドフォンで試してみたところ、エコーはマイクとスピーカーの間の近接によるものであることに気付きました。AEC があれば興味深いですが、問題ではありません。

問題解決:レイテンシーの問題を解決しました。これは ASIO ドライバーの問題でした。Cubase をアンインストールし、ASIO4ALL ドライバーをインストールしたところ、正常に動作するようになりました。 PS :の最後のパラメーターに*2を追加する必要がありましたMoveMemory。理由はわかりませんが、これがないと音が飛び散ります。

4

1 に答える 1