【问题标题】:How to retrieve frame number and frame size from wav file如何从 wav 文件中检索帧号和帧大小
【发布时间】:2012-01-18 11:41:36
【问题描述】:

我目前正在做一篇关于使用 EPCP 以 wav 文件作为输入的和弦识别的论文,但现在我一直在确定单个 wav 文件的帧数和帧大小。我需要这些数据作为 NAudio 库中 hammingwindow 函数的参数

public static double HammingWindow(int n, int frameSize)

我已检索到所有可用的 wav 标头,但我不知道如何获取帧数和帧大小。 我可以根据给定的标题数据计算它吗?还是有别的办法?

【问题讨论】:

  • wav 文件中没有帧或帧大小之类的东西。您是在谈论样本、比特率等吗?
  • 好吧,我可能误解了这一点。我是信号处理的新手。我有采样率、比特率、频道等,因为它们都包含在 wav 标头中。如果 wav 中不存在帧数据,我可以将 wav 文件拆分为帧吗?
  • 正如我已经说过的,wave 中没有“框架”这样的东西。这个概念根本不为人所知。帧存在于视频中,但不存在于音频中。当你说“框架”时,你在说什么?
  • 实际上我需要“帧”,因为在我用作参考的某人的日记中说,“首先,检测信号的峰值阈值并在给定的间隔时间内对每一帧进行采样。之后,一个加窗用于平滑每一帧中的峰值信号”。这就是为什么我需要知道以 wav 获取帧。我只需要拆分它吗?
  • 我对信号处理知之甚少,无法肯定地回答这个问题,但听起来好像你可以简单地拆分它,是的。您需要尝试一下,看看它是否会产生预期的结果 - 或者希望对信号处理有更多了解的人偶然发现您的问题......

标签: c# audio sound-recognition hamming-window


【解决方案1】:

如果您知道什么是汉明窗,就不会问这样的问题。 维基百科的文章告诉你一切。

我本人并不是 DSP 方面的专家,但我已经在业余时间使用了几个月。 我能告诉你的就是,这是一个绝对复杂的领域! 在一周左右的时间内你无法掌握任何东西。 学生在高中的几个学期接受这一领域的教育。 作为旁注。

所以,关于你的问题:

您选择一个块大小,这通常是由您的音频硬件预先确定的。 这总是以 2 为基数,所以 128、256 .... 典型的是 1024。 这是你的帧大小。

使用 WAV 文件时,您可以根据需要选择帧大小。 它应该满足上述标准。

在这种情况下,窗口是一条“曲线”,它从时间 0 开始并具有某个值,并在 frameSize-1 处结束并具有某个值。

你的函数的参数“n”是这个窗口中的位置。 该函数返回一个介于 0 和 1 之间的值,表示“n”处的值。

【讨论】:

    【解决方案2】:

    NAudio 有一个 WPF 演示,其中 SampleAggregator.cs 使用 HammingWindow 函数。您是否检查了该示例并了解它的使用方式?

    【讨论】:

      【解决方案3】:

      我没有使用 HammingWindow。根据this 的框架是 就像一个样本,但对于多通道格式“特定数据点的所有通道的快照”。

      如果这确实是您想要的,您可以使用类似标题中的this 来获取样本大小

      【讨论】:

        猜你喜欢
        • 2019-06-07
        • 1970-01-01
        • 1970-01-01
        • 2015-10-22
        • 1970-01-01
        • 2012-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多