获取Python中的音频输入设备列表

时间:2015-09-29 07:35:43

标签: python-2.7 audio device

如何使用python以hw:0,1获取linux中的音频输入设备列表?

我使用pyaudio尝试了以下内容:

def getaudiodevices():
        p = pyaudio.PyAudio()
        print p.get_default_input_device_info()
        for i in range(p.get_device_count()):
                print ''#p.get_device_info_by_index(i)

我也可以使用“arecord -l”进行检索,但我需要得到它 HW:0,1 HW:0,2

我需要这种格式。你有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:3)

如果PaDeviceInfo结构存储的名称已足够,那么您可以从get_device_info_by_index()返回的字典中访问“名称”,然后将信息切片到最后:

import pyaudio

def getaudiodevices():
    p = pyaudio.PyAudio()
    for i in range(p.get_device_count()):
        print p.get_device_info_by_index(i).get('name')

给了我

HDA Intel HDMI: 0 (hw:0,3)
HDA Intel HDMI: 1 (hw:0,7)
HDA Intel HDMI: 2 (hw:0,8)
HDA Intel PCH: CS4208 Analog (hw:1,0)
HDA Intel PCH: CS4208 Digital (hw:1,1)
hdmi
default

但是这并没有给你你想要的默认设备,名称似乎存储为“默认”。在这种情况下,在Python中执行“arecord -l”可以正常工作,如果这是您正在寻找的。当然,您可以对“aplay -l”执行相同的操作。

import os

def getaudiodevices():
    devices = os.popen("arecord -l")
    device_string = devices.read()
    device_string = device_string.split("\n")
    for line in device_string:
            if(line.find("card") != -1):
                print "hw:" + line[line.find("card")+5] + "," +\
 line[line.find("device")+7]

输出

hw:1,0