如何实现识别到语音指令含触发词时自动播放指定音频的脚本
语音触发音效脚本实现
前置依赖安装
先安装运行所需的第三方库,执行以下命令:
pip install SpeechRecognition pyaudio playsound pyttsx3
注:如果PyAudio安装失败,可直接下载对应系统版本的whl包本地安装
核心实现代码
程序启动后自动常驻监听麦克风输入,将采集到的语音转写为文本后匹配预设触发词,命中规则则自动播放对应路径的音效文件,和参考逻辑完全对齐:
import speech_recognition as sr from playsound import playsound import pyttsx3 # 初始化语音识别器和语音播报引擎 r = sr.Recognizer() engine = pyttsx3.init() # 自定义触发词和对应音效路径的映射表,可自行扩展多组规则 trigger_config = { "播放歌曲": "./audio/song.mp3", "提示": "./audio/alert.wav", "结束": "./audio/end.mp3" } def run_listen_loop(): while True: with sr.Microphone() as source: # 自动校准环境噪音,校准期间保持环境安静即可 r.adjust_for_ambient_noise(source, duration=1) print("正在监听语音指令...") audio = r.listen(source) try: # 识别中文语音,需识别英文可将language参数改为'en-US' command_text = r.recognize_google(audio, language='zh-CN').lower() print(f"识别到指令:{command_text}") # 遍历匹配触发词 for trigger_word, audio_path in trigger_config.items(): if trigger_word in command_text: print(f"命中触发词【{trigger_word}】,正在播放对应音效") playsound(audio_path) # 如需同步语音播报可打开下方两行注释 # engine.say(f"已触发{trigger_word}指令") # engine.runAndWait() break except sr.UnknownValueError: print("未识别到有效语音,继续监听") except sr.RequestError: print("语音识别服务连接失败,请检查网络后重试") if __name__ == "__main__": run_listen_loop()
使用注意事项
- 运行脚本前请确认麦克风正常连接,且已授予程序麦克风访问权限
- 请将
trigger_config字典中的键值对替换为实际需要的触发词、本地音效文件的存储路径 - 如果不需要语音播报功能,可以直接移除pyttsx3相关的初始化和调用代码
- 若识别灵敏度不符合预期,可调整环境噪音校准时长、语音监听超时阈值适配实际使用场景
内容的提问来源于stack exchange,提问作者Piyush Kushwaha
相关产品推荐
相关产品推荐

