计算 .WAV 文件中的 "time to start"

Calculating "time to start" in .WAV files

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

我想知道是否有任何 .NET 库可以执行此类操作。我已经看过 NAudio 但没有发现任何有用的东西。

看来我可能必须手动执行此操作,在这种情况下,我如何最好地将 WAV 转换为一系列原始值(例如图像上的每个点)?如果我能做到,我可以编写自己的算法。

您可以通过将文件读入字节数组,提取有关它的一些信息,然后搜索所需的样本来完成此操作,在您的情况下,我认为这是高于某个阈值的第一个样本。
第一阶段很简单,就像这个 question.
对于第二阶段,您必须了解一些 wav 文件的结构。从这里可以看出 -
它包含有关 通道数 的信息(在您的情况下,您似乎只有一个通道)、 采样率 每个样本的位数.
了解这些参数后,您就可以开始读取音频的数据了——如果它是每个样本 8 位,那么每个样本就是一个字节。如果是 16,则必须读取 2 个字节,并计算样本的值,因为它是以小端格式编写的。
当您发现样本编号 X 是您要查找的样本时,将该数字除以采样率,您将得到自文件开始以来样本的确切时间。
图片取自 here.