# VoiceInput macOS 菜单栏语音输入应用 —— 按住 Fn 键录音,AI 帮你处理。 ## 功能 ### 三种模式(双击 Control 切换) | 模式 | 图标 | 功能 | |------|------|------| | **Input** 语音输入 | 🎤 | 语音转文字 + LLM 纠错 → 注入光标 | | **Assist** AI 助手 | 💬 | 语音提问 → AI 回复(弹窗 + 可选朗读) | | **Agent** 智能体 | 🤖 | 多轮对话 + 工具调用(文件读写/命令执行/搜索) | ### 其他亮点 - 🎤 **按住 Fn 说话**:全局监听,长按录音松开注入 - 📝 **流式识别**:Apple Speech Recognition 实时转录 - 🌐 **多语言**:简中 / 繁中 / English / 日本語 / 한국어 - 🪟 **刘海弹窗**:AI 回复在 DynamicNotch 弹窗展示,支持复制 - 🔊 **语音朗读**:macOS 原生 TTS 朗读 AI 回复(Assist/Agent 可独立开关) - 🎚 **实时波形**:5 条 RMS 驱动的球形波动画 - 📋 **智能注入**:自动检测并切换 CJK 输入法 - 🔧 **Agent 工具**:读写文件、执行命令、搜索文件、网络搜索等 ## 系统要求 - macOS 14+ - 辅助功能权限(监听 Fn 键) - 输入监控权限(Fn 键长按检测) - 麦克风权限 - 语音识别权限 ## 快速开始 ```bash make build # 编译 + 生成 .app make run # 构建并启动 make dmg # 生成分发包(自动清空 API Key) ``` 首次运行需授权**辅助功能**和**输入监控**两个系统权限。 ## 使用 1. 点击任意文本输入框 2. 双击 **Control** 切换到想要模式 3. 按住键盘左下角 **Fn / 🌐 键** 4. 说话,胶囊窗口显示实时转录 5. 松开 Fn → 文本注入(Input)/ AI 回复弹窗(Assist/Agent) 点击菜单栏图标可切换语言、模式或配置 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 # 清理 ``` ## 项目结构 ``` Sources/ ├── 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 依赖 ``` ## 许可 MIT