dialogue-audio
Skill8 starsChanged 5 months agoMITView on GitHub
Generate 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.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- AngelescuCiprian/claude-skillstheir own version, first seen Aug 22, 2026
- nikunj812/claude-skilltheir own version, first seen Jul 1, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- AngelescuCiprian/claude-skills★ 0same name
- nikunj812/claude-skill★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository32 other files it gives its agents.
- add-audio-to-videoSkill
- animate-imageSkill
- bring-your-own-modelSkill
- character-consistencySkill
- cinematic-videoSkill
- composite-sceneSkill
- controlled-generationSkill
- edit-imageSkill
- edit-videoSkill
- game-assets-2dSkill
- image-to-3d-assetSkill
- llm-agentSkill
- logos-and-vectorsSkill
- multi-shot-videoSkill
- musicSkill
- photoreal-stillsSkill
- product-ad-videoSkill
- product-photographySkill
- reframe-videoSkill
- replace-in-videoSkill
- restore-and-upscaleSkill
- runware-modelsSkill
- runware-promptingSkill
- runware-runSkill
- talking-avatarSkill
- text-in-imageSkill
- train-style-modelSkill
- ugc-adSkill
- video-upscaleSkill
- vision-understandingSkill
- voice-cloningSkill
- voiceoverSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 31
Write the full conversation into one speech.text string, opening with <|speaker:0|> and switching voices with <|speaker:N|> at each turn.
- Very specific: line 33
Run audioInference asynchronously and poll getResponse until terminal (audio is a time-based task, don't block a sync call).
- Very specific: line 34
Read the result from audioURL and check turn separation and emotion delivery.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Dialogue audio
Produce 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.
Inputs to collect
- The script, written as alternating turns for two speakers. (Ask for it if the user only gave a topic.)
- The two voices (voice model IDs) and which speaker is index
0vs1. If none specified, pick two that contrast in pitch/cadence. - Per-turn emotion, if any (excited, surprised, whispering). Optional, tag only the turns that need it.
- Optional: language (the model auto-detects and supports 80+) and output format.
Models
- Default: Fish Audio S2.1 Pro (
fishaudio:s2.1@pro) - the one model here that renders two speakers in a singleaudioInferencecall via inline speaker tags, with per-speaker emotion control. Capabilityio:text-to-audio, statuslive. - This is a model-specific feature, not a generic TTS one. Other text-to-audio models do one voice per request and would need separate calls plus downstream stitching.
- Confirm the live model + its schema via the
runware-models+runware-runskills before calling - never hardcode a stale choice.
Workflow
- Resolve the model schema (
runware-run) and confirmspeech.textandspeech.voices(array) on the live schema. - Write the full conversation into one
speech.textstring, opening with<|speaker:0|>and switching voices with<|speaker:N|>at each turn. - Map voices:
speech.voices[0]is<|speaker:0|>,speech.voices[1]is<|speaker:1|>. Usespeech.voices(array), notspeech.voice(singular) - they are mutually exclusive and sending both errors. - Run
audioInferenceasynchronously and pollgetResponseuntil terminal (audio is a time-based task, don't block a sync call). - Read the result from
audioURLand check turn separation and emotion delivery.
Technique
- Tag at turn boundaries.
<|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. - Open with a tag. The model defaults to speaker 0 if the text starts untagged. Lead with
<|speaker:0|>explicitly to remove ambiguity. - Exactly two speakers. Indices
0and1only. Thespeech.voicesarray assigns one voice ID to each. There is no third speaker in a single call. - Emotion is per-speaker. Bracket tags like
[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-expressionin the model guides). - Turn-taking is automatic. The model paces pauses between speakers and adjusts pacing per speaker, so asymmetric turn lengths (a short question, a long answer) work without manual timing.
- Patterns: technical back-and-forth (no emotion tags when content carries it), podcast (longer multi-sentence turns), interview (short ask, long answer), narrator + character (one third-person voice, one first-person voice with emotion tags).
Parameters that matter
speech.text- the whole conversation in one string. Line breaks are optional (\nin 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 withspeech.voice.<|speaker:N|>-Nis0or1only; zero-based and matched positionally tospeech.voices.[emotion]- inline bracket tag scoped to the current speaker; optional per turn.- Confirm exact field names against the live schema (
runware-run); never guess.
Quality bar
- Two voices are clearly distinct; turns are correctly attributed (speaker 0 vs 1 not swapped).
- Voices contrast enough that the conversation does not sound like one person. Pick a lower-register and a higher-register voice if separation is weak.
- Turns are long enough (aim one full sentence each) to establish each voice; two-word turns blur the speakers.
- Emotion lands on the intended speaker only, with no bleed into the other's turn. Retry with clearer tags or contrasting voices if speakers merge.
Related skills
runware-run, runware-models, runware-prompting; voiceover (single-voice narration), voice-cloning (custom voice IDs to drop into speech.voices).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

