簡體   English   中英

PyAudio,如何在錄制時分辨頻率和幅度?

[英]PyAudio, how to tell frequency and amplitude while recording?

我已經使用了PyAudio默認錄制示例,並添加了numpy和scipy。 但是,我只能在錄制文件后使用scipy.io.wavefile.read('FILE.wav') ,它也會給我這個隨機元組,例如: (44100, array([[ 0, 0], [-2, 0], [ 0, -2], ..., [-2, -2], [ 1, 3], [ 2, -1]], dtype=int16)) 這個數組給了我什么,你知道如何獲得wav文件每幀的頻率/幅度,最好是在錄制時嗎?

數組不是隨機數據,而是立體聲的波數據,44100是采樣率。 使用以下代碼繪制左聲道的波形:

import scipy.io.wavfile as wavfile
import numpy as np
import pylab as pl
rate, data = wavfile.read('FILE.wav')
t = np.arange(len(data[:,0]))*1.0/rate
pl.plot(t, data[:,0])
pl.show()

要獲得波形的頻率和幅度,請執行FFT。 下面的代碼繪制每個頻率倉的功率:

p = 20*np.log10(np.abs(np.fft.rfft(data[:2048, 0])))
f = np.linspace(0, rate/2.0, len(p))
pl.plot(f, p)
pl.xlabel("Frequency(Hz)")
pl.ylabel("Power(dB)")
pl.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM