NAudio声音通过麦克风

本文关键字:麦克风 声音 NAudio | 更新日期: 2023-09-27 17:59:10

我的应用程序使用麦克风在机器之间通话。当两个人说话时,我遇到了一个问题,声音总是发出"嘶嘶"的声音。需要帮助,请

  {
        waveOutDevice = new DirectSoundOut();
        wavFormat = new WaveFormat(sampleRates, numberChannels);
        // Create two buffers to represent left & right output
        waveProvider[0] = new BufferedWaveProvider(wavFormat);
        waveProvider[1] = new BufferedWaveProvider(wavFormat);
        waveProvider[0].BufferDuration = new TimeSpan(0, 0, 0, 0, 100);
        waveProvider[1].BufferDuration = new TimeSpan(0, 0, 0, 0, 100);
        waveProvider[0].DiscardOnBufferOverflow = true;
        waveProvider[1].DiscardOnBufferOverflow = true;

        IEnumerable<IWaveProvider> providers = from w in waveProvider select w;

        // channels of a stereo setup. 
        outputWaveProvider = new MultiplexingWaveProvider(providers,2);
        outputWaveProvider.ConnectInputToOutput(0, 0);
        outputWaveProvider.ConnectInputToOutput(1, 1);
        waveOutDevice.Init(outputWaveProvider);
        waveOutDevice.Play();
        waveInStream = new WaveIn();
        waveInStream.WaveFormat = wavFormat;
        waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
        waveInStream.StartRecording();
        waveInStream.RecordingStopped += new EventHandler<StoppedEventArgs>(this.OnRecordingStopped);
   }
    void waveInStream_DataAvailable(object sender, WaveInEventArgs e)
    {
        writer.WriteData(e.Buffer, 0, e.BytesRecorded);
        writer.Flush();
    }
    public void OnRecordingStopped(object sender, StoppedEventArgs e)
    {
        if (this.writer != null)
        {
            waveInStream.StopRecording();
            writer.Close();
            writer = null;
        }
    }

如果我尝试给出高BufferDuration,那么噪声几乎为零,但滞后增加。请帮助

NAudio声音通过麦克风

缓冲区持续时间不应影响延迟,应保持较高的值。通过更改输出设备的延迟来减少延迟。