diff --git a/docs/asset-engine/services.schema.json b/docs/asset-engine/services.schema.json index 5949afe..c1242ae 100644 --- a/docs/asset-engine/services.schema.json +++ b/docs/asset-engine/services.schema.json @@ -589,6 +589,11 @@ "title": "Content Type", "type": "string" }, + "streamable": { + "default": false, + "title": "Streamable", + "type": "boolean" + }, "model": { "$ref": "#/$defs/CatalogModel" }, diff --git a/docs/asset-engine/services.yaml b/docs/asset-engine/services.yaml index ed4d811..2ed8270 100644 --- a/docs/asset-engine/services.yaml +++ b/docs/asset-engine/services.yaml @@ -379,6 +379,132 @@ services: and deliberately NOT adopted. Python 3.10 only (wrapper hardcoding); multilingual (23-language) variant available via the stack .env. + - id: chatterbox-fast + name: Chatterbox Fast (streaming) + description: > + Custom streaming front-end for Chatterbox-Turbo: an adaptive buffer-ratchet + chunker emits the first sentence immediately (~0.5s time-to-first-audio vs + ~5s one-shot), then ratchets chunk size up on the model's realtime headroom. + Single-stream interactive. Same Turbo voice + inline paralinguistic tags as + `chatterbox`; the win is sub-second start for streaming consumers. + category: tts + version: 1 + status: experimental + host: irv-ml1 + lifecycle: + stack: chatterbox-fast + vram_gb: 6 + gpu_device_id: 1 + endpoint: http://10.100.79.3:8197/tts + method: POST + content_type: application/json + streamable: true + model: + id: ResembleAI/chatterbox-turbo + revision: null + image: local/chatterbox-fast:v1 + section_groups: + - id: basic + label: Text & voice + - id: sampling + label: Sampling + fields: + - name: text + type: textarea + label: Text (with optional [tags]) + section: basic + required: true + max_length: 5000 + description: > + Inline paralinguistic tags honored by Turbo ([laugh] [whispers] [sigh] + etc.). Adaptive-chunking splits on sentence boundaries; a very long + comma-less sentence may show a faint join seam. + - name: voice + type: select + label: Voice + section: basic + default: glados_25s + source_url: http://10.100.79.3:8197/voices + source_jsonpath: $.voices[*] + description: > + Predefined voice (a *.wav stem under /worktank/chatterbox/reference_audio, + shared with the chatterbox stack). Live-enumerated via /voices. Clone + references are passable as an absolute path via the API (not listed here). + - name: temperature + type: slider + section: sampling + min: 0.05 + max: 2.0 + step: 0.05 + default: 0.8 + description: Sampling temperature; lower = steadier. Turbo default 0.8. + - name: top_p + type: slider + section: sampling + min: 0.0 + max: 1.0 + step: 0.05 + default: 0.95 + description: Nucleus sampling cutoff. Spike-validated default 0.95. + - name: top_k + type: number + section: sampling + required: false + default: 1000 + description: Top-k sampling cutoff. Spike-validated default 1000. + - name: repetition_penalty + type: slider + section: sampling + min: 1.0 + max: 2.0 + step: 0.05 + default: 1.2 + description: Penalize token repetition. Spike-validated default 1.2. + - name: seed + type: number + section: sampling + required: false + default: 0 + description: > + 0 = random. A fixed seed repeats a one-shot take (verified byte-exact). + Streaming output is NOT reproducible — adaptive-chunk boundaries depend + on the live-measured realtime factor. + - name: format + type: select + section: basic + options: [pcm, wav] + default: pcm + description: > + pcm = raw s16le @ 24 kHz (lowest latency, for API consumers); wav adds a + header. The streaming-audition UI forces wav for the browser