输入源是通过国家乐器连接的麦克风。传入信号格式为(IEEEFloat,每秒51200个样本,读取周期为100ms),并表示为数组double[] samples。每100毫秒,就会有一个来自麦克风的传入信号以double []形式出现。如何在Windows计算机中使用默认声卡播放此信号。

public void Open()
{
   var _format = new WaveFormatChunk
                 {
                   SamplesPerSecond = Convert.ToUInt32(51200),
                   BitsPerSample = 32,
                   Channels = 1,
                   FormatEncoding = WaveFormatEncoding.IeeeFloat
                 };

   _waveOutDevice = new WaveOut
                    {
                      DesiredLatency = 100
                    };

   _waveProvider = new BufferedWaveProvider(_format.ToWaveFormat());

   _waveOutDevice.Init(WaveProvider);
}

public void Consume(double[] samples)
{
     var bytes = samples.ToBytes();

     _waveProvider.AddSamples(bytes, 0, bytes.Length);
}

public void Play()
{
     _waveOutDevice.Play();
}

每100毫秒只有一次听到的声音可能是某种喀哒声(插针刺穿)。麦克风没有声音或其他声音。这是怎么了

最佳答案

看起来您可能已经错过了从64位IEEE Float到32位IEEE Float的转换...除此之外,代码看起来很合理。

关于c# - NAudio播放IEEEFloat格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26547597/

10-09 05:39