# Local speech: OmniVoice

Use `operation: speech.generate`, `profile: omnivoice`, with the text itself in
`prompt`. Choose `language: english`, `russian` or `auto`. Maximum 1000 characters
per job; split longer narration at sentence boundaries.

Optional `voice_description` is a comma-separated list of supported voice tags,
not arbitrary prose. Read `voice_tags` in capabilities and choose at most one tag
per group, e.g. `female, middle-aged, moderate pitch`. Optional `assets.audio`
is an uploaded voice reference. Only use references the user is authorized to use.

```json
{
  "operation": "speech.generate",
  "profile": "omnivoice",
  "prompt": "The rain has stopped. It is time to go.",
  "language": "english",
  "voice_description": "female, middle-aged, moderate pitch",
  "seed": 41002
}
```

Listen before using speech as a video input. Keep wording short enough for the
video. Upload/download assets as usual: the completed speech output asset ID can
be reused directly as `assets.audio` for a subsequent video job by the same owner.
Use `condition` for audio-driven video or `attach` for a soundtrack only. Do not
pass `language`/`voice_description` to `video.generate`; they are speech settings.

Default 32 steps, guidance 2, temperature 0.1. Only the tuning fields listed by
the contract are exposed. MAI is not enabled; music and SFX are in development.
