Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用PyAudio选择特定的输入设备_Python_Linux_Audio_Pyaudio - Fatal编程技术网

Python 如何使用PyAudio选择特定的输入设备

Python 如何使用PyAudio选择特定的输入设备,python,linux,audio,pyaudio,Python,Linux,Audio,Pyaudio,通过PyAudio录制音频时,如何指定要使用的确切输入设备 我的电脑有两个麦克风,一个内置,一个通过USB,我想用USB麦克风录音。有一个用于选择设备的input\u device\u索引,但不清楚该索引与设备之间的关系。例如,我如何知道索引0引用了哪个设备?如果让我猜的话,我会说0是指内置设备,而1是指USB设备,但我想找到一些编程方法来确认这一点。在Linux上,有没有办法获取这些索引及其所指设备的列表?我不知道PyAudio,但在模块中它是这样的: python3 -m sounddevi

通过PyAudio录制音频时,如何指定要使用的确切输入设备


我的电脑有两个麦克风,一个内置,一个通过USB,我想用USB麦克风录音。有一个用于选择设备的
input\u device\u索引
,但不清楚该索引与设备之间的关系。例如,我如何知道索引0引用了哪个设备?如果让我猜的话,我会说0是指内置设备,而1是指USB设备,但我想找到一些编程方法来确认这一点。在Linux上,有没有办法获取这些索引及其所指设备的列表?

我不知道PyAudio,但在模块中它是这样的:

python3 -m sounddevice

我没有看过
pyaudio
,但我也很少使用它

下面是一个示例代码,列出了可用的
输入
输出
音频设备

