【问题标题】:NAudio play IEEEFloat formatNAudio 播放 IEEEFloat 格式
【发布时间】:2014-10-24 12:10:19
【问题描述】:

输入源是通过国家仪器连接的麦克风。输入信号格式为(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 毫秒的某种咔哒声(针刺声)。麦克风听不到任何声音或任何其他声音。这里有什么问题?

【问题讨论】:

    标签: c# .net audio microphone naudio


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      此代码完美运行。我的错。我的输入不正确。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多