Whisper 本地推理在 CPU 下每条语音数秒到数十秒,且同一段 voice_data 产出相同 text,非常适合缓存。新增 voice_transcriptions.json 持久化 存储,命中时跳过 DB 查询、SILK 解码和 Whisper 推理全链路。 关键技术选择: - 缓存 key 用 json.dumps([username, local_id]),即使 username 含 分隔符也不冲突 - 写入走 tmp + os.replace 原子替换,进程中断不会损坏主文件 - 条目记录 model_size,Whisper 默认模型升级后旧条目自动失效 - 空转录也缓存(配合 model_size 失效),避免静音片段每次重跑 - threading.Lock 防御并发 load/save 竞态 - 首次 OSError 写 stderr 警告一次,后续静默避免刷屏 小的行为改进:resolve_username 移到 whisper/pysilk 导入探测之前, bad chat_name 情况下不再需要 whisper 已安装也能给出"找不到聊天对象" 的错误提示。 15 个新测试:持久化 roundtrip、UTF-8 保留、corrupt JSON 容错、原子 写、写前失败不污染主文件、并发 load/save、缓存命中跳过重活、model 不匹配视为 miss、key 对含分隔符 username 的防御。全部通过。
35 lines
544 B
Plaintext
35 lines
544 B
Plaintext
# Decrypted databases and keys - NEVER upload
|
|
all_keys.json
|
|
wechat_key.txt
|
|
config.json
|
|
decrypted/
|
|
decoded_images/
|
|
*.db
|
|
*.db-shm
|
|
*.db-wal
|
|
*.db.tmp_monitor
|
|
|
|
# Chat export/transcription output files (contain private message data)
|
|
*_export*.json
|
|
*_transcribed*.json
|
|
|
|
# Hook outputs
|
|
hook_output.txt
|
|
hook_start_output.txt
|
|
hook_stderr.txt
|
|
run_hook.bat
|
|
|
|
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
*.egg-info/
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Compiled binaries and output
|
|
find_all_keys_macos
|
|
decoded_voices/
|
|
voice_transcriptions.json
|