我现在正在写一个测距仪程序(想想声纳)。所以我发出了声音的脉搏,并测量了回来需要多长时间。目前,我只是简单地打开声音文件和手动测量上升的时间。为了清晰起见,我联系了一张图片。

我想知道是否有任何.NET库可以这样做。我已经看过NAudio了,但没有发现任何有用的东西。
看起来我可能需要手动完成这个操作,在这种情况下,如何最好地将WAV转换成一系列原始值(例如图像上的每个点)?如果我能做到这一点,我可以写我自己的算法。
发布于 2017-07-29 12:32:13
您可以通过将文件读取到字节数组中,提取有关它的一些信息,然后搜索所需的示例,在您的示例中,我相信这是高于某个阈值的第一个示例。
第一个阶段很简单,就像在这个问题中一样。
对于第二阶段,您必须了解一些wav文件的结构。从这里可以看到-

它包含关于通道数(在您的例子中它看起来只有一个通道)、采样率和每个样本的位数的信息。
在了解了这些参数之后,您可以开始读取音频的数据--如果每个样本是8位,那么每个示例都是一个字节。如果是16,则必须读取2个字节,并计算示例的值,因为它是用小endian格式编写的。
当你发现X是你想要的样本时,除以抽样率,你就会得到文件开始时样本的确切时间。
这张照片是从这里拍摄的。
https://stackoverflow.com/questions/45340890
复制相似问题