diff --git a/README.md b/README.md index 8e54b6a..bcb28f7 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,33 @@ # VoiceInput -macOS 菜单栏语音输入应用 —— 按住 Fn 键录音,松开自动注入文本。 +macOS 菜单栏语音输入应用 —— 按住 Fn 键录音,AI 帮你处理。 ## 功能 -- 🎤 **按住 Fn 说话**:全局监听 Fn/Globe 键,按下录音,松开注入 -- 📝 **流式识别**:Apple Speech Recognition 实时转录,默认简体中文 +### 三种模式(双击 Control 切换) + +| 模式 | 图标 | 功能 | +|------|------|------| +| **Input** 语音输入 | 🎤 | 语音转文字 + LLM 纠错 → 注入光标 | +| **Assist** AI 助手 | 💬 | 语音提问 → AI 回复(弹窗 + 可选朗读) | +| **Agent** 智能体 | 🤖 | 多轮对话 + 工具调用(文件读写/命令执行/搜索) | + +### 其他亮点 + +- 🎤 **按住 Fn 说话**:全局监听,长按录音松开注入 +- 📝 **流式识别**:Apple Speech Recognition 实时转录 - 🌐 **多语言**:简中 / 繁中 / English / 日本語 / 한국어 -- 🎚 **实时波形**:5 条 RMS 驱动的球形波动画,说话时随音量跳动 -- 🪟 **胶囊浮动窗**:屏幕底部居中,无边框,入场弹簧动画 -- 📋 **智能注入**:剪贴板 + Cmd+V,自动检测并切换 CJK 输入法 -- 🤖 **LLM 纠错**:DeepSeek 优化识别结果,修正同音字 / 拼写 / 术语 +- 🪟 **刘海弹窗**:AI 回复在 DynamicNotch 弹窗展示,支持复制 +- 🔊 **语音朗读**:macOS 原生 TTS 朗读 AI 回复(Assist/Agent 可独立开关) +- 🎚 **实时波形**:5 条 RMS 驱动的球形波动画 +- 📋 **智能注入**:自动检测并切换 CJK 输入法 +- 🔧 **Agent 工具**:读写文件、执行命令、搜索文件、网络搜索等 ## 系统要求 - macOS 14+ - 辅助功能权限(监听 Fn 键) +- 输入监控权限(Fn 键长按检测) - 麦克风权限 - 语音识别权限 @@ -24,47 +36,69 @@ macOS 菜单栏语音输入应用 —— 按住 Fn 键录音,松开自动注 ```bash make build # 编译 + 生成 .app make run # 构建并启动 +make dmg # 生成分发包(自动清空 API Key) ``` -首次运行需在 **系统设置 → 隐私与安全性 → 辅助功能** 中授权 `VoiceInput.app`。 +首次运行需授权**辅助功能**和**输入监控**两个系统权限。 ## 使用 1. 点击任意文本输入框 -2. 按住键盘左下角 **Fn / 🌐 键** -3. 说话,胶囊窗口显示实时转录 -4. 松开 Fn → 文本自动粘贴到光标位置 +2. 双击 **Control** 切换到想要模式 +3. 按住键盘左下角 **Fn / 🌐 键** +4. 说话,胶囊窗口显示实时转录 +5. 松开 Fn → 文本注入(Input)/ AI 回复弹窗(Assist/Agent) -点击菜单栏 🎤 图标可切换语言或配置 LLM。 +点击菜单栏图标可切换语言、模式或配置 LLM。 + +## 三种模式详解 + +### Input(语音输入) +语音转文字 → LLM 纠错(可选)→ 注入光标。适合日常输入。 + +### Assist(AI 助手) +语音提问 → LLM 回复。可选择**直接注入**或**刘海弹窗**展示。 +弹窗模式下可开启**朗读**,AI 回复自动语音播报。 + +### Agent(智能体) +语音/文字 → 多轮对话 → 工具调用(文件读写、命令执行、搜索等)→ 流式输出。 +任务完成后可选**朗读**最终结果。内置 Node.js 运行时,无需额外安装。 + +## 配置 + +| 模块 | 配置方式 | 存储位置 | +|------|---------|---------| +| Input LLM | 菜单栏 `🎤 Input LLM` → Settings | UserDefaults | +| Assist LLM | 菜单栏 `💬 Assist LLM` → Settings | UserDefaults | +| Agent LLM | 菜单栏 `🤖 Agent LLM` → Settings | `~/Library/Application Support/VoiceInput/models.json` | + +Agent 支持多模型配置,在 Settings 中添加/编辑/删除。覆盖安装不会丢失配置。 ## 构建 ```bash make build # Debug 构建 make release # Release 构建 +make run # 构建并启动 make install # 安装到 /Applications +make dmg # 签名 + 创建 DMG(自动清空 API Key) make clean # 清理 ``` -## LLM 纠错 - -LLM 默认使用 DeepSeek,在菜单栏 **LLM Refinement → Enable** 开启。 - -| 配置项 | 默认值 | -|--------|--------| -| API Base URL | `https://api.deepseek.com` | -| Model | `deepseek-v4-flash` | - -设置窗口可修改 API Key 等配置,点击 **Test** 验证连通性。 - ## 项目结构 ``` Sources/ -├── App/ # AppDelegate + 菜单栏控制器 -├── Core/ # 按键监听、语音识别、音频电平、文本注入、输入法、LLM -├── UI/ # 浮动窗口、波形动画、设置窗口 -└── Utils/ # 配置持久化 +├── App/ # AppDelegate + 菜单栏控制器 +├── Core/ # 按键监听、语音识别、LLM、Agent 桥接、弹窗管理 +├── UI/ # 浮动窗口、波形、设置面板、Agent 弹窗 +└── Utils/ # 配置持久化 + +Agent/ # Node.js CLI(智能体运行时) +├── bin/node # 内置 Node.js(arm64) +├── prompts/ # System prompt +├── src/ # bridge.js + 工具实现 +└── node_modules/ # npm 依赖 ``` ## 许可