mirror of
https://github.com/hanzoai/speech.git
synced 2026-10-04 07:37:19 +00:00
7dc4714dcca40b9645c2557ca7842c8b51c2c4e8
The Ship it step asked for /v1/kms/orgs/<org>/secrets/deploy/UNIVERSE_PIN_TOKEN and read .secret.value. KMS serves /v1/kms/secrets/deploy/... and answers .value: the org is carried by the caller credential, not by the path. Measured, both hosts agree — the served path answers 403 unauthenticated, the /orgs/ form 404s. So 0.1.2 built, pushed, and then died at the pin with curl exit 22 — the image is in the registry and the fleet still serves 0.1.1, which is the exact failure the step was added to prevent, reproduced by the step itself. 0.1.3 carries no service change; the version moves because the guard refuses to rebuild a published tag, and because a pin step is only proven by a release that pins itself. Co-authored-by: Hanzo Dev <[email protected]>
speech
CPU speech for the Hanzo platform: STT (faster-whisper, CTranslate2 int8) and TTS (kokoro-onnx, 82M) behind one OpenAI-shaped surface.
Routes
POST /v1/audio/transcriptions— multipartfile+model(+language,response_format) →{"text": …}POST /v1/audio/speech—{model, input, voice, response_format}→ audio bytes (mp3 default, wav native)GET /v1/models,GET /healthz
Trust model
No auth of its own, in-cluster only. api.hanzo.ai fronts it through the ai
plane, which authenticates and meters every caller — a provider row pointing at
http://speech.hanzo.svc/v1 is the whole integration. Weights bake into the
image at build; the container boots without the network.
Run
uv sync && uv run uvicorn main:app --port 8000
Phase 2 is /v1/realtime: websocket full-duplex (silero-vad segmentation,
partial transcripts, kokoro frames, barge-in) plus camera-frame relay into the
multimodal models.
Description
CPU speech service: STT (faster-whisper) + TTS (kokoro) behind api.hanzo.ai /v1/audio
361 KiB
Languages
Go
98.8%
Dockerfile
1.2%