我正在尝试让librosa能够使用麦克风输入而不仅仅是wav文件,但遇到了一些问题。起初我使用pyaudio库连接到麦克风,但我在将这些数据转换为librosa可用的形式时遇到了问题。有什么建议吗?或者这是否可能实现?
我尝试了几件事情,包括接收来自pyaudio麦克风的数据,将其解码为浮点数组并将其传递给librosa(根据文档,这就是librosa处理.wav文件的方式),但它不起作用,因为它会产生以下错误:
"librosa.util.exceptions.ParameterError: Audio buffer is not finite everywhere"
FORMAT = pyaudio.paInt16
RATE = 44100
CHUNK = 2048
WIDTH = 2
CHANNELS = 2
RECORD_SECONDS = 5
stream = audio.open(format=FORMAT,
channels = CHANNELS,
rate = RATE,
input=True,
output=True,
frames_per_buffer=CHUNK)
while True:
data = stream.read(CHUNK)
data_float = np.fromstring(data , dtype=np.float16)
data_np = np.array(data_float , dtype='d')
# data in 1D array
mfcc = librosa.feature.mfcc(data_np.flatten() , 44100)
print(mfcc)