NAudio播放IEEEFloat格式

时间:2014-10-24 12:10:19

标签: c# .net audio microphone naudio

输入源是通过国家乐器连接的麦克风。传入信号格式为(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毫秒点击一次(针刺)。麦克风不能听到声音或任何其他声音。这有什么不对吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

此代码非常完美。我的错。我的输入不正确。