You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取无截断的音频输入/输出设备完整名称及对应索引?

如何获取无截断的音频输入/输出设备名称及对应索引?

我用PyAudio获取可用音频输出设备列表时,设备名称被截断为31字符,示例代码及输出如下:

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_index(i).get('maxOutputChannels')) > 0:
        print("Output Device id ", i, " - ", p.get_device_info_by_index(i).get('name'))
p.terminate()

输出结果:

Output Device id  3  -  Microsoft Sound Mapper - Output
Output Device id  4  -  스피커(Realtek High Definition Aud
Output Device id  5  -  헤드폰(2- MATA STUDIO C10)
Output Device id  6  -  LS24AG30x(NVIDIA High Definitio

我基于PySide6开发桌面应用,尝试用QMediaDevices.audioOutputs()、audioInputs()能获取未截断的完整名称,但无法直接拿到设备索引。曾考虑通过名称关联两种方法的结果,但觉得不够稳妥,想找更清晰的解决方案。


解决方案

方法1:通过设备UUID关联PyAudio索引与PySide6完整名称

PySide6的QAudioDevice提供id()方法返回设备唯一UUID,PyAudio的设备信息中也包含deviceUID字段,通过这个唯一标识关联,可避免名称匹配的不确定性:

from PySide6.QtMultimedia import QMediaDevices
import pyaudio

# 构建PySide6设备UUID到完整名称的映射
qt_device_map = {}
for dev in QMediaDevices.audioOutputs():
    qt_device_map[dev.id().toString()] = dev.description()

# 遍历PyAudio设备,匹配UUID输出完整名称
p = pyaudio.PyAudio()
host_info = p.get_host_api_info_by_index(0)
device_count = host_info['deviceCount']

for idx in range(device_count):
    dev_info = p.get_device_info_by_index(idx)
    if dev_info['maxOutputChannels'] > 0:
        # 处理可能的字节类型UID
        dev_uid = dev_info['deviceUID'].decode('utf-8') if isinstance(dev_info['deviceUID'], bytes) else dev_info['deviceUID']
        full_name = qt_device_map.get(dev_uid, dev_info['name'])
        print(f"Output Device id {idx} - {full_name}")

p.terminate()

方法2:使用sounddevice库直接获取完整名称与索引

PyAudio的名称截断源于PortAudio底层结构体的字符限制,sounddevice库基于PortAudio开发,默认返回完整设备名称,同时保留索引信息:

import sounddevice as sd

# 遍历输出设备,打印索引与完整名称
for idx, dev in enumerate(sd.query_devices()):
    if dev['max_output_channels'] > 0:
        print(f"Output Device id {idx} - {dev['name']}")

注:需先安装库,执行pip install sounddevice即可。


内容的提问来源于stack exchange,提问作者Iced Jin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:40:34