Vocero speech-to-speech
Vocero provides a browser voice interface, a Python speech pipeline, and an optional Node-RED reasoning service. The interface defaults to Spanish; documentation, source identifiers, comments, and internal instructions use English.
| Component | Purpose |
|---|---|
| s2s-client | Browser UI, FastAPI server, realtime WebSocket proxy, search and ApiPilot bridges |
| speech_to_speech | Queue-driven VAD, speech recognition, language model, and speech synthesis pipeline |
| s2s-reasoning-engine | Optional Node-RED HTTP reasoning and conversation logging flows |
Start with client setup and usage, then read the
architecture and documentation index.
The speech backend needs its own installed model and runtime dependencies;
s2s-client/requirements.txt installs only the UI server dependencies.
Run the browser client
From the repository root, point the client at an existing realtime backend:
SPEECH_TO_SPEECH_URL=ws://localhost:8765/v1/realtime ./start_ui.sh
Open http://localhost:8420/ and allow microphone access. The launcher creates
.venv, installs missing UI requirements, loads the root .env if present, and
starts the server. For the local WebSocket proxy instead of a direct browser
connection, configure S2S_PROXY_TARGET and leave SPEECH_TO_SPEECH_URL unset.
To build the UI container, use the repository root as the Docker build context so the root documentation is included:
docker build -f s2s-client/Dockerfile -t s2s-client .
docker run --rm -p 7860:7860 \
-e SPEECH_TO_SPEECH_URL=ws://localhost:8765/v1/realtime s2s-client
The direct WebSocket URL is resolved by the user's browser. For a server-side proxy deployment, supply a backend address reachable from the container instead.