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

如何让Python的speech_recognition模块提取语音作为YouTube搜索查询词

问题解决方案

1. 解决「在Microsoft Store中查找应用」弹窗问题

该弹窗是Windows系统默认的Python别名指向应用商店导致的,按以下步骤关闭即可:

  • 打开Windows设置,依次进入「应用」→「高级应用设置」→「应用执行别名」
  • 在列表中找到两个「应用安装程序」对应的python.exe、python3.exe选项,将二者的开关全部关闭
  • 按下Win+R输入cmd打开命令提示符,执行python --version,正常返回Python版本号即配置生效

2. 修复语音识别无效、搜索功能异常问题

你现有代码存在多处逻辑错误,是语音内容无法正常获取、搜索失败的核心原因:

  • 逻辑顺序错误:录音后先调用了input()要求手动输入搜索词,完全没有用到语音识别结果
  • URL拼接错误:搜索词和YouTube基础地址顺序写反,且YouTube搜索参数不是?q=,拼接后的地址完全无法正常搜索
  • 缩进错误:语音识别的try-except块放在了麦克风上下文管理器外部,且还没执行识别逻辑就提前退出了Selenium driver
  • 功能冗余:同时初始化了Selenium driver和调用webbrowser打开网页,二者功能重复

修正后的可运行代码

import webbrowser
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
import speech_recognition as sr
import pyttsx3

# 初始化Selenium(如果不需要模拟浏览器操作可以删掉这部分,直接用webbrowser即可)
service = Service('C:\\Users\\Admin\\PycharmProjects\\pythonProject\\chromedriver.exe')
chrome_options = Options()
chrome_options.add_argument(r'--user-data-dir=C:\\Users\\Admin\\AppData\\Local\\Google\\Chrome\\User Data\\Default')
chrome_options.add_argument(r'--profile-directory=Rohan')
driver = webdriver.Chrome(service=service, options=chrome_options)

# 初始化语音识别和语音合成
r = sr.Recognizer()
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)

# 第一次监听唤醒词
with sr.Microphone() as source:
    # 校准环境噪声,提高识别准确率
    r.adjust_for_ambient_noise(source, duration=0.5)
    print('Listening...')
    engine.say("Hey I'm your bot, Trevor! What can I do for you today?")
    engine.runAndWait()
    audio = r.listen(source)

try:
    wake_word = r.recognize_google(audio)
    # 识别到YouTube指令后执行搜索逻辑
    if 'YouTube' in wake_word:
        with sr.Microphone() as source:
            r.adjust_for_ambient_noise(source, duration=0.5)
            print("请说出你要搜索的内容:")
            engine.say("请说出你要搜索的内容")
            engine.runAndWait()
            audio = r.listen(source)
            # 识别语音搜索词
            search_keyword = r.recognize_google(audio)
            print(f"识别到搜索词:{search_keyword}")
            # 拼接正确的YouTube搜索链接
            search_url = f"https://www.youtube.com/results?search_query={search_keyword}"
            # 两种打开方式二选一即可:
            # 方式1:用webbrowser打开
            webbrowser.open_new_tab(search_url)
            # 方式2:用Selenium打开(把上面webbrowser那行注释掉,启用下面两行)
            # driver.get(search_url)
            driver.quit()
except sr.UnknownValueError:
    print("无法识别语音内容")
    engine.say("无法识别你说的内容")
    engine.runAndWait()
except sr.RequestError:
    print("语音识别服务请求失败")
    engine.say("语音识别服务暂时无法使用")
    engine.runAndWait()

补充说明

  • 如果还是识别不到语音,可以调整麦克风输入音量,或者在r.listen(source)中添加timeout=5, phrase_time_limit=10参数限制录音时长
  • 不需要模拟浏览器操作的话可以删掉所有Selenium相关代码,仅保留webbrowser打开链接的逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:18:03