DSP——获取所有频率的幅度

2024-03-19

这个问题与:DSP:音频处理:squart还是log来利用fft? https://stackoverflow.com/questions/20057831/dsp-audio-processing-squart-or-log-to-leverage-fft

我不知道该选择正确的算法。

Now,

Goal :

我想获取从音频文件中获得的信号的所有频率。

Context:

我使用 numpy 和 scikits.audiolab。我阅读了大量关于 dsp 主题的文章,还访问了 dspguru.com,通过网络阅读了论文和不错的博客。

我使用的代码是这样的:

import numpy as np
from scikits.audiolab import Sndfile


f = Sndfile('first.ogg', 'r')

# Sndfile instances can be queried for the audio file meta-data
fs = f.samplerate
nc = f.channels
enc = f.encoding

print(fs,nc,enc)
# Reading is straightfoward
data = f.read_frames(10)
print(data)
print(np.fft.rfft(data))

我是 DSP 新手。

我的问题

我希望能够分离信号的所有频率来比较不同的信号。 我在声音数组上使用 numpy.fft.rfft ;但现在,仅靠这个操作是不够的。那么,正确获取所有频率幅度的最佳解决方案是什么?

我看到将结果值相乘可以得到复数并将整体转换为实数。

现在该怎么办?是这样吗?

如果您需要我澄清任何事情,尽管问。

多谢 !


  • 您说“我想获取从音频文件中获取的信号的所有频率。”但你真正想要的是频率的大小。

  • 在你的代码中,看起来(我不懂 python)你只读取了前 10 个样本。假设您的文件是单声道的,那没问题,但您可能想查看更大的样本集,例如 1024 个样本。当然,一旦完成此操作,您将需要对下一组 N 个样本进行重复。您可能想也可能不想重叠样本集,并且您可能想应用窗口函数,但您在这里所做的只是一个好的开始。

  • 瞌睡虫说的是真的。 fft 的输出很复杂。要找到给定频率的大小,您需要找到复数的长度或绝对值,即 sqrt( r^2 + i^2 )。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DSP——获取所有频率的幅度 的相关文章

随机推荐