语音MCP集成
Voice MCP Integration是一个小型端到端原型,用于在Android设备上捕获语音,并在运行VS Code的机器上将其转换为带时间戳的引导文本。
该项目分为两部分:
- 使用Android内置功能的Android应用程序
SpeechRecognizer捕捉一键通或始终在线的语音输入。 - 一个Rust服务器,通过TCP监听可识别的文本,并将每个非空语句写入本地文件。
在实践中,这使您可以在电话上说出简短的命令,并将其作为滚动文本提要落在主机上,可以检查、使用或集成到其他工具中。
运作原理
- Android应用程序在设备上本地执行语音转文本。
- 最终识别结果通过TCP发送到主机。
- Rust服务器为每一行添加时间戳并将其写入
steering.txt. - 输出文件只保留最新配置的行,因此它保持有界。
仓库的规划
android_app/:用于语音捕获和传输的Android客户端应用程序。rust_server/:Rust TCP接收器和带时间戳的引导文件编写器。steering.txt:Rust服务器写入的默认输出文件。
当前行为
- Android应用程序允许您输入服务器地址并将其持久化为
host:port. - 识别的文本显示在应用程序中,因此可以在设备上验证语音结果。
- Rust服务器从以下位置读取共享设置
rust_server/config.toml以及可选的本地覆盖rust_server/config.local.toml. - 默认情况下,接收到的文本将写入
steering.txt在存储库根目录中添加时间戳。
预期用途
最好将此存储库理解为集成原型,而不是成品。它可用于实验:
- 电话到主机语音命令捕获
- 低摩擦语音转向输入
- Android语音识别和本地桌面工具之间的简单桥接
- 基于文件的切换到其他自动化或编辑器工作流
入门指南
选项A:安装预构建APK
预构建的APK可在 发布 页面。
- 下载
app-debug.apk从最新版本下载到您的Android设备上。 - 在您的设备上,启用 从未知来源安装 (设置→ Apps → 特殊应用访问→ 安装未知应用程序,然后允许您的浏览器或文件管理器)。
- 打开下载的APK进行安装。
- 首次发射时,授予 麦克风 在提示时获得许可。
选项B:从源代码构建
先决条件
- API 34级的Android SDK(或通过Android Studio安装)。
- JDK 17或更高版本。
- Vosk和Sherpa ONNX语音模型(见下文)。
下载语音模型
APK捆绑了两个设备上的语音转文本模型。由于其大小,它们不会被检查到git中。
Vosk模型 (约68 MB):
cd android_app/app/src/main/assets
mkdir -p model-en-us
cd model-en-us
wget https://alphacephei.com/vosk/models/vosk-model-small-en-us-0.15.zip
unzip vosk-model-small-en-us-0.15.zip
mv vosk-model-small-en-us-0.15/* .
rm -rf vosk-model-small-en-us-0.15 vosk-model-small-en-us-0.15.zip
cd ../../../../..夏尔巴ONNX模型 (约68 MB):
cd android_app/app/src/main/assets
mkdir -p sherpa-onnx-model
cd sherpa-onnx-model
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-en-kroko-2025-08-06.tar.bz2
tar xjf sherpa-onnx-streaming-zipformer-en-kroko-2025-08-06.tar.bz2
mv sherpa-onnx-streaming-zipformer-en-kroko-2025-08-06/{encoder.onnx,decoder.onnx,joiner.onnx,tokens.txt} .
rm -rf sherpa-onnx-streaming-zipformer-en-kroko-2025-08-06 *.tar.bz2
cd ../../../../..下载后,您的资产目录应该如下所示:
android_app/app/src/main/assets/
├── model-en-us/ # Vosk model files
│ ├── am/
│ ├── conf/
│ ├── graph/
│ └── ...
└── sherpa-onnx-model/ # Sherpa-ONNX model files
├── encoder.onnx
├── decoder.onnx
├── joiner.onnx
└── tokens.txt构建Android应用程序
cd android_app
./gradlew assembleDebugAPK将在 android_app/app/build/outputs/apk/debug/app-debug.apk.
通过ADB安装:
adb install -r app/build/outputs/apk/debug/app-debug.apk启动Rust服务器
看 rust_server/README.md 了解全部细节。
cd rust_server
cargo run连接应用程序
- 打开设备上的VoiceMCP应用程序。
- 输入主机地址(例如。
192.168.1.100:4000). - 从下拉列表中选择STT发动机(Vosk或Sherpa ONNX)。
- 将捕获模式设置为 连续的.
- 切换 始终开启模式 然后开始说话。
- 转录文本出现在
steering.txt在主机上。
语音引擎
该应用程序支持两个设备上的语音转文本引擎,可通过下拉菜单选择:
| 发动机 | 型号 | 尺寸 | 备注 |
|---|---|---|---|
| 沃斯克 | vosk-model-small-en-us-0.15 | ~68 MB | 重量轻,精度低 |
| 夏尔巴人ONNX | Kroko流媒体压缩转换器(2025-08-06) | ~68 MB | 更高的精度,流媒体 |
两者都完全在设备上运行,不需要互联网。所有依赖项都是Apache 2.0或MIT许可的。
更详细的服务器设置记录在 rust_server/README.md.
