55 lines
2.2 KiB
Markdown
55 lines
2.2 KiB
Markdown
---
|
|
title: HF Realtime Voice
|
|
emoji: 🎙️
|
|
colorFrom: indigo
|
|
colorTo: purple
|
|
sdk: docker
|
|
app_port: 7860
|
|
pinned: false
|
|
short_description: Voice chat over WebSocket against a HF speech-to-speech
|
|
hf_oauth: true
|
|
---
|
|
|
|
# Realtime voice backend and retained static client
|
|
|
|
FastAPI server and retained static voice-chat UI for an OpenAI Realtime-compatible
|
|
speech-to-speech backend. The browser streams microphone audio over WebSocket,
|
|
plays assistant audio, displays transcripts, and offers Spanish controls.
|
|
|
|
The root `start_ui.sh` now serves the [React frontend](../frontend-s2s) with
|
|
Vite on public port `8420`, proxying backend requests here on loopback port
|
|
`8421`. This directory's static UI remains available when FastAPI is run
|
|
directly or through the existing Docker image.
|
|
|
|
The complete [usage guide](../docs/client/usage.md) covers local startup,
|
|
connection modes, Docker, settings, and usage limits. See the
|
|
[documentation index](../docs/README.md), [architecture](../docs/client/architecture.md),
|
|
and [change history](CHANGELOG.md) for implementation details and history.
|
|
|
|
The retained static client's assistant replies render Markdown with Marked and
|
|
DOMPurify. Their pinned, checked-in browser modules are served from `vendor/`, including upstream
|
|
licenses, so the UI does not require a CDN or a Node.js runtime. To refresh the
|
|
browser dependencies with Node.js 20 or newer after updating `package.json`:
|
|
|
|
```bash
|
|
cd s2s-client
|
|
npm install --ignore-scripts
|
|
npm run vendor
|
|
```
|
|
|
|
Commit `package-lock.json` and the generated `vendor/` files together. Existing
|
|
locked versions can be restored with `npm ci --ignore-scripts`.
|
|
|
|
Build from the repository root so the container includes the documentation:
|
|
|
|
```bash
|
|
docker build -f s2s-client/Dockerfile -t s2s-client .
|
|
```
|
|
|
|
FastAPI's API explorer remains at `/docs`. Project documents are served as files below
|
|
`/docs/client/`, `/docs/speech/`, `/docs/adr/`, `/docs/examples/`, and
|
|
`/docs/proposals/`. The historical `/project/` and `/public/docs.html` URLs
|
|
redirect to the retained architecture proposal. Markdown remains source text;
|
|
documentation directories are not browsable rendered pages. Start from the
|
|
repository documentation index or request `/docs/README.md` explicitly.
|