立项背景:asr和agent技术成熟,人类语音信息的是重要的现实世界信息来源,应当被记录利用
目标功能:实现跨平台的个人机器本地隐私化持续asr结果储存并可选利用
项目功能:
目前仅面向ubuntu桌面端的本地化语音识别及识别结果利用工具。
基线:持续的asr和唤醒词检测。
可选功能:快捷键或唤醒词检测唤醒,然后在光标处插入asr识别结果,
记录asr结果与时间戳到数据库(sqlite),
调用llm/本地agent对语音结果进行反馈(执行操作或直接返回文字结果),
其他可扩展消费asr结果的功能。
遇到的难点及其解决方式:
获取麦克风的方式多样,难以兼容其他平台——复用浏览器音频采集?但浏览器gc限制严重——采用pyaudio
linux桌面环境wayland权限问题无法随意注入文本——降级写入剪贴板并调用ctrl+v
asr技术的迭代迅速——抽象asr接口,asr尽量使用doker部署
asr对gpu性能要求较高——提供可降级模型选择
实现的模块及项目架构(个人项目):
GitHub链接:https://github.com/zaviro/voxkeep
VoxKeep 采用模块化单体:除 Docker 中的 FunASR 外,均运行于 Linux/Python 3.11 单进程。
bootstrap 是组合根,创建线程和有界队列、管理启停;模块只经public.py 交互,事件集中在 shared。audio_engine 以 sounddevice/NumPy 采集、预处理及三路扇出;capture 由 openWakeWord、Silero VAD 和 FSM 完成唤醒与句窗;transcription 以 asyncio/websockets 接入 FunASR 2-pass;
injection 调用 xdotool、ydotool 或 openclaw;storage 用 sqlite3 单写线程、WAL 和批提交落盘。设计强调回调非阻塞、显式背压、资源单一所有权、消费者先启动及分阶段排空,架构测试锁定模块、麦克风和 SQLite 边界。
配置/CLI 使用 PyYAML/argparse;
开发使用uv、pytest、Ruff、Pyright 及 CI