内容:
我正在发现DSP的广阔 Realm 。是的,我是初学者。
我的目标:
将fft应用到audiolab提供的音频阵列上,以获取信号的不同频率。
问题:
一个问题:感谢audiolab,我只是无法处理包含音频数据的numpy数组。 :

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.fft(data))
现在我有了我的数据。
读物
我在这里阅读了这两篇不错的文章:
Analyze audio using Fast Fourier Transform(可接受的答案很棒)

http://www.onlamp.com/pub/a/python/2001/01/31/numerically.html?page=2
现在有两种技术:显然其中一种建议使用正方形(第一个链接),而另一种建议使用对数,尤其是:10ln10(abs(1.10 **-20 + value))
哪一个最好?
总结 :
我想对我的阵列进行傅立叶分析,但是这两个答案中的任何一个似乎都只强调信号而不隔离组件。
我可能是错的,我还是菜鸟。
那我该怎么办呢?
谢谢,
更新:
我问这个问题:
与这个相关的DSP - get the amplitude of all the frequencies

最佳答案

您的问题似乎很困惑,但是您显然已经尝试了一些方法,这很棒。让我退后一步,为您建议一条总体路线:

  • 首先将音频分成一些大小的块,例如N.
  • 对N个样本的每个块执行FFT。
  • 然后担心将数据显示为RMS(平方方法)或dB(基于ln的方法)。

  • 确实,您可以将这些值视为显示的缩放比例。

    如果您需要FFT本身的帮助,我有关FFT音高检测的博客文章可能会有所帮助:http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html

    关于python - DSP:音频处理:squat或log要利用fft?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20057831/

    10-17 02:41