语音转文本集成工具

一个端到端的原型工具,用于在Android设备上捕获语音并将其转换为带有时间戳的文本,适用于VS Code等开发环境。

  • by gpaterson
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 gpaterson/voice_mcp_integration

使用说明

语音MCP集成

Voice MCP Integration是一个小型端到端原型,用于在Android设备上捕获语音,并在运行VS Code的机器上将其转换为带时间戳的引导文本。

该项目分为两部分:

  • 使用Android内置功能的Android应用程序 SpeechRecognizer 捕捉一键通或始终在线的语音输入。
  • 一个Rust服务器,通过TCP监听可识别的文本,并将每个非空语句写入本地文件。

在实践中,这使您可以在电话上说出简短的命令,并将其作为滚动文本提要落在主机上,可以检查、使用或集成到其他工具中。

运作原理

  1. Android应用程序在设备上本地执行语音转文本。
  2. 最终识别结果通过TCP发送到主机。
  3. Rust服务器为每一行添加时间戳并将其写入 steering.txt.
  4. 输出文件只保留最新配置的行,因此它保持有界。

仓库的规划

  • 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可在 发布 页面。

  1. 下载 app-debug.apk 从最新版本下载到您的Android设备上。
  2. 在您的设备上,启用 从未知来源安装 (设置→ Apps → 特殊应用访问→ 安装未知应用程序,然后允许您的浏览器或文件管理器)。
  3. 打开下载的APK进行安装。
  4. 首次发射时,授予 麦克风 在提示时获得许可。

选项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 assembleDebug

APK将在 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.