Skip to content

feat: add optional local voice transcription - #84

Open
shierqi wants to merge 1 commit into
LifeArchiveProject:mainfrom
shierqi:codex/voice-transcription-pr
Open

feat: add optional local voice transcription#84
shierqi wants to merge 1 commit into
LifeArchiveProject:mainfrom
shierqi:codex/voice-transcription-pr

Conversation

@shierqi

@shierqi shierqi commented Jul 31, 2026

Copy link
Copy Markdown

功能说明

为聊天语音新增可选的本地语音转文字能力,同时保留原有语音播放与全部既有导出行为。

  • 使用 faster-whisper 进行本地中文转写,默认模型为 medium,模型与依赖均不随本 PR 分发。
  • 支持 CPU / NVIDIA CUDA 设备选择;CUDA 加载或首次推理初始化失败时自动回退到 CPU int8,且仅重试一次。
  • 明确区分依赖安装、模型就绪、设备可用和是否允许下载;模型缺失且禁止下载时会在聊天和批量导出前阻止转写,不会静默联网。
  • 使用 OpenCC t2s 在写入缓存前统一转换为简体中文,并通过文本处理版本兼容旧缓存。
  • 聊天页支持按条转写、缓存恢复、失败重试和右键入口;转写结果可写入 HTML、JSON、TXT、Excel。
  • 隐私模式强制禁用转写并清理转写字段;关闭该可选能力时不影响原聊天、媒体和导出流程。
  • Windows PyInstaller 构建会收集 OpenCC 配置和词典;原生 wce_integrity.pyd 已包含语音气泡下方纵向显示转写文字的 CSS。

验证

  • Python 全量测试:571 passed,176 subtests
  • 语音相关定向测试:46 passed,8 subtests
  • Vue 真实组件测试:3 passed
  • 前端类型检查和 Nuxt 生产构建通过
  • uv lock --check、Python 编译检查、Node 语法检查、git diff --check 通过
  • Windows 后端真实 PyInstaller 构建通过;打包可执行文件中的 OpenCC smoke test 通过
  • 规范 wce_integrity.pydexport_css("chat") 已验证包含 .wechat-voice-transcript 和纵向布局
  • 已生成并检查真实 HTML 导出,转写文字位于语音气泡下方
  • 已在 NVIDIA GPU 环境验证 CUDA 模型加载和转写链路

兼容性说明

  • 保留原语音播放功能。
  • 不改变未启用转写时的现有导出格式。
  • 模型需要由用户提前缓存或显式允许首次下载。
  • GPU 可用性仍取决于目标机器的 NVIDIA 驱动、CUDA/cuDNN 运行库及 CTranslate2 兼容性。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant