音频样本平均基频的计算

baa*_*.sb 1 python audio signal-processing frequency frequency-analysis

我正在开发一个项目,通过获取用户的实时音频输入来预测用户的性别。在研究这个项目时,我遇到了 kaggle 的数据集https://www.kaggle.com/primaryobjects/voicegender,提出了 CART 逻辑,其中

if meanfun<0.14:
        if IQR>=0.07:
              return male

        else 
              return female
else 
        return female
Run Code Online (Sandbox Code Playgroud)

我试图搜索平均基频但找不到任何有用的资源。请解释这个概念,平均频率和平均基频有什么区别?以及如何计算它的价值。

cec*_*how 6

我将尝试解释这个概念......

\n\n

一般来说,信号可以通过正弦波之和来定义。您可能知道,也可能不知道,正弦波可以用公式 Asin(\xcf\x89t+\xcf\x86) 进行数学定义,其中 A 是振幅,\xcf\x89 是角频率,t 是时间, \xcf\x86 是相移。\xcf\x89 可以进一步替换为 2\xcf\x80f,其中 f 是以 Hz 为单位的频率(您链接的文档中使用的单位)。当他们在这种情况下提到频率时,您可以将其视为原始/原始信号的正弦波分量。

\n\n

维基百科页面以及许多其他资源中描述了正弦波的定义,请参见此处

\n\n

您正在查看的音频信号是复杂信号,可能涉及许多正弦波。基频是指检测到的最低频率(维基百科此处)。我认为平均基频是信号中检测到的所有频率的平均值。

\n\n

查找频率的最常见方法是使用快速傅立叶变换 ( FFT ) - 这会将信号从时域更改为频域,并且您基本上可以分解构成原始信号的所有正弦波分量。或者,你可以使用峰值检测 - 频率本质上是在一段时间内发生某事的次数,因此您可以从字面上计算 1 分钟内发生的峰值数量(例如),以获得以 Hz 为单位的频率值。不过,我绝对不推荐将其用于语音音频信号。

\n\n

为了让您了解频率值在音频频谱中的位置,我们将中间的音符 C 与其上面的 A 进行比较。中间 C 为 261.626 Hz,A 为 440.000 Hz(来源)。正如您所看到的,较高的音符具有较高的频率。

\n\n

该项目的逻辑是,女性声音的频率高于男性声音(这有点不足为奇)。它还说,仅基于 IQR > 0.07,较低频率的女性声音在其他频率分量范围内比男性声音(?)更紧密地结合 - 这很有趣。

\n\n

希望这可以帮助。

\n