由於我目前正在構建基於Raspberry Pi的設備,用於測量從聲卡錄製的噪音(例如方差)中的某些內容,並嘗試在內部執行此操作蟒蛇,我搞不明白如何獲得audiosample作爲浮點數進一步計算。從pyaudio-stream獲取音頻採樣作爲浮點數
我做了什麼:
取了一條線對齊的適配器,並觸摸插頭以產生某種測試信號。
錄製到例如Audacity的或Matlab顯示似是而非的結果,如
我想:
在理想的,我想例如5幀從聲卡1024個樣本,並將它們轉換爲列表,元組或numpy數組作爲浮點數進行進一步計算。
當試圖用在這篇文章的末尾代碼蟒蛇/ pyaudio實現這一目標,我有這樣的事情:
由於這樣的事實,我與蟒蛇得到了價值觀似乎在Matlab(和其他)中與他們有大約兩倍的差異,我想我已經監督了一些事情或做了錯誤的事情。 我想我在struct.unpack區域的某個地方犯了一個錯誤,但無法弄清楚究竟在哪裏或爲什麼。 我想請你幫忙,指出錯誤在哪裏,我做錯了什麼。
用於獲取一些樣本,繪製他們小testcode:
import pyaudio
import struct
import matplotlib.pyplot as plt
FORMAT = pyaudio.paFloat32
SAMPLEFREQ = 44100
FRAMESIZE = 1024
NOFFRAMES = 220
p = pyaudio.PyAudio()
print('running')
stream = p.open(format=FORMAT,channels=1,rate=SAMPLEFREQ,input=True,frames_per_buffer=FRAMESIZE)
data = stream.read(NOFFRAMES*FRAMESIZE)
decoded = struct.unpack(str(NOFFRAMES*FRAMESIZE)+'f',data)
stream.stop_stream()
stream.close()
p.terminate()
print('done')
plt.plot(decoded)
plt.show()
因爲我認爲有人在這裏發佈答案時有某種郵件通知,所以我讀了一會兒遲到。但確實,numpy.fromstring做了詭計!非常感謝你 –
我改變了這段代碼,只是打印出數組。任何想法如何將這些值轉換爲頻率? –