首页 > 解决方案 > 使用 Python 从不同的 PC 声卡通道获取信号

问题描述

我想知道如何使用 Python 从不同通道的 PC 声卡获取信号。在一个通道中,我想得到一个像正弦波这样的简单信号,而在另一个通道中,我想得到一个方波。

我知道我可以使用 pyaudio 来获取信号

FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024

p = pyaudio.PyAudio()
stream = p.open(
    format=FORMAT, 
    channels=CHANNELS, 
    rate=RATE, input=True,
    frames_per_buffer=CHUNK) #I get one signal

但是使用这种方法,我一次只能获得一个信号(流),并且我需要同时获得两个信号(两个“流”)。

标签: pythonaudiosoundcard

解决方案


</嘿>

看起来您唯一的问题是您只指定了一个频道!

FORMAT = pyaudio.paInt16
CHANNELS = 1 # Change this to 2 !!!
RATE = 44100
CHUNK = 1024

p = pyaudio.PyAudio()
stream = p.open(
    format=FORMAT, 
    channels=CHANNELS, 
    rate=RATE, input=True,
    frames_per_buffer=CHUNK) #I get one signal

只需将指定通道的行更改为:

CHANNELS = 2

然后您将收到 2 个音频通道 :-)

如果您的音频接口有足够的输入,您可以增加此数字以一次录制更多通道。

编辑1:

这将让您读取 2 个传入音频流,例如:

frames = []

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)
print "finished recording"

然后您的data(2 个数组,您的 2 个通道输入)将存储在frames数组中。

如需完整的 2 通道示例,请参阅此处的 git 托管 Python 代码。


推荐阅读