如何在python中获取当前选择的音频设备?

问题描述 投票:0回答:1

我正在使用 python 来获取 Windows 中当前选择的音频设备。我现在使用 pyaudio 并开放使用其他库。

我所取得的成就:

使用 pyaudio 的

get_device_info_by_index
我可以列出所有音频设备。

使用pyaudio的

get_default_output_device_info
我可以获得默认的音频设备(在我看来这是PC中嵌入的内部音频设备)

我尝试过的:

如果我插入耳机或将电脑连接到某个蓝牙扬声器,我可以使用

get_device_info_by_index
获取新的插入设备。但
get_default_output_device_info
仍然给我默认的PC扬声器。

所以我需要一种方法来找出当前选择的扬声器。例如,我将耳机和蓝牙扬声器连接到电脑,因此我有 3 个输出扬声器。然后我可以使用 Windows 的控制面板来选择要使用的发言。

我需要一种方法来找出在 Python 中选择了哪个,是 pyaudio 还是任何其他库。

python windows audio pyaudio portaudio
1个回答
0
投票

如果使用 Windows(仅),请使用 pycaw

pip install pycaw

然后您可以过滤音频设备,检查是否活动/非活动/禁用...,如果其活动,那么这就是默认设备

import pycaw.pycaw as pycaw
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
from ctypes import cast, POINTER
from comtypes import CLSCTX_ALL
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume

devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = cast(interface, POINTER(IAudioEndpointVolume))
for device in devices:
    print(device.FriendlyName,device.id,device.state)

您还可以使用声音设备

pip install sounddevice
print(sd.query_devices())

我正在寻找一种更改默认音频设备的方法,如果您找到方法请评论🙏

© www.soinside.com 2019 - 2024. All rights reserved.