NAudio 播放 IEEEFloat 格式

Posted

技术标签:

【中文标题】NAudio 播放 IEEEFloat 格式【英文标题】:NAudio play IEEEFloat format 【发布时间】: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 毫秒的某种咔哒声(针刺声)。麦克风听不到任何声音或任何其他声音。这里有什么问题?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于NAudio 播放 IEEEFloat 格式的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 从内存流中播放 .wma

如何使用 NAudio 播放双数组(包括波浪)[关闭]

使用 NAudio 转换为 WAV 后使用 SoundPlayer 播放 MP3

NAudio - 从 Stream 播放 MIDI

Naudio,如何判断播放完成

使用 naudio 播放 .wav 文件,播放在 1 秒后停止