Install
openclaw skills install @runware/dialogue-audioGenerate a two-speaker conversation as a single audio file. Use when the user says "make a podcast snippet", "two people talking", "a back-and-forth dialogue", "narrator and character", "interview audio", "an explainer with two voices", or wants speakers trading turns in one clip. One request, two voices, natural turn-taking. For a single narrator, use voiceover. To create or clone the voices themselves, use voice-cloning.
openclaw skills install @runware/dialogue-audioProduce a multi-speaker conversation as one audio file: a podcast snippet, character dialogue, an interview, or an explainer back-and-forth. The lever is inline <|speaker:N|> tags in a single text input mapped to a speech.voices array, so both sides render in one call with automatic turn-taking. For one voice reading straight through, that is voiceover, not this.
0 vs 1. If none specified, pick two that contrast in pitch/cadence.fishaudio:s2.1@pro) - the one model here that renders two speakers in a single audioInference call via inline speaker tags, with per-speaker emotion control. Capability io:text-to-audio, status live.runware-models + runware-run skills before calling - never hardcode a stale choice.runware-run) and confirm speech.text and speech.voices (array) on the live schema.speech.text string, opening with <|speaker:0|> and switching voices with <|speaker:N|> at each turn.speech.voices[0] is <|speaker:0|>, speech.voices[1] is <|speaker:1|>. Use speech.voices (array), not speech.voice (singular) - they are mutually exclusive and sending both errors.audioInference asynchronously and poll getResponse until terminal (audio is a time-based task, don't block a sync call).audioURL and check turn separation and emotion delivery.<|speaker:N|> switches the voice for everything that follows until the next tag. Place tags at the start of a new sentence or thought, never mid-clause, or the voice switch sounds unnatural.<|speaker:0|> explicitly to remove ambiguity.0 and 1 only. The speech.voices array assigns one voice ID to each. There is no third speaker in a single call.[excited] or [whispering] apply to the current speaker only and do not bleed across the turn boundary. Tag only the speaker who needs it, the contrast makes the emotion read. Speaker tags and emotion tags are independent: one sets who talks, the other sets how. The full emotion catalog is a sibling concern (emotion-and-expression in the model guides).speech.text - the whole conversation in one string. Line breaks are optional (\n in JSON); the <|speaker:N|> tags are the only markers needed.speech.voices - array of two voice model IDs, index-mapped to the speaker tags. Mutually exclusive with speech.voice.<|speaker:N|> - N is 0 or 1 only; zero-based and matched positionally to speech.voices.[emotion] - inline bracket tag scoped to the current speaker; optional per turn.runware-run); never guess.runware-run, runware-models, runware-prompting; voiceover (single-voice narration), voice-cloning (custom voice IDs to drop into speech.voices).