Speech-to-speech contracts
Step-oriented and event-stream voice interfaces give hosted realtime APIs, local STS models, native ASR/TTS engines, and sidecar transports one coherent Rust boundary.
Vona is the Rust runtime layer for voice-native products: fast, provider-neutral speech infrastructure with native Moonshine ASR, wake admission, local Ollama text routing, realtime TTS policy, deterministic interruption tests, and transport-ready session orchestration.
Vona owns the reusable runtime boundary: sessions, frames, tools, generation, fallback decisions, and backend-neutral contracts. Your product owns the experience, policy, and deployment.
Step-oriented and event-stream voice interfaces give hosted realtime APIs, local STS models, native ASR/TTS engines, and sidecar transports one coherent Rust boundary.
Measure time-to-first-audio, tool calls, interruption behavior, output frames after barge-in, and fallback decisions in tests before users discover the edge cases.
Run Moonshine ASR through a native binding or protected worker, keep MLX speech experiments isolated, and route realtime TTS through configurable Kokoro, Piper, Qwen3, or custom adapters.
Skill registries, schema validation, audit events, and external context injection let voice systems coordinate with application tools while keeping runtime policy explicit.
Vona’s current local-first path uses native Moonshine ASR for the hot turn-taking loop, configurable transcript hotwords for domain vocabulary, and clean provider boundaries so applications can add cloud fallback only where policy allows it.
Direct libmoonshine loading for low-latency Apple Silicon
recognition, with a protected persistent worker when isolation
matters more than single-process speed.
Runtime-configured transcript variants help local models keep product names, user vocabulary, and technical terms stable.
Local ASR remains the default path while hosted providers stay behind explicit routing, consent, cost, and quality decisions.
Manifest-driven corpus scoring reports WER, real-time factor, p95 latency, category rollups, and whether the evidence is generated or human-recorded.
Vona Wake is a Rust hot-path gate that keeps microphone audio local and withheld until phrase evidence, speaker identity, privacy state, barge-in policy, and timing all agree that a session should open.
App-owned profiles can make “authorized speaker said it” the release condition, not merely “the phrase appeared.”
A tiny always-on state machine with pre-roll release keeps the assistant responsive without streaming everything downstream.
Generated regression, human corpus audits, threshold selection, and packaged evidence keep reliability claims honest.
Vona is designed for mixed reality: one app can explore local Moshi and Seamless-style paths, native Moonshine ASR, local Ollama text reasoning, cloud realtime protocols, STT/TTS cascades, and sidecar deployments without hard-coding its future to a single provider.
Vona’s deterministic harnesses make the slippery parts of speech runtime behavior observable: event order, first audio, tool calls, interruption cleanup, local ASR accuracy, generated versus human-recorded corpus evidence, fallback paths, and transport latency.
$ cargo run -p vona-test-harness --example mock_session --locked
session_id=mock-session-1
close_reason=BackendFinished
metrics time_to_first_audio_ms=Some(0) tool_calls=1 interruptions=1 fallback_count=0
output_frames_after_interruption=0
injected_events=1
$ bash scripts/release_gate.sh
[release-gate] Release gate PASSED
Use the umbrella crate for applications, then enable only the adapters you actually ship. Drop lower when you need direct crate boundaries for Moonshine ASR, Ollama text, Kokoro realtime TTS, wake admission, or MLX speech experiments.
[dependencies]
vona = { version = "0.2.0", features = [
"ollama",
"moonshine",
"kokoro-onnx",
"wake",
"openai-realtime",
] }