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

基于语音指令的Python浏览器滚动方案咨询:无需启动新浏览器

可行方案实现语音控制现有浏览器滚动

方案1:PyAutoGUI + 语音识别(跨平台,简单易实现)

这个方案通过模拟键盘按键或系统滚动操作控制浏览器,无需和浏览器内核直接交互,适用于任何已打开的浏览器窗口。

步骤1:安装依赖

pip install pyautogui speechrecognition pyaudio

(注:Windows环境下若PyAudio安装失败,可先执行pip install pipwin && pipwin install pyaudio)

步骤2:核心代码实现

import pyautogui
import speech_recognition as sr

def listen_command():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("等待指令...")
        audio = r.listen(source)
    try:
        command = r.recognize_google(audio, language='zh-CN').lower()
        print(f"识别到指令: {command}")
        return command
    except sr.UnknownValueError:
        print("无法识别语音,请重试")
        return None
    except sr.RequestError:
        print("语音服务不可用")
        return None

def control_scroll(command):
    # 可选:自动激活浏览器窗口(以Chrome为例)
    # chrome_windows = pyautogui.getWindowsWithTitle("Chrome")
    # if chrome_windows:
    #     chrome_windows[0].activate()
    
    if "向下滚动" in command:
        # 两种滚动方式可选:模拟PageDown键或指定像素滚动
        pyautogui.press('pagedown')
        # pyautogui.scroll(-100)  # 负数对应向下滚动,数值控制幅度
    elif "向上滚动" in command:
        pyautogui.press('pageup')
        # pyautogui.scroll(100)

if __name__ == "__main__":
    while True:
        cmd = listen_command()
        if cmd:
            control_scroll(cmd)
            # 添加退出指令,识别到即终止程序
            if "退出" in cmd:
                break

方案2:Chrome远程调试接口(精准控制)

如果需要更精细化的滚动控制(比如获取当前滚动位置、滚动到指定元素),可以通过Chrome的远程调试接口连接已打开的浏览器窗口:

步骤1:开启Chrome远程调试

右键Chrome快捷方式,在目标栏末尾添加参数 --remote-debugging-port=9222,保存后重启Chrome。

步骤2:安装依赖

pip install selenium webdriver-manager

步骤3:连接浏览器并控制滚动

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import speech_recognition as sr

def connect_chrome():
    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
    driver = webdriver.Chrome(options=chrome_options)
    return driver

def listen_command():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("等待指令...")
        audio = r.listen(source)
    try:
        command = r.recognize_google(audio, language='zh-CN').lower()
        print(f"识别到指令: {command}")
        return command
    except sr.UnknownValueError:
        print("无法识别语音,请重试")
        return None
    except sr.RequestError:
        print("语音服务不可用")
        return None

def control_scroll(driver, command):
    if "向下滚动" in command:
        # 执行JS代码滚动指定像素(500为示例,可调整)
        driver.execute_script("window.scrollBy(0, 500);")
    elif "向上滚动" in command:
        driver.execute_script("window.scrollBy(0, -500);")

if __name__ == "__main__":
    driver = connect_chrome()
    while True:
        cmd = listen_command()
        if cmd:
            control_scroll(driver, cmd)
            if "退出" in cmd:
                driver.quit()
                break

该方案优势是能直接操作浏览器DOM,精准控制滚动幅度;缺点是仅支持Chrome,且需提前开启远程调试模式。

注意事项

  • 方案1中,若浏览器未处于激活状态,可通过pyautogui.getWindowsWithTitle()定位并激活目标窗口。
  • 语音识别准确率可通过关键词匹配优化,比如仅响应包含“向上滚动”“向下滚动”的指令。
  • macOS/Linux系统下,PyAutoGUI的滚动参数逻辑略有不同,macOS中pyautogui.scroll(10)为向上滚动,pyautogui.scroll(-10)为向下滚动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:36:19