NAudio播放IEEEFloat格式

本文关键字:格式 IEEEFloat 播放 NAudio | 更新日期: 2023-09-27 18:27:52

输入源是通过国家仪器连接的麦克风。传入信号格式为(IEEEFloat,每秒51200个采样,100ms读取周期),表示为数组double[] samples。每100毫秒,就会有一个来自麦克风的双重信号[]。如何在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毫秒一次的咔嗒声。麦克风听不到任何声音或任何其他声音。这里怎么了?

NAudio播放IEEEFloat格式

这段代码非常有效。我的错误。我的输入不正确。

看起来您可能错过了从64位IEEE浮点到32位IEEE浮点的转换。。。除此之外,代码看起来是合理的。