如何选择使用哪个设备录制(Python PyAudio)

Posted

技术标签:

【中文标题】如何选择使用哪个设备录制(Python PyAudio)【英文标题】:How to select which device to record with (Python PyAudio) 【发布时间】:2020-02-27 16:36:45 【问题描述】:

我正在尝试使用 Python 中的 PyAudio 库进行录制时选择要使用的设备,但我不知道该怎么做。我在网上找到了这段代码,它显示了所有可用的输入设备:

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))

这可行,但是如何从该列表中选择要使用的设备?我似乎无法在网上找到任何关于选择要使用的设备的信息,所以如果有人可以帮助我,那就太好了,谢谢。

【问题讨论】:

这不是在评论here 中解释的吗,大概是你得到代码的地方? 哦,好的,谢谢,我没看到 这能回答你的问题吗? How to select a specific input device with PyAudio 【参考方案1】:

列出设备后(按照问题代码中显示的方式打印它们),您可以选择要使用的设备索引。

即它可能会打印出来

('Input Device id ', 2, ' - ', u'USB Sound Device: Audio (hw:1,0)')
('Input Device id ', 3, ' - ', u'sysdefault')
('Input Device id ', 11, ' - ', u'spdif')
('Input Device id ', 12, ' - ', u'default')

然后要从该特定设备开始录制,您需要打开 PyAudio 流:

# Open stream with the index of the chosen device you selected from your initial code
stream = p.open(format=p.get_format_from_width(width=2),
                channels=1,
                output=True,
                rate=OUTPUT_SAMPLE_RATE,
                input_device_index=INDEX_OF_CHOSEN_INPUT_DEVICE, # This is where you specify which input device to use
                stream_callback=callback)

# Start processing and do whatever else...
stream.start_stream()

有关流选项的更多信息,请查看PyAudio's official documentation 上指定的配置。

如果您需要更多脚本方面的帮助,我建议您查看使用 PyAudio 进行非阻塞音频的简单示例,available on their documentation.

【讨论】:

以上是关于如何选择使用哪个设备录制(Python PyAudio)的主要内容,如果未能解决你的问题,请参考以下文章

python语音录制声音和保存wav文件的库文件是啥

Python 调用pyaudio库录制以及播放wav音频文件

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

电脑屏幕录制软件哪个好 如何使用

在 C++ (Windows) 中选择录制设备

如何快速录制屏幕视频?