Local Voice Service — Deployment Guide

View source on GitHub
Preset

Deploy Speech Service

Deploy a streaming speech recognition (ASR) and voice synthesis (TTS) service on your edge device — Jetson Orin, RK3576, RK3588, or a Pi 5.

What you'll get:

  • Real-time streaming speech recognition (WebSocket)
  • Low-latency voice synthesis (HTTP streaming + batch)
  • Multiple language modes: Chinese+English, English-only, or 52-language Qwen3
  • HTTP + WebSocket API on port 8621

Requirements: SSH access to device · Internet to pull Docker image and download models

1

Deploy Speech Service

Deploy the speech service to your edge device. Models auto-download on first start.

Deployment method

Deploy over SSH to a Jetson Orin. Runs on the GPU, supports multiple languages and voice cloning. Needs at least 7.5 GB of free disk.

Wiring
  1. Connect your Jetson to the network
  2. Enter the Jetson's IP address and SSH credentials
  3. Choose a voice profile from the dropdown
  4. Click Deploy — the system will pull the image and start the service
What you will be asked for(filled in the SenseCraft Solution app)
  • Device IP*
  • SSH Username*default recomputer
  • SSH Password*
4 more with defaults you can keep
  • Voice Profiledefault jetson-zh-en
    5 options
    • · Chinese + English (Paraformer ASR + Matcha TTS, fast)
    • · Multilingual HighPerf (Qwen3 ASR+TTS, 52 languages, Orin Nano)
    • · Multilingual HighPerf NX (Qwen3 ASR+TTS, 52 languages, Orin NX)
    • · Qwen3 ASR + Matcha TTS (multilingual ASR, fast TTS, Orin Nano)
    • · Qwen3 ASR + Matcha TTS NX (multilingual ASR, fast TTS, Orin NX)
  • Language Modedefault en
    2 options
    • · Chinese + English (Matcha TTS + Paraformer ASR)
    • · English Only (Kokoro TTS + Zipformer ASR)
  • TTS Speaker IDdefault 0

    zh_en mode: 0-9, en mode: 0-10 (default 8 = bf_isabella)

  • TTS Speeddefault 0.85

    0.5 = slow, 1.0 = normal, 1.5 = fast

Troubleshooting
IssueSolution
SSH connection failedVerify IP and credentials. Try ssh username@ip from your computer
Image pull slowThe image is ~2 GB compressed. Ensure stable internet on the device
Service not startingCheck logs: ssh user@ip "cd openvoicestream && docker compose logs"
Health check failsFirst startup takes ~40 seconds for model warmup. Wait and retry
Out of memoryEnsure Jetson has 8GB+ RAM and no other GPU tasks running
NVIDIA runtime missingInstall: sudo apt install nvidia-container-toolkit && sudo systemctl restart docker
After Deployment

Service is running at http://<device-ip>:8621. Quick test:

curl http://<device-ip>:8621/health
# Expected: {"asr": true, "tts": true, "streaming_asr": true}

curl -X POST http://<device-ip>:8621/tts \
  -H "Content-Type: application/json" \
  -d '{"text": "Hello, I am your voice assistant.", "sid": 0}' \
  --output test.wav
2

Voice Demo

Try the deployed speech service directly from this page. Enter the device IP address, then use the panels below to test speech recognition and voice synthesis.

Speech Recognition (ASR)

Press and hold the Record button to speak. Your speech will be recognized in real-time and the transcribed text will appear on screen.

Text to Speech (TTS)

Type any text and click Generate to hear it spoken.

Troubleshooting
IssueSolution
Microphone not workingAllow microphone access when prompted by your browser
ASR shows no resultsVerify the service is running: curl http://<ip>:8621/health
TTS playback silentCheck browser audio is not muted. Try a shorter text first
After Deployment

Congratulations! Your local voice service is running.

Quick Verification

  1. Open http://<device-ip>:8621/health in your browser — all fields should show true
  2. Test voice synthesis with the curl command above
  3. Connect your application to the API endpoints

API Reference

EndpointMethodDescription
/healthGETService health check
/asr/streamWebSocketReal-time streaming speech recognition
/ttsPOSTText-to-speech (returns WAV)
/tts/streamPOSTStreaming text-to-speech (returns raw PCM)
/asrPOSTOffline speech recognition (upload WAV file)

Next Steps

  • Connect your LLM to complete the voice assistant pipeline: ASR → LLM → TTS
  • Adjust voice profile from the Devices page after deployment
  • OpenVoiceStream GitHub