# shengmo **Repository Path**: FBxiaomo/shengmo ## Basic Information - **Project Name**: shengmo - **Description**: 声墨 - 跨平台语音听写应用 (Tauri + React + Rust) - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-24 - **Last Updated**: 2026-08-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 声墨 (ShengMo) > 云端语音输入,声音化为墨迹 声墨是一款基于 [OpenLess](https://github.com/appergb/openless) 二次开发的跨平台语音输入工具,支持实时语音转文字、文本润色、实时翻译等功能。 支持本地离线识别和云端识别两种方式,还内置了 AI 文本润色、风格切换等功能,让你的语音输入既方便又准确。 ## ✨ 功能特性 - 🎙️ **实时语音识别** — 支持本地离线和多种云端语音识别服务,低延迟高准确率 - ✍️ **智能文本润色** — AI 优化口语化表达,去除口头禅、补全标点,让文字更通顺 - 🌐 **实时翻译** — 录音中按 Shift 即可切换到翻译模式,支持 15 种语言 - 🎨 **风格切换** — 四种输出风格(原文/轻度润色/清晰结构/正式表达),一键切换 - 📖 **词汇表** — 添加自定义专有名词,提高识别准确率 - 🪟 **胶囊悬浮窗** — 小巧的悬浮窗口,随时待命不打扰 - 📱 **迷你模式** — 极简界面,节省屏幕空间 - 🔄 **自动更新** — 内置版本更新检测,一键升级到最新版 - 🎨 **多主题支持** — 浅色 / 深色模式自由切换 - ⌨️ **全局快捷键** — 自定义热键,快速唤起语音输入 ## 📦 下载安装 ### Windows 从 [Gitee Releases](https://gitee.com/FBxiaomo/shengmo/releases) 下载最新版本: | 版本 | 说明 | |------|------| | `声墨_<版本>_x64-setup.exe` | 安装版,推荐大多数用户使用 | | `声墨_<版本>_x64_portable.zip` | 便携版,解压即用,无需安装 | ### 安装版使用 1. 下载 `setup.exe` 安装包 2. 双击运行安装程序 3. 按照向导完成安装 4. 从桌面或开始菜单启动声墨 ### 便携版使用 1. 下载 `portable.zip` 压缩包 2. 解压到任意目录 3. 双击 `shengmo.exe` 启动 ## 🚀 首次使用教程 ### 快速设置(推荐新手) 启动声墨后,你会看到欢迎引导页面。如果你不想手动配置,可以直接选择一种**快速设置方案**,只需填入 API Key 就能开始使用: | 方案 | 特点 | 适合谁 | |------|------|--------| | **Mimo + DeepSeek** | 注册即送免费额度,推荐新手 | 想快速体验的用户 | | **SiliconFlow 全免费** | 语音识别和润色都免费,长期可用 | 不想花钱的用户 | | **Groq + OpenRouter** | 海外高速方案,免费额度充足 | 有科学上网条件的用户 | 选择方案后,按照提示注册对应平台并获取 API Key,填入即可。 如果你更喜欢完全离线使用,或者想自己配置,请继续阅读下面的教程。 ### 本地配置教程(离线使用,无需联网) 本地识别不需要联网,所有语音处理都在你自己的电脑上完成,适合对隐私有要求或网络不稳定的用户。 **配置步骤:** 1. 打开声墨主界面(按 `Ctrl+Shift+M` 或点击托盘图标)。 2. 进入**设置**页面,找到**语音识别**部分。 3. 选择**本地离线识别**。 4. 在模型列表中选择一个模型,点击**下载**。 **推荐模型:** | 模型名称 | 大小 | 说明 | |----------|------|------| | **中文识别(SenseVoice)** | 230 MB | 推荐首选,支持中/英/日/韩/粤语,效果好 | | **纯中文精准识别(Paraformer)** | 220 MB | 专注中文,识别更准确 | | **多语言识别(Whisper Small)** | 480 MB | 支持多种语言,体积适中 | | **多语言旗舰识别(Whisper Large v3)** | 1.5 GB | 最强多语言模型,体积较大 | 下载完成后模型会自动启用,无需其他设置。之后按住快捷键说话即可使用。 > 提示:首次下载模型需要联网,下载完成后即可断网使用。 ### 云端配置教程 云端识别的准确度通常更高,也支持更多语言。你需要在对应平台注册账号并获取 API Key。 **配置语音识别(ASR):** 1. 打开声墨,进入**设置** → **语音识别**。 2. 选择一个云端提供商。 支持的云端语音识别提供商: | 提供商 | 说明 | |--------|------| | **火山引擎** | 字节跳动旗下,中文识别效果优秀 | | **阿里云百炼** | 实时语音识别,延迟低 | | **硅基流动** | 有免费额度,性价比高 | | **智谱** | GLM-ASR 模型 | | **Groq** | 海外高速方案,免费额度充足 | | **小米 MiMo** | 注册送体验金 | | **OpenAI 兼容** | 支持所有兼容 OpenAI 语音接口的服务 | | **OpenRouter** | 聚合平台,可选多种模型 | 3. 填入你的 **API Key**(在对应平台的官网注册后获取)。 4. 选择识别模型(通常有默认推荐)。 **配置文本润色(LLM):** 文本润色功能可以将语音识别的结果进行 AI 加工——去除口头禅、补全标点、整理语句,让输出更通顺。 1. 进入**设置** → **文本润色**。 2. 选择一个 LLM 提供商。 支持的文本润色提供商: | 提供商 | 说明 | |--------|------| | **ARK(火山方舟)** | 字节跳动旗下 | | **DeepSeek** | 百万 token 仅需几毛钱 | | **硅基流动** | 部分模型免费 | | **OpenAI** | GPT 系列 | | **Google Gemini** | Google 大模型 | | **Codex OAuth** | 使用本机登录态,无需额外 API Key | | **小米 MiMo** | 小米大模型 | | **CometAPI** | 聚合 API 平台 | | **OpenRouter(免费模型)** | 大量免费模型可选 | | **阿里云 Coding Plan** | 阿里云编程方案 | | **CodingPlanX** | 编程方案 | | **MiniMax(M3)** | MiniMax M3 模型 | | **自定义** | 支持任意 OpenAI 兼容接口 | 3. 填入 **API Key** 和选择模型即可。 **推荐搭配:** - **零成本方案**:硅基流动(ASR + LLM 都用硅基流动,部分模型免费) - **高性价比方案**:小米 MiMo(ASR)+ DeepSeek(LLM),注册即送免费额度 - **效果优先方案**:火山引擎(ASR)+ ARK(LLM),同属字节生态,配合效果好 ## 📖 功能与使用方法 ### 语音听写 这是声墨最核心的功能。 1. 在任意可以输入的地方(聊天框、文档、浏览器等)点击一下,确保光标在输入位置。 2. 按住**右 Ctrl** 键开始录音,对着麦克风说话。 3. 松开**右 Ctrl** 键停止录音,识别结果会自动输入到光标位置。 > 也可以按一下右 Ctrl 开始录音,再按一下停止(切换模式)。 ### 文本润色 开启润色后,语音识别的结果会先经过 AI 加工再输出,去除口头禅、补全标点、整理语句。 - 在设置中开启**文本润色**功能,并配置好 LLM 提供商。 - 之后每次语音输入都会自动润色。 - 按 `Ctrl+Shift+S` 可以切换不同的润色风格。 ### 翻译模式 在录音过程中按一下 **Shift** 键,声墨会切换到翻译模式,说完后自动将内容翻译成目标语言并输出。 使用前需要先在设置中配置翻译目标语言(如英语、日语等)。支持翻译到 15 种语言,包括英语、日语、韩语、法语、德语、西班牙语等。 **使用步骤:** 1. 在设置中配置好翻译目标语言。 2. 按右 Ctrl 开始录音。 3. 录音中按一下 Shift 激活翻译。 4. 再按右 Ctrl 停止录音。 5. 翻译结果自动输入到光标位置。 ### 风格切换 声墨提供四种输出风格,按 `Ctrl+Shift+S` 快速切换: | 风格 | 说明 | |------|------| | **原文** | 只补标点和必要分句,不改写不扩写 | | **轻度润色** | 去口头禅、补标点,整理为自然的文字 | | **清晰结构** | 多个话题时自动整理为分点列表 | | **正式表达** | 适合工作沟通和邮件场景,更专业 | ### 词汇表 如果有专业术语或人名地名经常被识别错误,可以在**词汇表**中添加自定义词汇,帮助提高识别准确率。 进入**设置** → **词汇表**,添加你常用的专有名词即可。 ### 历史记录 声墨会保存每次语音识别的记录。进入**历史记录**页面可以查看、搜索和复制过往的识别结果。 ### 迷你模式 按 `Ctrl+Shift+L` 可以在普通窗口和迷你浮窗之间切换。迷你模式下声墨只占屏幕一小块区域,适合屏幕空间紧张时使用。 ### 录音胶囊 录音时屏幕上会出现一个浮动的胶囊提示,显示当前录音状态,方便你随时掌握录音情况。 ## ⌨️ 快捷键一览 | 快捷键 | 功能 | |--------|------| | **右 Ctrl** | 开始/停止语音听写 | | **Shift**(录音中按下) | 激活翻译模式 | | **Ctrl+Shift+S** | 切换输出风格 | | **Ctrl+Shift+M** | 打开声墨主界面 | | **Ctrl+Shift+L** | 切换迷你模式 | 所有快捷键均可在设置中自定义。 ## ❓ 常见问题 **Q:模型下载很慢怎么办?** 声墨支持从多个镜像源下载模型。如果默认源速度慢,可以在下载时选择 hf-mirror 镜像。 **Q:识别结果不准确怎么办?** 可以尝试以下方法: - 换一个识别模型(如从 Whisper Small 换成 SenseVoice)。 - 如果环境嘈杂,尽量靠近麦克风说话。 - 开启文本润色功能,让 AI 帮你修正识别错误。 - 在词汇表中添加经常被识别错的专有名词。 **Q:如何切换本地识别和云端识别?** 进入设置 → 语音识别,在本地和云端提供商之间切换即可。两种方式可以同时配置,随时切换。 **Q:润色功能必须配置吗?** 不是必须的。如果不配置 LLM 提供商,语音识别结果会直接输出,不经过润色加工。 **Q:翻译功能需要什么条件?** 需要先在设置中选择翻译目标语言(不能选"不启用"),然后在录音过程中按 Shift 即可触发翻译。翻译功能依赖语音识别,不需要额外的 LLM 配置。 ## ⚙️ 自动更新 声墨内置自动更新功能,会从 Gitee 获取最新版本: - **手动检查** — 打开设置 → 关于 → 点击「检查更新」 - **更新提示** — 检测到新版本时会弹出更新对话框 - **一键升级** — 点击「安装」即可自动下载并安装更新 ## 🛠️ 开发指南 ### 环境要求 - Node.js >= 18 - Rust >= 1.77 - Windows: Visual Studio Build Tools (MSVC) + Windows SDK ### 本地开发 ```bash # 克隆仓库 git clone https://gitee.com/FBxiaomo/shengmo.git cd shengmo # 进入应用目录 cd openless-all/app # 安装依赖 npm ci # 启动开发服务器 npm run tauri dev ``` ### 构建发布 #### Windows 安装版 ```powershell cd openless-all/app npm run tauri -- build --target x86_64-pc-windows-msvc ``` 输出位置 `src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/` #### Windows 便携版 ```powershell cd openless-all/app powershell -ExecutionPolicy Bypass -File .\scripts\build-portable.ps1 ``` 输出位置 `.portable-build/` #### 发布到 Gitee ```powershell # 在仓库根目录执行 powershell -ExecutionPolicy Bypass -File .\scripts\publish-gitee-release.ps1 ``` 该脚本会自动: 1. 构建安装版和便携版 2. 生成 updater 更新清单 3. 计算文件哈希 4. 提供 Gitee 发布指引 ### 版本管理 版本号需要在以下 5 个文件中保持一致: - `openless-all/app/package.json` - `openless-all/app/package-lock.json` - `openless-all/app/src-tauri/tauri.conf.json` - `openless-all/app/src-tauri/Cargo.toml` - `openless-all/app/src-tauri/Cargo.lock` 使用版本更新脚本: ```bash ./scripts/bump-version.sh X.Y.Z ``` ## 📁 项目结构 ``` shengmo/ ├── openless-all/ │ └── app/ # 主应用目录 │ ├── src/ # React 前端 │ │ ├── components/ # 公共组件 │ │ ├── pages/ # 页面组件 │ │ ├── state/ # 状态管理 │ │ ├── lib/ # 工具库 │ │ ├── i18n/ # 多语言 │ │ └── styles/ # 样式 │ ├── src-tauri/ # Rust 后端 │ │ ├── src/ │ │ │ ├── asr/ # 语音识别 │ │ │ ├── commands/ # Tauri 命令 │ │ │ ├── coordinator/ # 状态机 │ │ │ └── ... │ │ ├── capabilities/ # 权限配置 │ │ ├── icons/ # 应用图标 │ │ └── tauri.conf.json # Tauri 配置 │ ├── scripts/ # 构建脚本 │ └── package.json ├── updater/ # 更新清单 │ └── latest.json # 最新版本信息 ├── scripts/ # 仓库级脚本 │ ├── publish-gitee-release.ps1 # Gitee 发布脚本 │ └── bump-version.sh # 版本更新脚本 └── README.md ``` ## 🔗 相关链接 - **OpenLess**:[https://github.com/appergb/openless](https://github.com/appergb/openless)