Palabra × jambonz
A jambonz custom speech vendor backed by Palabra Realtime STT/TTS: plug Palabra into the jambonz CPaaS as the recognizer and synthesizer of your applications.
/stt(WebSocket, no subprotocol) — jambonz sendsstart(language,format: "raw",encoding: "LINEAR16",sampleRateHz,interimResults), binary linear16 frames, thenstop. Audio is forwarded to Palabra at the call's sample rate (8 kHz telephony as a rule — no resampling); Palabra transcripts come back astranscriptionmessages (interim ones only wheninterimResultsis on). Onstopthe bridge sendsfinalize, delivers the final transcript and closes the socket, as the protocol requires./tts(HTTP POST) — jambonz sends{language, voice, type: "text"|"ssml", text}; the bridge returns the whole utterance asaudio/wav(SSML tags are stripped — Palabra TTS takes plain text)./healthz(GET).
Run
pip install palabra-ai-jambonz-bridge
export PALABRA_API_KEY=plbr_...
export JAMBONZ_API_KEY=... # the API key you enter for the vendor in the jambonz portal
palabra-jambonz-bridge --port 8081
docker run -e PALABRA_API_KEY=plbr_... -e JAMBONZ_API_KEY=... -p 8081:8081 palabra-jambonz-bridge
| Variable | Default | Meaning |
|---|---|---|
PALABRA_API_KEY |
— | Palabra API Key |
JAMBONZ_API_KEY |
— | if set, Authorization: Bearer <key> is required on /stt and /tts |
PALABRA_VOICE_ID |
default_low |
TTS voice when jambonz sends none |
PALABRA_TTS_SAMPLE_RATE |
24000 |
sample rate of the returned WAV (8000–48000) |
PALABRA_FINALIZE_TIMEOUT |
10 |
seconds to wait for the final transcript after stop |
LOG_LEVEL |
INFO |
jambonz configuration
Portal: Speech → Add speech service → vendor "Custom" → name, API key (the same value as
JAMBONZ_API_KEY), STT URL wss://<your-host>/stt, TTS URL https://<your-host>/tts. Applications then
use custom:<name> as the recognizer / synthesizer vendor.
Protocol details
Transcription messages:
{ "type": "transcription", "is_final": true,
"alternatives": [{ "transcript": "...", "confidence": 0.9 }],
"channel": 1, "language": "en-US" }
language echoes the BCP-47 code jambonz sent; Palabra receives the short code (en-US → en).
Palabra does not report confidence, so a constant 0.9 is returned. Errors are
{"type": "error", "error": "..."}. options.hints are accepted and ignored. jambonz's separate
streaming-TTS WebSocket protocol (connect / stream / flush / stop) is not implemented.
Tests
pip install -e ".[dev]"
pytest -m "not live" # offline (fake Palabra client, real FastAPI app)
PALABRA_API_KEY=plbr_... pytest -m live -s # /tts (8 kHz wav) -> /stt round trip against the API
Status
Protocol checked against the current jambonz documentation and the reference custom-speech-example; exercised end-to-end against the Palabra API with a test client playing jambonz's part (8 kHz). Not yet run against a live jambonz. Concurrent calls each open their own Palabra STT session with the same API Key.
Metadata
Release files for palabra-ai-jambonz-bridge 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| palabra_ai_jambonz_bridge-0.1.0.tar.gz | 13.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| palabra_ai_jambonz_bridge-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.3 kB
Release files / palabra_ai_jambonz_bridge-0.1.0.tar.gz
| Download URL | palabra_ai_jambonz_bridge-0.1.0.tar.gz |
|---|---|
| Size | 13.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
447556eb80a8497ae313a5d2707316f334b45be215190471f1050c169e3b3aac
|
|
BLAKE2b-256 checksum How to use checksums |
5c72debb0fa86a7b1fee5b805999d0b385514821ea645efedcedcf04da18e2d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|
Release files / palabra_ai_jambonz_bridge-0.1.0-py3-none-any.whl
| Download URL | palabra_ai_jambonz_bridge-0.1.0-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f0f004ef4a48d13e8a797418f698cd75bf08cdbe1f085d7ab86f8a4ae558531d
|
|
BLAKE2b-256 checksum How to use checksums |
afcdee379dd2599d69e11d1534b51fd3d877cd6ccf0e5121d36a3871c7153a86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|