簡體   English   中英

將麥克風數據轉換為頻譜

[英]Converting microphone data to frequency spectrum

我正在嘗試創建一個頻譜圖程序(在python中),該程序將實時分析和顯示來自麥克風輸入的頻譜。 我正在使用模板程序從此處錄制音頻: http : //people.csail.mit.edu/hubert/pyaudio/#examples (錄音示例)

該模板程序運行良好,但是我不確定從data = stream.read(CHUNK)行返回的data = stream.read(CHUNK) 我已經對該程序中使用的.wav格式進行了一些研究,但是我找不到真正的數據字節本身的含義,僅是.wav文件中元數據的定義。

我了解該程序使用16位樣本,並且“塊”存儲在python字符串中。 我希望有人可以幫助我准確地理解每個樣本中的數據代表什么。 即使只是指向此信息源的鏈接也將有所幫助。 我嘗試使用谷歌搜索,但我認為我對術語的了解不夠准確。

stream.read為您提供二進制數據。 要獲取十進制音頻樣本,可以使用numpy.fromstring將其轉換為numpy數組,或者使用Python的內置struct.unpack

例:

import pyaudio
import numpy
import struct

CHUNK = 128

p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=44100, input=True, frames_per_buffer=CHUNK)

data = stream.read(CHUNK)
print numpy.fromstring(data, numpy.int16) # use external numpy module
print struct.unpack('h'*CHUNK, data) # use built-in struct module

stream.stop_stream()
stream.close()
p.terminate()

暫無
暫無

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

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