【问题标题】:Analyse wave stream分析波流
【发布时间】:2011-09-03 15:55:49
【问题描述】:

我一直在研究音频分析。我有一个 WAV 流读入内存,我需要对数据执行各种功能,例如 FFT。我一直在阅读这个理论,但我不确定我是否正确阅读它。读取流时,我输出了一堆数字,我猜这是采样数据(44100 hz)。我是否在这个流上执行所有功能?那么,对于 1024 个样本的窗口,我是否只需从流中获取前 1024 个数字?然后我是否要在这 1024 集上执行 FFT 和所有其他功能并在流的其余部分重复?

我开始理解它的理论,以及对样本求和的想法等......但我不确定这在实现方面意味着什么。

编辑-为了澄清我得到的流值,数字与-0.432,-0.065... 一致。

【问题讨论】:

    标签: audio implementation analysis fft wav


    【解决方案1】:

    这只是对您可以做什么的简要概述。有关详细信息,我建议您查看一些文献。

    在应用 FFT 之前,需要对音频信号进行预处理或加窗。 假设您要开窗(汉宁等), 窗口函数将应用于原始音频,并带有一些“重叠”以处理边缘效应。例如,您可以采用方便的窗口大小 1024。开窗后,您可以对每 1024 个(预处理)样本进行 FFT。

    我建议你使用 MATLAB。这将使您的任务变得简单。

    【讨论】:

    • 感谢您的帮助。那么我是否将窗口函数应用于我的帖子中提到的-0.432,-0.065... 值?即我从内存中读取流获得的值?所以是这样的:var arr = StreamArray.Take(1024).ToArray(); FFT(arr);,然后是下一个 1024 等等。
    • 是的,窗口函数应该应用于您从音频输入接收的原始音频,然后您可以进行 FFT。还必须有一些重叠,例如先取 n = 1 到 n = 1024 个样本,然后取 n = 1024-128 到 n = 1024-128+1024 的样本……像这样
    猜你喜欢
    • 2015-01-21
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2021-05-23
    • 2020-08-31
    相关资源
    最近更新 更多