SuperAPI AI 工具集

wispr-analytics

数据与分析

查看项目

更新于 10-15 12:19

技能介绍

用途

Wispr Analytics 用于提取并分析 Wispr Flow 语音听写历史,将量化指标与 LLM 驱动的定性分析结合,服务于自我反思、工作模式识别和心理健康觉察。数据来源为本地 SQLite 数据库,路径为 ~/Library/Application Support/Wispr Flow/flow.sqlite,关键表为 History,字段包括 formattedText、timestamp、app、numWords、duration、speechDuration、detectedLanguage、isArchived。资料提到用户自 2025 年 2 月起有约 8,500 条以上听写记录,为俄语/英语双语,涉及 iTerm2、ChatGPT、Arc 浏览器、Claude Desktop、Windsurf、Telegram、Obsidian、Perplexity 等应用。

主要能力

数据提取脚本 scripts/extract_wispr.py 支持多种时间段:today(默认)、yesterday、week(最近 7 天)、month(最近 30 天)、具体日期 YYYY-MM-DD、日期范围 YYYY-MM-DD:YYYY-MM-DD。模式包括:all(完整分析,默认)、technical(筛选编码/AI 工具听写)、soft(筛选沟通/写作听写)、trends(关注数量/频率模式)、mental(全部文本,用于身心反思)。

对比与图表:--compare 自动与前一时段对比;--graphs PATH 生成带 Chart.js 图表的 HTML 仪表盘,图表包含每日词数叠加、每小时活动、类别分布、常用应用、语言分布。

韵律模式:独立分析模式,读取 History.audio 中存储的 WAV 录音,使用 Praat(parselmouth)提取韵律特征作为情绪/精力代理指标。测量音高 F0(均值、中位数、最小、最大、范围、标准差、变异系数 CV)、强度(均值、范围、标准差)、嗓音质量(jitter、shimmer、HNR,计算在 try/except 中,失败片段会被跳过并计数)、语速(numWords/(speechDuration/60) WPM)与停顿比。按语言(俄语/英语)分开统计,并提供多日趋势表。音频保留有限:Wispr 仅保留最近约 900 条听写的录音(总计 16,000+ 行),旧行音频在上传后被裁剪,builtInAudio 始终为空,因此韵律仅适用于近期听写;每次报告开头会显示覆盖行(本时段 Y 条听写中有 X 条保留了音频),并用 --limit 截断时记录日志。韵律分析约 300 片段需 15-20 秒,默认 --limit 300 以限制运行时长。依赖 pip install praat-parselmouth。

工作流程:步骤 1 提取数据(--format json 获取完整数据,--texts-only 用于 LLM 分析);步骤 2 展示量化摘要(总听写数、词数、语音时长、类别分布、语言分布、每小时活动模式、每日趋势、常用应用);步骤 3 读取 references/analysis-prompts.md 加载对应分析模板进行定性分析;步骤 4 输出到 vault 中 meta/wispr-analytics/YYYYMMDD-period-mode.md,带 front-matter,或按用户要求仅输出到控制台。文本样本每次提取上限 100 条。

使用方式

典型命令:

python3 scripts/extract_wispr.py --period today --mode all --format json
python3 scripts/extract_wispr.py --period week --format markdown
python3 scripts/extract_wispr.py --period month --mode mental --texts-only
python3 scripts/extract_wispr.py --period month --compare --format markdown
python3 scripts/extract_wispr.py --period week --compare --graphs /tmp/wispr-week.html
python3 scripts/extract_prosody.py --period week
python3 scripts/extract_prosody.py --period month --format json
python3 scripts/extract_prosody.py --period 2026-06-11 --limit 600

韵律脚本参数:--period(语义同 extract_wispr.py)、--format text|json、--limit N(默认 300,截断时输出到 stderr)、--output PATH。数据库以只读方式打开(mode=ro&immutable=1)。

应用分类映射

提取脚本对应用分类:coding(iTerm2、cmuxterm、VS Code、Windsurf、Zed、Cursor、Terminal);ai_tools(ChatGPT、Claude Desktop、Perplexity、OpenAI Atlas、Codex);communication(Telegram、Messages、Slack、Zoom);writing(Obsidian、Notes、Chrome、Arc 浏览器)。

词典管理

词典 JSON 位于 ~/ai_projects/claude-skills/wispr-analytics/data/dictionary.json,受版本控制。脚本 scripts/wispr_dictionary.py 支持:check(检查数据库健康与词典统计)、list(列出条目,可用 --filter)、export(导出 JSON)、suggest(通过分析 ASR 与格式化文本差异建议新条目,参数 --days --min-freq)、propose(读取近期听写日志,提出片段、替换规则、词汇三类建议,只读,安全可与 Wispr 同时运行,参数 --days --min-freq --format)、add(添加词条或替换规则)、remove(移除条目)、import(从 JSON 导入,支持 --dry-run)。

安全规则:任何写入操作(add、remove、import)前必须退出 Wispr Flow,脚本会自动强制执行;运行中的读操作(export、list、suggest、check)安全。Wispr Flow 打开数据库时写入会导致索引损坏。流程为:用 pgrep -f "Wispr Flow" 检查运行状态,如运行则请用户先退出(Cmd+Q),写入后运行 check 验证完整性,再重启 Wispr Flow。

词典条目类型:识别词(仅短语,教 Wispr 正确听写)、替换规则(短语→替换,自动纠正误听)、片段(isSnippet=true,文本扩展快捷方式)。propose 三类候选包括:片段候选(重复出现的 URL、邮箱、电话及重复模板句,按规范化逐字频率统计,≥8 词)、替换规则候选、词汇候选(频繁听写的大写/技术术语)。资料指出片段是杠杆最高但最未被充分利用的功能,建议优先展示片段候选。

适用场景与限制

适用于分析个人语音听写习惯、工作模式、生产力与身心状态反思,以及改善 Wispr Flow 识别准确率。限制与注意:分析始终只读,不修改 Wispr 数据;词典写入前必须退出 Wispr Flow;文本样本每次提取上限 100 条;韵律分析仅适用于保留音频的近期听写;声学特征受麦克风、房间、感冒和语言影响,应与用户近期同语言基线对比,且仅作反思邀请而非诊断。