import sounddevice as sd
print sd.query_devices() 
从下面的输出可以看出,当我将耳机放在麦克风插孔上时,
索引1
可用作输入。
1插孔话筒(IDT高清A,MME(2英寸,0英寸)

而默认的笔记本电脑音频麦克风显示为
索引2

2个麦克风阵列(IDT高清晰度,MME(2进0出)

输出

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
   0 Microsoft Sound Mapper - Input, MME (2 in, 0 out)
>  1 Jack Mic (IDT High Definition A, MME (2 in, 0 out)
   2 Microphone Array (IDT High Defi, MME (2 in, 0 out)
   3 Microsoft Sound Mapper - Output, MME (0 in, 2 out)
<  4 Speakers / Headphones (IDT High, MME (0 in, 2 out)
   5 Communication Headphones (IDT H, MME (0 in, 2 out)
   6 Primary Sound Capture Driver, Windows DirectSound (2 in, 0 out)
   7 Jack Mic (IDT High Definition Audio CODEC), Windows DirectSound (2 in, 0 out)
   8 Microphone Array (IDT High Definition Audio CODEC), Windows DirectSound (2 in, 0 out)
   9 Primary Sound Driver, Windows DirectSound (0 in, 2 out)
  10 Speakers / Headphones (IDT High Definition Audio CODEC), Windows DirectSound (0 in, 2 out)
  11 Communication Headphones (IDT High Definition Audio CODEC), Windows DirectSound (0 in, 2 out)
  12 Communication Headphones (IDT High Definition Audio CODEC), Windows WASAPI (0 in, 2 out)
  13 Speakers / Headphones (IDT High Definition Audio CODEC), Windows WASAPI (0 in, 2 out)
  14 Jack Mic (IDT High Definition Audio CODEC), Windows WASAPI (2 in, 0 out)
  15 Microphone Array (IDT High Definition Audio CODEC), Windows WASAPI (2 in, 0 out)
  16 Headset Microphone (Bluetooth Hands-free Audio), Windows WDM-KS (1 in, 0 out)
  17 Headphones (Bluetooth Hands-free Audio), Windows WDM-KS (0 in, 2 out)
  18 Headphones (HpOut), Windows WDM-KS (0 in, 2 out)
  19 Microphone Array (MicIn2), Windows WDM-KS (2 in, 0 out)
  20 Jack Mic (MuxedIn), Windows WDM-KS (2 in, 0 out)
  21 Dock Mic (MuxedIn), Windows WDM-KS (2 in, 0 out)
  22 Rec. Playback (MuxedIn), Windows WDM-KS (2 in, 0 out)
  23 Speakers (Speaker/HP), Windows WDM-KS (0 in, 2 out)
win32上的Python 2.7.9(默认,2014年12月10日12:24:55)[MSC v.1500 32位(英特尔)] 有关详细信息,请键入“copyright”、“credits”或“license()”。 >>>=================================================重新启动================================ >>> 0 Microsoft声音映射器-输入,MME(2英寸,0英寸) >1个插孔话筒(IDT高清A,MME(2英寸,0英寸) 2个麦克风阵列(IDT高清晰度,MME(2英寸,0英寸) 3 Microsoft声音映射器-输出,MME(0英寸,2英寸) <4个扬声器/耳机(IDT高,MME(0英寸,2英寸) 5个通讯耳机(IDT H,MME(0英寸,2英寸) 6主声音捕获驱动程序,Windows DirectSound(2进0出) 7插孔话筒(IDT高清音频编解码器),Windows DirectSound(2进0出) 8麦克风阵列(IDT高清音频编解码器),Windows DirectSound(2进0出) 9主声音驱动程序,Windows DirectSound(0英寸,2英寸) 10个扬声器/耳机(IDT高清音频编解码器),Windows DirectSound(0英寸,2英寸) 11个通讯耳机(IDT高清音频编解码器),Windows DirectSound(0英寸,2英寸) 12个通信耳机(IDT高清音频编解码器),Windows WASAPI(0英寸,2英寸) 13个扬声器/耳机(IDT高清音频编解码器),Windows WASAPI(0英寸,2英寸) 14插孔话筒(IDT高清音频编解码器),Windows WASAPI(2进0出) 15麦克风阵列(IDT高清音频编解码器),Windows WASAPI(2进0出) 16头戴式麦克风(蓝牙免提音频),Windows WDM-KS(1进0出) 17个耳机(蓝牙免提音频),Windows WDM-KS(0英寸,2英寸) 18个耳机(HpOut),Windows WDM-KS(0英寸,2英寸) 19麦克风阵列(MicIn2),Windows WDM-KS(2英寸,0英寸) 20插孔话筒(MuxedIn),Windows WDM-KS(2英寸,0英寸) 21坞式话筒(MuxedIn),Windows WDM-KS(2英寸,0英寸) 22录制播放(MuxedIn),Windows WDM-KS(2英寸,0英寸) 23个扬声器(扬声器/HP),Windows WDM-KS(0英寸,2英寸) 您可以使用: 通过主机api设备索引获取设备信息。 例如:

import pyaudio
p = pyaudio.PyAudio()
info = p.get_host_api_info_by_index(0)
numdevices = info.get('deviceCount')
for i in range(0, numdevices):
        if (p.get_device_info_by_host_api_device_index(0, i).get('maxInputChannels')) > 0:
            print "Input Device id ", i, " - ", p.get_device_info_by_host_api_device_index(0, i).get('name')

只需使用
arecord-l
列出所有可用的输入设备。

在it状态下,您可以定义
输入设备索引


要了解该设备索引是什么,您可以遵循本文中提供的代码,也可以遵循提供输出代码示例的上找到的代码。

此代码对我来说失败。还需要添加:info=p.get\u host\u api\u info\u by\u index(0),然后numdevices=info.get('deviceCount'))。另外,我需要使用p而不是self.p,然后它就工作了。请修正你的答案,我会投票表决。谢谢。@WaynePiekarski完成。谢谢!然后你如何将列出的设备之一指定为pyaudio设备?以及如何选择输入设备?通过主机获取设备信息?api设备索引仅获取我的信息<代码>输入设备索引=x是解决方案。