AWS EC2部署Django应用提示OSError: No Default Input Device Available
错误核心原因
AWS EC2是无外设的云服务器实例,默认没有配置物理或虚拟音频输入设备,你当前的代码逻辑是调用本地麦克风录音,在没有麦克风硬件的服务器上运行时,pyaudio就会抛出OSError: No Default Input Device Available错误。
对应解决方案
方案1:调整业务逻辑*(推荐)*
绝大多数部署到云服务器的语音识别业务都不需要服务器侧自带麦克风,改为接收前端上传的音频文件做识别即可,修改代码示例如下:import speech_recognition as sr r = sr.Recognizer() # audio_path替换为用户上传到服务器的音频文件存储路径 with sr.AudioFile(audio_path) as source: audio = r.record(source) # 可根据需求切换识别引擎,示例为谷歌识别 text = r.recognize_google(audio, language='zh-CN')方案2:安装虚拟音频设备(仅用于解决代码运行报错,无实际录音价值)
如果你只是需要代码不报错、不需要实际获取输入音频,可在EC2实例中安装虚拟音频驱动:- 先安装系统依赖:
sudo apt update && sudo apt install alsa-utils portaudio19-dev - 加载虚拟音频内核模块:
sudo modprobe snd-dummy - 执行
arecord -l验证虚拟设备是否生成,能正常返回设备列表即为配置成功 - 修改代码显式指定设备索引即可:
import speech_recognition as sr r = sr.Recognizer() # 先执行注释掉的这段打印所有可用设备的索引,选对应虚拟设备的index # for index, name in enumerate(sr.Microphone.list_microphone_names()): # print(f"设备索引{index}: {name}") # 替换为你查到的虚拟设备索引 with sr.Microphone(device_index=0) as source: r.adjust_for_ambient_noise(source)- 先安装系统依赖:
内容的提问来源于stack exchange,提问作者Masaki93
相关产品推荐
相关产品推荐

