qq_45739411 2023-12-25 23:30 采纳率: 50%
浏览 15

写了一个监听到声音就按键的脚本,一直报错,网上也没有解决办法

求帮我看看这段代码为什么一直报错。

发生异常: PortAudioError
Error querying device -1
  File "D:\python\听到声音就按键.py", line 15, in <module>
    stream = sd.InputStream(callback=audio_callback)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sounddevice.PortAudioError: Error querying device -1


import sounddevice as sd
import keyboard
 
# 设置阈值和按键
threshold = 0.1  # 设置声音阈值
key_to_press = 'space'  # 设置要按下的按键
 
# 定义回调函数
def audio_callback(indata, frames, time, status):
    volume_norm = np.linalg.norm(indata) * 10  # 计算音量的标准化值
    if volume_norm > threshold:
        keyboard.press(key_to_press)  # 按下按键
 
# 打开声音输入流
stream = sd.InputStream(callback=audio_callback)
stream.start()
 
# 持续监听声音输入
while True:
    pass
 
# 停止声音输入流
stream.stop()
  • 写回答

2条回答 默认 最新

  • 虫鸣@蝶舞 2023-12-26 07:59
    关注

    看出错信息好像是你没有指定你的麦克风设备,而是使用了默认设备,请检查你的麦克风硬件是否工作,并用代码历遍你的音频设备,找到你麦克风的设备id后,再调用。以下是gpt给出的具体方法:

    您遇到的PortAudioError: Error querying device -1错误通常与音频设备配置有关。这可能意味着sounddevice库在尝试访问默认的音频输入设备时遇到了问题。下面是一些可能的解决步骤:
    
        1.    检查音频设备:确保您的计算机有可用的麦克风或其他音频输入设备,并且它们已正确配置和启用。
        2.    指定输入设备:使用sounddevice.query_devices()查看可用的音频输入设备,然后在创建InputStream时明确指定要使用的设备。例如:
    
    import sounddevice as sd
    
    print(sd.query_devices())  # 打印可用设备列表
    device_id = 1  # 假设设备ID为1,根据您的实际设备情况更改
    stream = sd.InputStream(device=device_id, callback=audio_callback)
    
    
        3.    更新/安装PortAudio:sounddevice依赖于PortAudio。如果PortAudio配置不正确或版本过旧,可能会导致问题。尝试更新或重新安装PortAudio和sounddevice库。
        4.    检查权限:确保您的程序有权限访问麦克风。
        5.    使用虚拟音频设备:如果您的系统中没有可用的物理音频输入设备,可以考虑安装一个虚拟音频设备驱动程序。
        6.    运行环境问题:如果您在某些特殊的运行环境下(例如虚拟机、Docker容器等),可能需要额外的配置来确保音频设备可以被正确访问。
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月25日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