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

如何使用Python sounddevice查询字符串选择指定音频输入设备?

用sounddevice通过查询字符串选择特定音频输入设备

先确认设备列表

先运行sounddevice.query_devices()获取所有设备的名称和信息,比如输出可能是:

0: 内置麦克风, Core Audio (2 输入, 0 输出)
1: 内置扬声器, Core Audio (0 输入, 2 输出)
2: USB 麦克风, Core Audio (1 输入, 0 输出)

构造查询字符串的几种实用方式

sounddevice的查询字符串支持多种匹配逻辑,针对输入设备常用这几种:

  • 直接用名称子串:只要子串能唯一匹配目标设备就行。比如要选上面的"USB 麦克风",直接写device="USB 麦克风",甚至更短的device="USB"都可以(前提是没有其他设备名称包含"USB")。
  • 明确指定输入设备:如果担心设备名称和输出设备重复,用input:前缀限定只匹配输入设备,比如device="input:USB 麦克风"或者device="input:USB"。
  • 精确匹配名称:如果有多个设备名称包含相同子串,用exact:前缀做完全匹配,比如device="exact:USB 麦克风, Core Audio"(要和query_devices()输出的名称完全一致)。
  • 结合索引和名称:知道设备索引的话,也可以写device="2"或者device="2:USB 麦克风",双重确认不会选错。

代码示例

import sounddevice as sd

# 先打印设备列表确认目标设备
print(sd.query_devices())

# 用名称子串创建输入流
with sd.InputStream(device="USB 麦克风") as stream:
    # 这里可以添加音频处理逻辑,比如读取输入数据
    data, overflowed = stream.read(1024)

# 用input前缀指定输入设备
with sd.InputStream(device="input:USB") as stream:
    data, overflowed = stream.read(1024)

# 精确匹配设备全称
with sd.InputStream(device="exact:USB 麦克风, Core Audio") as stream:
    data, overflowed = stream.read(1024)

注意事项

如果查询字符串匹配到多个设备,sounddevice会抛出错误,这时候需要调整查询字符串,用更精确的子串或者精确匹配方式。

内容的提问来源于stack exchange,提问作者Chris W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:10:43