代码之家  ›  专栏  ›  技术社区  ›  pseudoabdul

在.WAV文件中计算“开始时间”

  •  0
  • pseudoabdul  · 技术社区  · 7 年前

    我现在正在写一个测距程序(想想声纳)。所以我发出一个声音脉冲,测量它需要多长时间才能回来。目前,我只是打开声音文件,手动测量上升时间。为了清晰起见,我链接了一个图像。

    waveform

    1 回复  |  直到 7 年前
        1
  •  1
  •   TDG    7 年前

    你可以通过将文件读入字节数组,提取一些关于它的信息,然后搜索所需的样本来实现,在你的例子中,我相信这是第一个高于某个阈值的样本。
    第一阶段很简单,就像这样 question .
    wav 文件的结构。从这里可以看出- wav file header
    它包含有关 (在您的情况下,看起来只有一个频道), 采样率 和数量 每个样本的位数
    知道这些参数后,您可以开始读取音频数据-如果每个样本8位,那么每个样本是一个字节。如果是16,则必须读取2个字节,并计算样本的值,因为它是以小端格式编写的。
    当您发现样本号X是您要查找的样本号时,将该数字除以采样率,您将得到自文件启动以来样本的准确时间。
    图像取自 here