Python 使用pyalsaaudio进行立体声录音

Python 使用pyalsaaudio进行立体声录音,python,audio,audio-recording,pcm,alsa,Python,Audio,Audio Recording,Pcm,Alsa,我正在尝试使用一对立体声耳机录制立体声,此立体声USB声卡: 还有我的笔记本电脑。我正在使用USB声卡,因为我最终想让它在我的树莓pi上工作。我正在使用pyalsaaudio和以下代码: import matplotlib import alsaaudio, wave, numpy inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NORMAL, 'plughw:CARD=Device') inp.setchannels(2)

我正在尝试使用一对立体声耳机录制立体声,此立体声USB声卡:

还有我的笔记本电脑。我正在使用USB声卡,因为我最终想让它在我的树莓pi上工作。我正在使用pyalsaaudio和以下代码:

import matplotlib
import alsaaudio, wave, numpy

inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NORMAL, 'plughw:CARD=Device')
inp.setchannels(2)
inp.setrate(44100)
inp.setformat(alsaaudio.PCM_FORMAT_S16_LE)
inp.setperiodsize(1024)


i = int(raw_input('How many samples of recording?'))
amplitude = []

while i > 0:
    l, data = inp.read()
    a = numpy.fromstring(data, dtype='int16')
    amplitude.extend(abs(a))
    i -= 1

print amplitude
我希望每个耳机都是一个单独的通道,即左耳机=通道1,右耳机=通道2,但到目前为止,我只得到了一个单声道录音(当我在jsut中发出声音时,我得到了一个耳机,例如(245321678672478456)作为结果数据,当我期望交错音频数据时,比如(245,21678,25567,12),即一个通道的小读数和另一个通道的大读数

arecord-L返回:

违约 通过PulseAudio声音服务器播放/录制

sysdefault:CARD=PCH HDA英特尔PCH,ALC270模拟 默认音频设备

前端:卡=PCH,开发=0 HDA英特尔PCH,ALC270模拟 前置扬声器

周边40:卡=PCH,开发=0 HDA英特尔PCH,ALC270模拟 4.0环绕声输出至前后扬声器

周边41:卡=PCH,开发=0 HDA英特尔PCH,ALC270模拟 4.1前、后和超低音扬声器的环绕声输出

周围50:卡=PCH,开发=0 HDA英特尔PCH,ALC270模拟 前、中、后扬声器的5.0环绕声输出

周围51:卡=PCH,开发=0 HDA英特尔PCH,ALC270模拟 5.1前、中、后和超低音扬声器的环绕声输出

周围71:卡=PCH,开发=0 HDA英特尔PCH,ALC270模拟 7.1前、中、侧、后和低音扬声器的环绕声输出

dmix:CARD=PCH,DEV=0 HDA英特尔PCH,ALC270模拟 直接混样装置

dsnoop:CARD=PCH,DEV=0 HDA英特尔PCH,ALC270模拟 直接样品窥探装置

硬件:卡=PCH,开发=0 HDA英特尔PCH,ALC270模拟 无需任何转换的直接硬件设备

plughw:CARD=PCH,DEV=0 HDA英特尔PCH,ALC270模拟 具有所有软件转换的硬件设备

sysdefault:CARD=设备 USB PnP声音设备,USB音频 默认音频设备

前端:卡=设备,开发=0 USB PnP声音设备,USB音频 前置扬声器

周边40:卡=设备,开发=0 USB PnP声音设备,USB音频 4.0环绕声输出至前后扬声器

surround41:卡=设备,开发=0 USB PnP声音设备,USB音频 4.1前、后和超低音扬声器的环绕声输出

surround50:卡=设备,开发=0 USB PnP声音设备,USB音频 前、中、后扬声器的5.0环绕声输出

surround51:卡=设备,开发=0 USB PnP声音设备,USB音频 5.1前、中、后和超低音扬声器的环绕声输出

surround71:卡=设备,开发=0 USB PnP声音设备,USB音频 7.1前、中、侧、后和低音扬声器的环绕声输出

iec958:卡=设备,开发=0 USB PnP声音设备,USB音频 IEC958(S/PDIF)数字音频输出

dmix:CARD=Device,DEV=0 USB PnP声音设备,USB音频 直接混样装置

dsnoop:卡=设备,开发=0 USB PnP声音设备,USB音频 直接样品窥探装置

硬件:卡=设备,开发=0 USB PnP声音设备,USB音频 无需任何转换的直接硬件设备

plughw:CARD=Device,DEV=0 USB PnP声音设备,USB音频 具有所有软件转换的硬件设备

不完全确定其中哪些是相关的

PCH是我笔记本电脑上的内置声卡,设备是USB声卡。我开始怀疑USB声卡是否能够进行立体声录制,因为当我运行alsamixer时,我无法单独调整麦克风的左右声道

在此基础上,我首先希望在我的笔记本电脑声卡上使用立体声录音,但我不确定如何指定使用插入笔记本电脑耳机/麦克风端口的耳机进行录音,而不是使用内置笔记本电脑麦克风-一般来说,我无法确定如何使用声卡上的特定设备进行录音


我不知道下一步该怎么做,因为我对alsa和pyalsaaudio还不熟悉。如果您能给我提供一些建议,我将不胜感激。

忘记
aplay
;尝试使用
arecord
。这台设备真的能够同时从两个麦克风录音吗?我没有提到aplay…我是什么试着从一对立体声耳机中录制立体声,然后我将分离频道。USB声卡说它可以录制立体声,但实际上它可能无法做到这一点。我的笔记本电脑声卡当然可以录制立体声,但我也没有任何运气…抱歉,我被de搞糊涂了副列表,因为大多数是仅播放设备。大多数声卡都有一个捕获设备,并使用混音器控件选择录制源。请注意,所有麦克风输入插孔都是单声道的,除非明确为立体声麦克风构造。