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 格式的主要内容,如果未能解决你的问题,请参考以下文章