【问题标题】:sampling wav files in to get amplitude at a specific time采样 wav 文件以获取特定时间的幅度
【发布时间】:2013-01-27 03:26:04
【问题描述】:

我想知道是否有任何方法可以循环浏览 .wav 文件以获取 wav 文件中特定点的振幅/DB。我现在正在将它读入一个字节数组,但这对我来说没有任何帮助。

我将它与我开发的一些硬件结合使用,将光数据编码为二进制并输出音频。我不会详细介绍,但我需要能够在 c# 或 c++ 中执行此操作。我在任何地方都找不到有关此的任何信息。我从未编写过任何与音频相关的东西,所以如果这是一件非常简单的事情,请原谅。

我没有任何开始,因为这是起点,所以如果有人能指出一些函数、库或方法,以便能够在文件中的特定时间收集波的幅度,我将不胜感激它。

我希望这是足够的信息,如果您愿意提供帮助,请提前感谢您。

【问题讨论】:

    标签: audio wav sampling wave amplitude


    【解决方案1】:

    这是可能的,并且以简单的方式完成:PCM 音频文件包含每个通道的一个值,每 (1/采样率) 秒。

    但值可能会有所不同:8 位、16 位、单精度浮点值。您当然必须考虑到这一点,这就是您不能直接从字节数组中获取字节的原因。

    .WAV 文件在实际负载之前还有一个标头。

    【讨论】:

    • 你是说我可以通过字节数组但它必须转换为 8/16 位整数?我怎么知道哪个字节是哪个通道?我发现了一个代码示例,在单声道文件中,它跳过数组中的每个其他字节并转换为 16 位整数,它似乎工作并且数据现在可以识别。但它说要跳过所有其他值,这是为什么呢?感谢您的回复!我真的很感激这个答案。
    • 因为标头(和格式描述符)中的字节数可能会有所不同,通道数可能会有所不同,值的类型也会有所不同 - 您通常不会将 .WAV 文件作为字节数组读取并使用 API/图书馆代替。他们将各种类型转换为您想要的东西,例如具有标准化浮点值的单声道缩混。
    • Roman,你能不能再详细一点。我也期待在给定时间获得 amplitede 的 wav
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 2013-11-22
    相关资源
    最近更新 更多