内容
<div align="center">
<img src="docs/souffle-logo.svg" alt="Soufflé logo" width="120">
<h1>Soufflé</h1>
<p><strong>私有语音转文本,适用于macOS,且永不离开您的Mac。</strong></p>
<p>
在任意应用程序中进行语音输入,会议转录并区分发言人,并获取设备端摘要<br>
包含决策和行动项。无需云服务,无需账户,无需API密钥。
</p>
<p>
<img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg">
<img alt="Tauri 2" src="https://img.shields.io/badge/Tauri-2-24C8DB?logo=tauri&logoColor=white">
<img alt="Svelte 5" src="https://img.shields.io/badge/Svelte-5-FF3E00?logo=svelte&logoColor=white">
<img alt="macOS Apple Silicon" src="https://img.shields.io/badge/platform-macOS%20Apple%20Silicon-lightgrey">
</p>
<p>
<a href="#download"><strong>下载</strong></a> ·
<a href="#speech-models">语音模型</a> ·
<a href="#build-from-source">从源码构建</a>
</p>
</div>
<p align="center">
<img src="docs/screenshots/meeting-live.png" width="820" alt="实时会议转录,完全在设备上运行,实时区分我和他人">
</p>
所有内容均在设备上运行:
- 🔒 **完全私密。** 转录、摘要和音频都保留在您的Mac上。不会上传任何内容,并且支持离线使用。
- 🎙️ **语音输入和会议。** 通过全局快捷键在任意应用程序中进行语音输入并自动粘贴,或通过实时转录捕获会议并区分发言人。
- 🧠 **理解并拥有。** 设备端摘要包含决策和行动项、全文搜索,并支持导出为Markdown、JSON或字幕。
## 转录
- **语音输入,** 并在您使用的应用程序中自动粘贴,支持全局快捷键从任意位置启动。某些应用程序(如终端、安全字段)可能拒绝模拟粘贴,可以改为发送模拟按键。支持可选的开始/停止声音确认快捷键已生效。
- **会议转录,** 实时转录并捕获系统音频,区分我和他人。支持可选的音频录制,以紧凑的Opus文件形式保存会议音频,并具有保留策略,可从转录内容中点击播放。
- **自动化录制生命周期:** 应用程序在日历会议开始时提供启动选项,在会议似乎结束时自动停止,并发出警告。在关闭笔记本电脑盖或系统睡眠时,应用程序会暂停并恢复录制,并在引擎停止或麦克风断开时恢复或抢救会话。
| 在任意应用程序中进行语音输入 | 您的时间线,按天分组 |
| :---: | :---: |
|  |  |
## 理解
- **会议摘要,** 由Ollama或Apple Intelligence(如果可用,则无需设置)在设备上生成。
- **结构化结果:** 从会议中提取决策、行动项(包含负责人)和未解决的问题。
- **语音输入优化(可选):** 本地LLM处理优化语音输入文本,支持可编辑的提示模板,然后粘贴。
- **全文搜索** 支持搜索所有转录和语音输入记录。
| 转录内容、笔记和参与者 | 设备端摘要和结果 |
| :---: | :---: |
|  |  |
## 拥有您的数据
- **导出任意会议** 为Markdown、JSON或SRT/VTT字幕,或将**整个存档**导出为Markdown和JSON的普通文件夹。
- **MCP服务器:** 捆绑的`souffle-mcp`侧车允许Claude Desktop、Claude Code或任意MCP客户端搜索和读取您的转录内容。只读,完全本地,即使应用程序关闭也支持。
- **无头CLI:** `souffle --transcribe-file audio.wav --json`可以在不启动应用程序的情况下转录文件,而`--repeat N`可以用作基准测试工具。
`souffle`二进制文件包含在应用程序包中,不会添加到您的`PATH`中,因此它不是全局命令。可以通过完整路径调用,或创建符号链接:
```bash
# 直接运行
"/Applications/Soufflé.app/Contents/MacOS/souffle" --list-engines
# 或暴露为`souffle`命令
ln -s "/Applications/Soufflé.app/Contents/MacOS/souffle" /usr/local/bin/souffle
```
## 语音模型
所有模型均在本地运行,并在首次使用时从HuggingFace下载:
- [Kyutai STT 1B](https://huggingface.co/kyutai/stt-1b-en_fr-candle)(默认):法语 + 英语流式转录,约2.4 GB,通过Candle支持Metal GPU
- [Kyutai STT 2.6B](https://huggingface.co/kyutai/stt-2.6b-en-candle):英语,高质量,约5.6 GB
- [Whisper Large V3 Turbo](https://huggingface.co/ggerganov/whisper.cpp):多语言,约1.6 GB,通过whisper.cpp支持Metal
- [Parakeet TDT 0.6B v3](https://huggingface.co/istupakov/parakeet-tdt-0.6b-v3-onnx):25种语言,支持标点和大写,约670 MB int8,通过ONNX Runtime支持快速CPU推理
## 下载
使用[Homebrew](https://brew.sh/)安装:
```bash
brew install --cask damione1/tap/souffle
```
或从 [**Releases**](https://github.com/damione1/souffle/releases/latest) 页面获取预构建的安装程序:Apple Silicon Mac的`.dmg`文件,要求macOS 13或更高版本。
## 从源码构建
需要Apple Silicon Mac、[Rust](https://rustup.rs/)、[Node.js](https://nodejs.org/) 18+和[cmake](https://cmake.org/)(`brew install cmake`):
```bash
npm install
npm run tauri dev
```
## 许可证
在MIT许可证下发布。