直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
live-script-monitor-win — 直播话术巡检系统 (Windows 版)
功能概述
live-script-monitor-win — 直播话术巡检系统 (Windows 版)是一项面向实际任务的技能,主要用于实时采集直播音频 → ASR 语音转写 → 关键词检测 → 场景自动切换 → 告警推送 → 大屏可视化;一键启动 (核心功能);
核心要点
- 双击 start_windows.bat 即可一键启动!
- 脚本会自动完成:;
- 检查 Python 环境(需预先安装 Python 3.10+);
使用与执行
创建 Python 虚拟环。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
live-script-monitor-win — 直播话术巡检系统 (Windows 版)
实时采集直播音频 → ASR 语音转写 → 关键词检测 → 场景自动切换 → 告警推送 → 大屏可视化。
一键启动 (核心功能)
双击 start_windows.bat 即可一键启动!
脚本会自动完成:
- 检查 Python 环境(需预先安装 Python 3.10+)
- 创建 Python 虚拟环境 + 安装依赖(含国内镜像源降级)
- 检查并自动安装 FFmpeg(winget → imageio-ffmpeg 多级降级)
- 检查 VB-Cable 虚拟声卡(需手动安装,见下文)
- 启动巡检系统
启动后打开浏览器访问:http://localhost:9999
首次使用前需自行安装的组件
本 Skill 包不含 FFmpeg、VB-Cable 等大型二进制依赖,首次使用需手动安装以下组件:
1. Python 3.10+(必须)
winget install Python.Python.3.12
或从 https://www.python.org/downloads/ 下载,安装时勾选 "Add Python to PATH"。
2. VB-Cable 虚拟声卡(采集系统音频必须)
- 访问 https://vb-audio.com/Cable/
- 下载
VBCABLE_Setup_x64.exe - 以管理员身份运行安装程序
- 安装后重启电脑
- 系统声音设置 → 输出设备选「CABLE Input (VB-Audio Virtual Cable)」
没有 VB-Cable 也可以启动系统,但无法采集系统音频。
3. FFmpeg(采集音频必须,启动脚本会自动安装)
启动脚本 start_windows.bat 会自动尝试安装 FFmpeg(winget 或 imageio-ffmpeg),无需手动操作。如自动安装失败,请手动安装:
winget install Gyan.FFmpeg
或从 https://www.gyan.dev/ffmpeg/builds/ 下载,将 ffmpeg.exe 放到 toolsffmpeg 目录。
4. 阿里云 ASR 密钥(语音识别必须)
- 阿里云控制台开通「智能语音交互」服务
- 创建项目,获取 AppKey
- 创建 AccessKey(需 AliyunNLSFullAccess 权限)
- 编辑
scripts/config.yaml,填入你的密钥:
aliyun_asr: enabled: true app_key: "你的AppKey" access_key_id: "你的AccessKeyId" access_key_secret: "你的AccessKeySecret"
也可以通过大屏管理后台(右上角齿轮)在线配置。
系统架构
live-script-monitor-win/ ├── start_windows.bat # ← 一键启动脚本 (双击运行) ├── check_env.bat # 环境检查脚本 (只检查不安装) ├── assets/dashboard/ # 大屏前端 (Vue.js 3 SPA) │ ├── index.html # 主页面 (含弹窗管理后台) │ └── vue.global.prod.js # Vue 本地文件 (不依赖 CDN) ├── scripts/ # Python 后端 │ ├── main.py # 主入口 (LiveMonitorApp) │ ├── config.yaml # 配置文件 (含场景/规则/ASR密钥) │ ├── audio_capture.py # 音频采集 (跨平台: BlackHole/VB-Cable/WASAPI) │ ├── asr_base.py # ASR 抽象基类 + 工厂方法 │ ├── asr_aliyun.py # 阿里云 ASR 驱动 (WebSocket + httpx Token) │ ├── asr_iflytek.py # (预留) 科大讯飞 ASR 驱动 │ ├── asr_tencent.py # (预留) 腾讯云 ASR 驱动 │ ├── asr_baidu.py # (预留) 百度 ASR 驱动 │ ├── rule_engine.py # 规则引擎 (关键词检测/场景切换/告警) │ ├── dashboard_server.py # HTTP+WS 大屏服务 (FastAPI+Uvicorn) │ ├── setup_env.py # 环境检查脚本 (Python 版) │ ├── test_local.py # 本地测试脚本 (无需 ASR/音频) │ ├── requirements.txt # Python 依赖 │ └── .venv/ # Python 虚拟环境 (start_windows.bat 自动创建) ├── tools/ # FFmpeg 存放目录 (自动下载) │ └── ffmpeg/ │ └── ffmpeg.exe # (启动脚本自动安装) ├── recordings/ # 录制输出目录 ├── logs/ # 日志目录 └── references/ # 参考文档
数据流
系统音频 ──→ VB-Cable 虚拟声卡 ──→ FFmpeg(dshow) ──→ PCM s16le 16kHz mono ──→ AudioCapture._emit_audio() ──→ ASR.send_audio() ──→ 阿里云 NLS WebSocket ──→ TranscriptionResultChanged(中间结果) ──→ 大屏流式显示 + 规则引擎 ──→ SentenceEnd(最终结果) ──→ 大屏历史记录 + 规则引擎全量检查 ──→ 关键词命中 ──→ 场景切换 + 告警判定 ──→ 大屏推送告警
VB-Cable 虚拟声卡配置 (重点)
1. 安装 VB-Cable
- 访问 https://vb-audio.com/Cable/
- 下载
VBCABLE_Setup_x64.exe - 以管理员身份运行安装程序
- 安装后重启电脑
2. 配置音频路由
打开 Windows 系统设置 → 声音:
- 输出设备选「CABLE Input (VB-Audio Virtual Cable)」
- 这样系统声音会发送到 VB-Cable 虚拟设备
- 输入设备保持你的麦克风不变
或者使用「立体声混音」替代方案:
- 系统托盘 → 声音 → 录制 → 右键空白处 → 显示禁用设备 → 启用「立体声混音」
3. 验证
# 列出 dshow 设备,确认 CABLE Output ffmpeg -list_devices true -f dshow -i dummy # 测试抓 3 秒音频 ffmpeg -f dshow -i "audio=CABLE Output (VB-Audio Virtual Cable)" -f s16le -ac 1 -ar 16000 -t 3 test.raw
4. FFmpeg 命令 (Windows)
系统自动构建的命令:
ffmpeg -f dshow -i "audio=CABLE Output (VB-Audio Virtual Cable)" -f s16le -acodec pcm_s16le -ac 1 -ar 16000 -loglevel error pipe:1
dshow— Windows DirectShow 音频采集audio=CABLE Output (VB-Audio Virtual Cable)— VB-Cable 虚拟声卡完整设备名s16le— 16 位小端 PCMac 1— 单声道ar 16000— 16kHz 采样率(阿里云 ASR 要求)
阿里云 ASR 配置
前置条件
- 阿里云控制台开通「智能语音交互」服务
- 创建项目,获取 AppKey
- 创建 AccessKey(需 AliyunNLSFullAccess 权限)
- 确认区域(默认 cn-shanghai)
config.yaml 配置
asr_provider: aliyun
aliyun_asr:
enabled: true
app_key: "你的AppKey"
access_key_id: "你的AccessKeyId"
access_key_secret: "你的AccessKeySecret"
url: "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1"
params:
format: pcm
sample_rate: 16000
enable_intermediate_result: true
enable_punctuation_prediction: true
enable_inverse_text_normalization: true
也可以通过大屏管理后台(右上角齿轮)在线配置,保存后自动重启。
Token 获取方式
使用 httpx 直接调用阿里云 CreateToken REST API,通过 HMAC-SHA1 签名鉴权。不需要安装 aliyun-python-sdk-core。
音频采集配置
config.yaml 参数
streamer:
capture_mode: system_audio # 推荐值
audio:
sample_rate: 16000 # 阿里云 ASR 要求 16kHz
channels: 1 # 单声道
format: s16le # 16位小端 PCM
chunk_seconds: 1 # 每片 1 秒,越小延迟越低
支持的采集模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
system_audio |
系统声卡捕获 (推荐) | Windows 直接采集系统输出音频 |
stream |
拉取 RTMP/FLV 直播流 | 有推流地址时 |
hybrid |
先试拉流,失败切系统声卡 | 不确定推流地址是否可用 |
watch |
监听录制目录文件 | 配合 DouyinLiveRecorder 使用 |
静音检测
_emit_audio() 会采样检测非零字节比例:
- 0-1% 非零 — 可能无音频播放或路由未配好,打印 WARNING
- 正常播放时 — 非零比例通常 40-100%
注意:没有声音播放时 VB-Cable 抓到全零是正常现象,不是 Bug。
规则引擎
场景切换 (auto_keyword 模式)
config.yaml 中 app.scene_mode: auto_keyword 时启用关键词驱动场景切换:
detect_scene_by_keywords基于switch_keywords精确子串匹配- 阈值:新场景得分 >= 1 且 > 当前场景得分即可切换
告警规则类型
| 类型 | 说明 | 触发条件 |
|---|---|---|
absence_alert |
缺失告警 | 时间窗口内关键词命中次数 < min_hits |
frequency_alert |
频次告警 | 时间窗口内核心短语命中次数 < min_hits |
告警去重:同一 scene_id + rule_type + window 组合在 5 分钟内只触发一次。
大屏与管理后台
- 大屏地址:
http://localhost:9999 - 管理后台:大屏右上角齿轮图标 → 弹窗
- 保存配置后自动热重启(
os.execv原地重启) - 前端
saveSystemConfig()自动设enabled: true
前端技术栈
- Vue.js 3 (本地引用
vue.global.prod.js,不依赖 CDN) - WebSocket 实时推送
- 暖色调 UI
本地测试 (无需 ASR/音频)
cd scripts .venvScriptspython.exe test_local.py
模拟直播话术数据,验证大屏展示和规则引擎工作正常。
故障排查
部署检查清单
- 端口 9999 是否 LISTENING (
netstat -an | findstr 9999) - 日志中是否有「阿里云 ASR 识别已开始」
- 日志中是否有「已发送 N 个音频块」
- 日志中是否有「ASR 中间结果」或「ASR 句子结束」
- 检查 config.yaml 是否有真实密钥(非占位符)
- 检查
capture_mode是否为system_audio - 检查 FFmpeg 是否在 PATH 中 (
ffmpeg -version)
常见问题速查
| 问题 | 原因 | 修复 |
|---|---|---|
| FFmpeg 报错退出 (code=1) | dshow 设备名不完整 | 确保 audio_capture.py 提取完整设备名含 (VB-Audio Virtual Cable) |
| Vue.js 白屏 | vue.global.prod.js 缺失 | 确认 assets/dashboard/ 目录有该文件 |
| ASR error 40000004 | FFmpeg 没采集到音频导致 ASR 空闲超时 | 检查 VB-Cable 是否安装、音频是否在播放 |
| ASR 填了正确 key 但不生效 | aliyun_asr.enabled 仍为 false |
前端 saveSystemConfig 自动设 enabled:true |
| ASR 连接成功但无转写文字 | TranscriptionResultChanged 过滤条件过严 | 去掉长度过滤,有 result 就输出 |
| VB-Cable 抓到全零数据 | 当前没有声音在播放 | 正常现象,播放音频时会有非零数据 |
| FFmpeg 报找不到设备 | VB-Cable 未安装或名称不匹配 | 检查 dshow 设备列表 |
| capture_mode=hybrid 先拉流等 15 秒 | 拉流必失败才降级 | config.yaml 改 capture_mode: system_audio |
| 场景识别不准 | switch_keywords 不匹配实际话术 | 根据实际直播话术调整 config.yaml |
| 告警规则不执行 | process_text 只在 final 结果时调用 | partial 结果也送入规则引擎 |
| 告警被 dedup 阻止 | dedup 检查在告警判定之前 | dedup 移到告警判定之后 |
| 页面报 {"error":"dashboard not found"} | static_dir 路径不对 | config.yaml: static_dir: ../assets/dashboard |
| FFmpeg 不在 PATH | 安装后未刷新环境变量 | 重启终端或电脑 |
| 中文乱码 | cmd 编码问题 | start_windows.bat 已设置 chcp 65001 |
更新日志
v2.2.0 (2026-06-23) — Skill 分发版
轻量化打包
- 移除 .venv(121MB)、tools/ffmpeg/ffmpeg.exe(87MB)、VBCABLE_Driver_Pack45.zip(1.3MB)
- Skill 包总大小 < 1MB
- 所有运行时依赖由 start_windows.bat 自动下载安装
- config.yaml 密钥替换为占位符,用户自行填入
Windows 适配修复
- 修复 VB-Cable dshow 设备名不完整导致 FFmpeg 退出的 Bug
- audio_capture.py 自动提取完整设备名
CABLE Output (VB-Audio Virtual Cable) - 修复 Windows GBK 编码导致 FFmpeg 设备列表崩溃的问题
v2.1.0 (2026-06-22) — Windows 版
- 创建
start_windows.bat一键启动脚本 - 自动检查 Python/FFmpeg/VB-Cable 环境
- 自动创建虚拟环境并安装 Python 依赖
- 支持使用国内镜像源安装依赖(网络问题自动降级)
- 适配 Windows 路径分隔符和命令语法
v2.0.0 — Mac 版基线
- 支持 macOS/Windows 跨平台音频采集
- 阿里云 ASR 实时语音转写
- 关键词检测 + 场景切换 + 告警推送
- FastAPI + WebSocket 大屏
热门AI工具
相关专题
开启被禁用的 Windows 更新:方法一:服务管理器中将其设置为自动启动并启动服务;方法二:Windows 设置中取消暂停更新;方法三:使用命令提示符启动 wuauserv 和 cryptSvc 服务并重启计算机。想了解更多相关内容,请阅读专题下面的文章。
3642
2025.03.27
此windows副本不是正版的解决办法:1、执行重新激活;2、使用命令提示符;3、调整服务设置;4、使用激活工具;5、更新系统。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
1479
2024.08.23
windows打印机无法打印可能是由连接、驱动程序、打印机设置、文档、墨水耗尽、纸张或硬件故障引起的。想了解更多windows的相关内容,可以阅读本专题下面的文章。
3374
2024.04.15
Windows驱动精灵是一个免费的驱动程序管理工具,可帮助您轻松查找、下载和安装丢失或过时的驱动程序。想了解更多驱动精灵的相关内容,可以阅读本专题下面的文章。
2978
2024.04.15
linux和windows的主要区别有:1. 内核:linux使用开源内核,而windows使用专有内核;2. 许可证和成本:linux大多免费开源,而windows需要购买许可证等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
6389
2024.04.12
热门下载
相关下载
精品课程


