如何繪製麥克風的matplotlib輸入信號? 我試圖繪製plt.plot(框架),但幀是由於某種原因的字符串?如何使用matplotlib繪製pyaudio輸入?
a)爲什麼幀變量是一個字符串列表?
b)爲什麼數據變量字符串列表?
c)他們應該代表單個樣本的能量/幅度並且是整數嗎?
d)爲什麼數據長度爲2048時,我指定我想要塊大小1024?
(我猜是因爲我使用paInt16,但不能見猶它爲什麼不能成爲1024)
我爲麥克風輸入以下代碼:
import pyaudio
import audioop
import matplotlib.pyplot as plt
import numpy as np
from itertools import izip
import wave
FORMAT = pyaudio.paInt16 # We use 16bit format per sample
CHANNELS = 1
RATE = 44100
CHUNK = 1024 # 1024bytes of data red from a buffer
RECORD_SECONDS = 3
WAVE_OUTPUT_FILENAME = "file.wav"
audio = pyaudio.PyAudio()
# start Recording
stream = audio.open(format=FORMAT,
channels=CHANNELS,
rate=RATE, input=True,
frames_per_buffer=CHUNK)
frames = []
for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
frames = ''.join(frames)
stream.stop_stream()
stream.close()
audio.terminate()
你能用你的示例代碼包含你的導入語句嗎?此外,frames變量是一個字符串列表,因爲您將其聲明爲'frames =''.join(frames)'。你不需要那樣做,因爲你已經附加了你需要的所有幀,你有一個列表。 – Anonymous
是的,我意識到這一點,但數據也是一個字符串。我認爲有一些需要完成的struct.unpack,但我不知道究竟是什麼。 –
但你問爲什麼'frames'是一個字符串列表?無論如何,Stream.read()被_suppossed_返回一個字符串,如API文檔中所指定的: https://people.csail.mit.edu/hubert/pyaudio/docs/ – Anonymous