实时语音识别(Python+HTML实战)

本文介绍了如何安装必要的库文件,如Ufunasr和modelscope,运行FunASR的Python服务器脚本并加载模型。后续步骤包括配置本地部署、运行HTML5前端页面以及实现麦克风实时录音和多种音频格式处理功能。

项目下载地址:FunASR

1 安装库文件

项目提示所需要下载的库文件:pip install -U funasr 和 pip install modelscope

运行过程中,我发现还需要下载以下库文件才能正常运行:

下载:pip install websockets,pip install ffmpeg

2 运行 .py 文件

运行 FunASR-main/runtime/python/websocket/funasr_wss_server.py 文件,加载模型

注:如果提示缺少什么模型,就 pip 下载什么模型

部署本地的情况下需要修改默认 host 值 "0.0.0.0" 为 "127.0.0.1":

  • --host:是 FunASR runtime-SDK 服务部署机器的 ip,默认为本机 ip(127.0.0.1),如果 client 与服务不在同一台服务器,需要改为部署机器 ip
  • --port:10095 是部署的端口号

成功运行结果如下: 

.cache\modelscope\hub\iic\speech_paraformer-la

PS D:\P> & C:/Users/SUNJINGKUN/AppData/Local/Programs/Python/Python313/python.exe d:/P/Python练习/爬/练习.py DevTools listening on ws://127.0.0.1:55097/devtools/browser/8d8b9fee-0c94-40ee-91e1-1d9dc96c15b3 [22840:5788:0724/150410.816:ERROR:ui\gl\direct_composition_support.cc:615] AMD VideoProcessorGetOutputExtension failed: 鏈寚瀹氱殑閿欒 (0x80004005) <selenium.webdriver.remote.webelement.WebElement (session="879172169ddf15fd02d32fe598ec75cd", element="f.86B6C4C85FED9A1B63BF3EC5400C5C75.d.AD0BAAB3B5E4CFFF5F0C3793310DB8AE.e.6")> PS D:\P> & C:/Users/SUNJINGKUN/AppData/Local/Programs/Python/Python313/python.exe d:/P/Python练习/爬/练习.py WARNING: All log messages before absl::InitializeLog() is called are written to STDERR I0000 00:00:1753340830.597245 2108 voice_transcription.cc:58] Registering VoiceTranscriptionCapability WARNING: All log messages before absl::InitializeLog() is called are written to STDERR I0000 00:00:1753340830.884276 13664 voice_transcription.cc:58] Registering VoiceTranscriptionCapability [14584:24940:0724/150712.908:ERROR:google_apis\gcm\engine\registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT DevTools listening on ws://127.0.0.1:55642/devtools/browser/8394dc33-48c2-413e-8cc4-825cc4f6bf19 [22060:21460:0724/150714.248:ERROR:ui\gl\direct_composition_support.cc:615] AMD VideoProcessorGetOutputExtension failed: 鏈寚瀹氱殑閿欒 (0x80004005) <selenium.webdriver.remote.webelement.WebElement (session="b6163e89b6df112c2271ee47cab2c39a", element="f.60E66B6D23C3F095058ABEAE2BE4BE20.d.A0284DC44AE03878932D3B9173CE41AB.e.6")>有很多我不想要的
07-25
<think>我们注意到用户运行Selenium脚本时,控制台输出了很多日志信息,包括一些警告和错误。用户希望减少这些不必要的信息。 这些信息包括: - DevTools listening on ... - ERROR:ui\gl\direct_composition_support.cc:615] AMD VideoProcessorGetOutputExtension failed: ... - WARNING: All log messages before absl::InitializeLog() is called are written to STDERR - I0000 00:00:...] Registering VoiceTranscriptionCapability - ERROR:google_apis\gcm\engine\registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT 这些日志信息主要来自Chrome浏览器和其驱动,以及一些额外的模块(如语音转录、GCM等)。虽然它们不影响脚本执行,但可能会干扰用户。 解决方案:通过配置Chrome选项和Chromedriver服务选项来减少日志输出。 具体步骤: 1. 设置Chrome选项: - 添加参数 `--log-level=3` 将Chrome日志级别设置为只显示致命错误(FATAL)。 - 添加参数 `--disable-logging` 可以禁用Chrome的日志输出。 - 添加参数 `--disable-gpu` 可以避免GPU相关的错误日志(如AMD错误)。 - 添加参数 `--disable-software-rasterizer` 禁用软件光栅化器,减少相关日志。 2. 设置Chromedriver服务选项: - 通过`Service`类,我们可以设置Chromedriver的日志级别,将输出重定向到空或者设置日志级别为严重错误(SEVERE)或关闭。 3. 禁用不需要的功能: - 如果不需要语音转录功能,可以通过实验性选项禁用语音识别(`--disable-features=VoiceTranscription`)来避免相关日志。 4. 注意:有些错误(如DEPRECATED_ENDPOINT)可能是由于浏览器内部调用已弃用的端点,这通常无法通过Selenium直接控制,但更新浏览器版本可能解决。 代码示例:</think>根据你的输出信息,你遇到了多种类型的日志信息,包括警告(WARNING)、信息(I)和错误(ERROR)。这些信息主要来自Chrome浏览器和其底层组件,与Selenium操作无关。让我详细解释如何解决这个问题: ## 🔍 问题分析 你遇到的日志信息可以分为几类: 1. **DevTools监听信息**:`DevTools listening on ws://127.0.0.1:...` - 这是Chrome的正常调试信息,表示DevTools正在监听WebSocket连接 - **无害但可能干扰输出** 2. **GPU错误**:`ERROR:ui\gl\direct_composition_support.cc:615] AMD VideoProcessorGetOutputExtension failed: ...` - 这是GPU渲染相关的错误 - **不影响Selenium功能** 3. **语音转录注册**:`I0000 00:00:... voice_transcription.cc:58] Registering VoiceTranscriptionCapability` - Chrome的语音转录功能初始化信息 - **无害但可能干扰输出** 4. **API端点弃用错误**:`ERROR:google_apis\gcm\engine\registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT` - Chrome内部API调用使用了已弃用的端点 - **不影响Selenium功能** 5. **WebElement信息**:`<selenium.webdriver.remote.webelement.WebElement ...>` - 这是Selenium定位元素后返回的对象信息 - **正常输出但可能不需要** ## ✅ 解决方案 ### 1. 完全禁用所有Chrome日志输出 ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service import logging # 设置Chrome选项 chrome_options = Options() chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--log-level=3') # 只显示FATAL错误 chrome_options.add_argument('--disable-logging') # 禁用所有日志 chrome_options.add_experimental_option('excludeSwitches', ['enable-logging']) # 禁用语音转录功能 chrome_options.add_argument('--disable-features=VoiceTranscription') # 配置服务选项 service = Service( executable_path='d:/P/Python练习/爬/chromedriver.exe', service_args=['--silent', '--disable-build-check'] # 静默模式 ) # 创建浏览器实例 driver = webdriver.Chrome(service=service, options=chrome_options) # 禁用Selenium的日志输出 logging.getLogger('selenium').setLevel(logging.WARNING) logging.getLogger('urllib3').setLevel(logging.WARNING) # 打开网页 driver.get('https://www.baidu.com') # 定位元素但不打印 element = driver.find_element('id', 'kw') # 不打印元素信息 # 关闭浏览器 driver.quit() ``` ### 2. 重定向日志输出到文件(保留错误信息但不在控制台显示) ```python import sys import logging # 配置日志重定向 logging.basicConfig( filename='selenium.log', level=logging.ERROR, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) # 将标准错误重定向到文件 sys.stderr = open('errors.log', 'w') ``` ### 3. 完全禁用所有控制台输出(极端情况) ```python import os import sys from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service # 重定向所有输出 sys.stdout = open(os.devnull, 'w') sys.stderr = open(os.devnull, 'w') # 设置Chrome选项 chrome_options = Options() chrome_options.add_argument('--headless=new') # 无头模式 chrome_options.add_argument('--disable-logging') chrome_options.add_argument('--log-level=3') # 创建服务 service = Service('d:/P/Python练习/爬/chromedriver.exe') service.creation_flags = 0x08000000 # 隐藏控制台窗口 # 创建浏览器 driver = webdriver.Chrome(service=service, options=chrome_options) # 执行操作... driver.get('https://www.baidu.com') # 恢复输出 sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__ driver.quit() ``` ## ✅ 各参数作用说明 | 参数/选项 | 作用 | |-----------|------| | `--log-level=3` | 只显示FATAL级别的错误 | | `--disable-logging` | 完全禁用Chrome日志 | | `--disable-gpu` | 禁用GPU加速,减少相关错误 | | `--disable-features=VoiceTranscription` | 禁用语音转录功能 | | `service_args=['--silent']` | 静默运行chromedriver | | `logging.getLogger('selenium').setLevel(logging.WARNING)` | 减少Selenium库的日志输出 | | `sys.stderr = open('errors.log', 'w')` | 将错误重定向到文件 | ## ✅ 总结 | 日志类型 | 解决方案 | 是否必要处理 | |---------|----------|--------------| | DevTools监听信息 | `--disable-logging` | 可选 | | GPU错误 | `--disable-gpu` | 推荐 | | 语音转录注册 | `--disable-features=VoiceTranscription` | 可选 | | API端点弃用 | 无法直接控制 | 可忽略 | | WebElement信息 | 不打印定位结果 | 推荐 | --- ###
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞雪兆我心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值