2017-07-27 81 views
0

我此刻写测距仪节目“时间启动”(认为声纳)。所以我发出了一个声音的脉冲,并测量回来需要多长时间。目前,我只是打开声音文件并手动测量升起的时间。为了清晰起见,我链接了一张图片。计算.WAV文件

waveform

如果有任何.NET库做这样的事情我不知道。我已经看过NAudio,但没有发现任何有用的东西。

它看起来像我可能要手动做到这一点,在这种情况下,我怎么走最好约WAV转换成一系列的原始值(如图像上的各点)?如果我能做到这一点,我可以写我自己的算法。

回答

1

你可以把文件读入一个字节数组,提取有关它的一些信息,然后寻找所需的样品,而你的情况,我相信这是高于某个阈值的第一个样品做。
第一阶段很简单,就像这个question一样。
为第二阶段,你必须知道一点wav文件的结构。正如在这里可以看到 - wav file header
它包含了通道数的信息(在你的情况下,它看起来像你只有一个通道),采样率和每个样本比特数。
知道这些参数后,就可以开始读出声音的数据 - 如果它是每个样本8位,那么每个样本是一个字节。如果它是16,那么你必须读取2个字节,并计算样本的值,因为它是用小尾数格式写的。
当你发现样本数X就是你要找的人,通过采样率除以这个数字,你会得到,因为该文件的起始样品的确切时间。
该图像来自于here