我能找到的所有例子都是mono,带有CHANNELS = 1
。如何使用PyAudio中的回调方法读取立体声或多声道输入,并将其转换为2D NumPy数组或多个1D数组?
对于单声道输入,类似这样的操作:
def callback(in_data, frame_count, time_info, status):
global result
global result_waiting
if in_data:
result = np.fromstring(in_data, dtype=np.float32)
result_waiting = True
else:
print('no input')
return None, pyaudio.paContinue
stream = p.open(format=pyaudio.paFloat32,
channels=1,
rate=fs,
output=False,
input=True,
frames_per_buffer=fs,
stream_callback=callback)
但是对于立体声输入不起作用,result
数组的长度是它的两倍,所以我假设通道是交错的或其他的,但是我找不到相关的文档。
它似乎是一个样本一个样本的交织,左通道优先。左声道输入信号,右声道静音,我得到:
因此,要将其分离为立体声流,请将其重塑为二维数组:
现在要访问左声道,请使用
result[:, 0]
,对于右声道,请使用result[:, 1]
。相关问题 更多 >
编程相关推荐