Install
$ agentstack add mcp-speak-rs-speakly ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Speakly
[](https://github.com/speak-rs/speakly/actions) [](LICENSE) [](https://www.rust-lang.org)
High-performance, extensible speech recognition in Rust. Use local Whisper or cloud APIs (OpenAI, Google, Doubao) as a library, CLI, MCP server, or desktop GUI.
[中文](README.zh-CN.md)
Why Speakly?
| Feature | whisper-rs | transcribe-rs | Speakly | |---------|:----------:|:-------------:|:-----------:| | Local Whisper engine | ✅ | ✅ | ✅ | | Cloud providers (OpenAI / Google / Doubao) | ❌ | ❌ | ✅ | | Auto fallback across providers | ❌ | ❌ | ✅ | | Retry with exponential backoff | ❌ | ❌ | ✅ | | MCP server (Cursor / Claude) | ❌ | ❌ | ✅ | | Desktop GUI with waveform | ❌ | ❌ | ✅ | | CLI with batch + SRT output | ❌ | ✅ | ✅ | | In-app settings (no config file) | ❌ | ❌ | ✅ |
Quick start
cargo build --release
# Transcribe a file (uses OpenAI by default)
./target/release/speakly transcribe audio.wav
# Desktop GUI (real-time recording)
./target/release/speakly-gui
# MCP server (for Cursor / Claude)
./target/release/speakly-mcp --stdio
Enable local Whisper (optional)
Local Whisper runs entirely offline via whisper.cpp. It requires cmake to compile:
# macOS
brew install cmake
# Ubuntu / Debian
sudo apt install cmake
# Build with the whisper feature
cargo build --release --features whisper
# Download a Whisper model (~142 MB)
make model
As a library
[dependencies]
speakly-core = { version = "0.1", features = ["openai"] }
tokio = { version = "1", features = ["full"] }
use speakly_core::prelude::*;
#[tokio::main]
async fn main() -> Result {
let speakly = Speakly::new()?;
let result = speakly.transcribe_file("audio.wav").await?;
println!("{}", result.text);
Ok(())
}
Engines
| Engine | Type | Notes | Feature flag | |--------|------|-------|-------------| | Whisper | Local | Offline, 99+ languages, requires cmake | whisper | | OpenAI | Cloud | High accuracy | openai (default) | | Google | Cloud | Streaming, 120+ languages | google | | Doubao | Cloud | Optimized for Chinese | doubao |
Configuration
Use .speakly.toml in the project root or ~/.config/speakly.toml:
[speakly]
default_provider = "openai"
[providers.openai]
enabled = true
api_key_env = "OPENAI_API_KEY"
[providers.whisper]
enabled = true
model_path = "./models/ggml-base.bin"
language = "auto"
threads = 4
[audio]
sample_rate = 16000
channels = 1
enable_vad = true
Cloud engine setup
OpenAI
- Get an API key from platform.openai.com.
export OPENAI_API_KEY=sk-your-key- Set
[providers.openai]withenabled = truein.speakly.toml.
Google Cloud Speech-to-Text
- Enable the Speech-to-Text API and create a service account key.
- Save as
google-credentials.json, setexport GOOGLE_ACCESS_TOKEN=... - Set
[providers.google]withenabled = true.
ByteDance Doubao
- Get credentials from Volc Engine.
export DOUBAO_API_KEY=key && export DOUBAO_APP_ID=id- Set
[providers.doubao]withenabled = true.
CLI
speakly transcribe audio.wav
speakly transcribe audio.wav --provider openai --language zh
speakly transcribe audio.wav -f srt
speakly transcribe *.wav --output-dir ./out
speakly providers
MCP Server
Add to Cursor's .cursor/mcp-settings.json:
{
"mcpServers": {
"speakly": {
"command": "/path/to/speakly-mcp",
"args": ["--stdio"]
}
}
}
Tools: transcribe_audio_file, list_providers.
Project layout
- speakly-core — Library (audio processing, provider abstraction, config)
- speakly-cli — Command-line tool
- speakly-mcp — MCP server for Cursor / Claude
- speakly-gui — Desktop app (egui + cpal, Catppuccin theme)
- examples/ — Usage examples
Development
make check # Compile check
make test # Run tests
make fmt # Format code
make help # List all targets
Docs
- [Architecture](ARCHITECTURE.md)
- [Providers](PROVIDERS.md)
- [MCP guide](MCP_GUIDE.md)
- [Contributing](CONTRIBUTING.md)
- [Changelog](CHANGELOG.md)
License
[MIT](LICENSE)
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: speak-rs
- Source: speak-rs/speakly
- License: MIT
- Homepage: https://github.com/speak-rs/speakly
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.