Skip to content
Notifications
Clear all

Step-by-step: Creating a multi-voice dialogue for a training video.

3 Posts
3 Users
0 Reactions
3 Views
(@brianw5)
Estimable Member
Joined: 1 week ago
Posts: 75
Topic starter   [#18532]

Hey everyone! 👋

I've been deep in the weeds this week using WellSaid Labs to generate voiceovers for a new internal Kubernetes training series, and I hit a really interesting use case: creating a believable, multi-voice dialogue between an instructor and a student. It wasn't as straightforward as I'd hoped, but the results are fantastic once you nail the workflow. I figured I'd document my step-by-step process here, as it involves some specific tricks with SSML, pacing, and project organization that others might find useful.

My goal was to script a 5-minute segment where "Mason" (the calm instructor voice) explains a GitOps concept, and "Ava" (the curious, slightly higher-pitch voice) asks clarifying questions. The natural back-and-forth was key to keeping the video engaging.

Here’s my battle-tested workflow:

**1. Script Preparation is 80% of the Work**
You can't just feed a continuous script. I structured my script in a spreadsheet first:
- **Column A:** Speaker (e.g., `mason`, `ava`)
- **Column B:** The exact line of dialogue
- **Column C:** Specific SSML tags or notes (e.g., ``, "sound slightly puzzled")
This makes it manageable to generate and assemble later.

**2. Leveraging SSML for Natural Flow**
WellSaid's SSML support is your best friend here. To create a natural pause between speakers *within a single audio file*, I generated one voice's line, then used a long break tag before the other voice's line in the same request. This avoids perfectly seamless cuts that sound unnatural.

Example of a single request for a combined snippet:
```xml

So, the Flux controller is constantly reconciling the actual state with the desired state in git.

So it's like a loop that never ends, checking for drift?

```
The `1.2s` break feels like a realistic listener reaction time. You have to experiment with these timings.

**3. Project Organization in the WellSaid Studio**
I created a separate "Project" for the training video. Inside, I made **a Folder for each character**. This way, all of Mason's lines are together, and all of Ava's are together. When you need to re-generate a single line with a different tone, you can find it instantly without sifting through a monolithic list.

**4. The Assembly Phase**
After generating all audio snippets (I did each dialogue exchange as a separate file for safety), I downloaded them. I use a simple video editor (DaVinci Resolve) for the final assembly. I lay down the audio tracks first, on two separate lanes, aligning them based on my script timing. This allows me to adjust volume levels per character if needed and add subtle background music underneath.

**Pitfalls I Encountered (and Solutions):**
* **Tone Consistency:** Asking Ava to sound "curious" every single time in the prompt is crucial. Don't assume the AI remembers the context from previous lines in the same project.
* **Listening for Artifacts:** Sometimes, the pause between sentences within a *single* line can feel too robotic. I often broke longer explanations into two separate generation requests to get better intonation.
* **Naming Files:** Use a clear naming convention! `scene1_mason_line2.wav` saved me hours.

The final video feels dynamic and holds attention much better than a single-voice monologue. The ability to assign distinct, consistent voices to different "roles" in an educational video is a game-changer for internal content creation.

Has anyone else tried building conversational audio with WellSaid? I'm curious if you used a different method for sequencing, or if you've integrated this pipeline into a bigger CI/CD workflow for auto-generating training materials 🤔.

bw


Automate all the things.


   
Quote
(@dannyz)
Trusted Member
Joined: 1 week ago
Posts: 44
 

Oh wow, that's a really clever way to organize the script in a spreadsheet first. I never would have thought of that.

> Script Preparation is 80% of the Work

That makes total sense. I tried making a simple two-person dialogue last month in a different tool and the voices just ran together. It was a mess. Does using separate columns for the speaker and the SSML notes help you keep the different "character" voices sounding distinct later on? I'm still figuring out what SSML can actually do.

Looking forward to seeing the rest of your steps!



   
ReplyQuote
(@amyw)
Trusted Member
Joined: 4 days ago
Posts: 30
 

That spreadsheet trick is such a good idea. I've used a similar structure for web performance explainer videos, but with an extra column for timing notes to fit a specific video segment. One thing I'd add: if you're generating the audio files separately, maybe add a "File Name" column right from the start, something like `scene1_mason_line1.wav`. Saves a ton of headache later during editing when you have fifty clips.


measure twice, ship once


   
ReplyQuote