{
  "schema": "leumas.docs.page/1",
  "id": "adapter:domain/voice",
  "slug": "adapters/domain/voice",
  "kind": "capabilities",
  "bucket": "package",
  "title": "voice (adapter system)",
  "name": "voice",
  "eyebrow": "adapter system",
  "chip": null,
  "summary": "Voice synthesis adapter system: build provider-agnostic TTS/voice requests. Each adapter (say, ssml) validates params and returns a normalized synthesis spec { engine, text/ssml, voice, format } that...",
  "keywords": [
    "voice",
    "ssml",
    "params",
    "synthesis",
    "audio",
    "leumas voice",
    "normalized",
    "backend"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# voice (adapter system)\n\nVoice / TTS **request builder**. Ported from `leumas-middleware/lib/a.voice`. The source was an\nexpress Router that ran adapters to write an audio file on disk; that server, the file-writing ctx\n(`makeOutputPath`/`publicUrl`), and native TTS binaries were stripped. This ports the pure core:\nvalidate params and emit a normalized synthesis spec that a voice backend renders.\n\n## Tools (`adapters`)\n\n| tool | args | result |\n|------|------|--------|\n| `say` | `{ text, voice?, engine?, format?, rate?, pitch? }` | `{ kind:'tts-request', engine, text, voice, format, rate, pitch }` |\n| `ssml` | `{ text, voice?, engine?, format?, rate?, pitch?, lang? }` | `{ kind:'tts-request', engine, ssml, voice, format }` |\n| `listVoices` | — | `{ voices: [...] }` |\n\nSupported formats: `mp3`, `wav`, `ogg`.\n",
  "source": {
    "path": "shared/engines/adapters/domain/voice/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 972,
    "hash": "f2f008f28355beda03ad3d9392f7ccaa330a61c9"
  },
  "urls": {
    "html": "/p/adapters/domain/voice",
    "json": "/docs/adapters/domain/voice.json",
    "md": "/docs/adapters/domain/voice.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  }
}
