How to Make a Text-to-Speech Video: A Tested Walkthrough

How to make a video narrated by an AI voice: two ways to set it up, then each step from script to YouTube upload, tested on a real 29-second explainer.

15 min read
A narrated honeybee explainer being assembled from a script, a voice waveform and video clips
On this page

A text-to-speech (TTS) video is a video narrated by a synthetic voice reading a script you typed, instead of a voice you recorded. It suits explainers, tutorials, product demos and training videos, where the words matter more than whose voice says them. You don’t need a microphone or a quiet room, you can fix a sentence by retyping it, and the voice sounds the same in every video.

This guide covers the whole job, from script to upload. To test each step, I made a real video: a 29-second explainer on how honeybees make honey, with an AI narrator, stock footage and a quiet music bed. I built it in Lazybird Studio, the video editor we make, so the screen recordings show Studio. Each step starts with what to do in any tool, then shows what I did and measured.

The finished video: script, AI voice, six stock clips and music. Captions are on the CC button.

What you need

Script

Written to be heard, and sized to the length you want (step 1).

Voice

A TTS voice that fits the topic, or a clone of your own voice.

Visuals

Your own footage, screen recordings, stock clips or images.

Music (optional)

A track you’re licensed to use, mixed well under the voice.

Two ways to set it up

Option 1

An editor with TTS built in

You type the script into the video editor and it generates the speech right on the timeline. Rewrite a line and you regenerate just that clip, already in place.

Good for
Scripts you’ll keep revising, and anyone without an editor yet
Trade-off
You get only the voices that editor offers
Examples
Clipchamp, CapCut, Lazybird Studio

Option 2

A TTS tool, then any editor

You generate the narration as audio files in a TTS app, then import them into the editor you already use and cut the picture to them.

Good for
Editors you already know, or a voice only one service has
Trade-off
Each script change means re-exporting audio and re-syncing cuts
Examples
Any TTS app, plus Premiere Pro, DaVinci Resolve or Final Cut

The steps below work either way. I used option 1, and where a setting is specific to Studio, I say so.

The project at a glance

Script82 words in 5 paragraphs
VoiceAndrew, speed −10%, 0.4 s pause after each paragraph
Narration28.9 s (23.5 s at default settings)
Visuals6 stock clips from Pexels, clip audio muted
Music“Morning Wingbeat” from Studio’s stock library at 15% volume, 1 s fade-in, 2 s fade-out
Export1920×1080 MP4, rendered in about 24 s, plus WAV audio and SRT captions

Step 1: Write for the ear, and budget words by pace

A viewer hears each sentence once, at the narrator’s speed, while also watching the picture. So keep sentences short, give each one a single idea, and size the script by speaking rate rather than by word count alone.

To get a real rate, I rendered my full script with 13 AI voices at default settings. Seven landed between 204 and 214 words per minute (WPM). The whole range was 184 to 266 WPM, with a median of 213.

For comparison, ACX, Amazon’s audiobook marketplace, says most narrators read about 9,300 words per finished hour, which is about 155 WPM. A default AI read is more than a third faster. That works for a quick social clip, but in an explainer, where people also watch the pictures, it feels rushed. Budget the script by the pace you want:

PaceWords per second30 s video60 s video
Default AI voice (~213 WPM)3.6~107 words~213 words
My final settings (~170 WPM)2.8~85 words~170 words
Audiobook pace (~155 WPM)2.6~78 words~155 words

Three habits made the rest of the project easier:

  • One paragraph per shot. Write each paragraph as one idea you can show with one clip. The paragraph breaks then become your cut points.
  • Spell numbers the way they should sound. “About a twelfth of a teaspoon” and “up to three miles” leave nothing to guess. “1/12 tsp” or “3 mi” leaves the reading to the engine.
  • Keep paragraphs short if you’ll reuse them as captions. Many tools make one caption per paragraph, and long ones don’t fit on screen (more in step 6).

In my project

Studio works in blocks: each block is a chunk of script with its own voice settings, its own generated speech and its own caption. Import Script splits a script into blocks for you, by paragraph, by sentence, by line breaks or automatically. Splitting by paragraph turned my five paragraphs into five blocks.

Importing the script with “Split by paragraphs”: five paragraphs, five blocks on the timeline.

Step 2: Pick a voice by comparing the same line

Voice previews usually read different demo text, which makes them hard to compare. Render one line from your own script with each candidate, using the same settings, and listen back to back. I did this with five voices, one of them Morgan Freeman (a cloned voice in our library):

Same line, five voices

“She flies up to three miles from the hive and can visit a hundred flowers on a single trip.”

Andrew Picked

4.68 s · 244 WPM · −20.3 LUFS

Ava

4.51 s · 253 WPM · −18.0 LUFS

Ada

5.05 s · 226 WPM · −15.9 LUFS

Morgan Freeman

5.33 s · 214 WPM · −21.7 LUFS

Serena, default

5.47 s · 208 WPM · −21.9 LUFS

Serena, serious

5.78 s · 197 WPM · −22.4 LUFS

What the comparison showed:

  • The same line, different lengths. The reads ran from 4.51 s (Ava) to 5.47 s (Serena, default style), a 21% spread. On the full script the gap was smaller, from 23.8 s (Serena) to 27.0 s (Morgan Freeman), but that 14% still adds up to about 80 seconds over a 10-minute script, so choose the voice before you cut picture to it.
  • Style changes pace too. With Serena, the serious style read the line 0.31 s slower than the default style (197 vs 208 WPM).
  • Loudness differs. Integrated loudness ran from −15.9 LUFS (Ada) to −22.4 LUFS (Serena, serious style). If two voices take turns in one video, a 6.5 dB gap is noticeable, so even out their volume.
  • One-liners can mislead on pace. Most lines read faster than the same voice on the full script: Andrew 244 vs 206 WPM, Morgan Freeman 214 vs 184. Serena didn’t (208 vs 210), going from the longest default-style line to the shortest full read. A single sentence has no pauses between sentences, so judge pace on a whole paragraph.

I went with Andrew. A calm, unhurried read suits a nature explainer, and at 206 WPM on the full script Andrew was already below the 213 median. Of the 13 voices, only Morgan Freeman (184) and Ada (204) read it more slowly. For more voices and tools, see our comparison of AI voice generators or browse the voice library.

Step 3: Fix the pacing before you cut picture

Most TTS tools let you change the speaking speed, and many let you add pauses. Settle both now: every later step is timed to the narration, so changing the pace after you’ve cut means re-cutting.

My take 1 used default settings. Every word was right, but 82 words in 23.5 seconds is 209 WPM, and the facts ran together: 7 of its 9 pauses were 0.26 s or shorter. For take 2 I slowed the speed by 10% and added a 0.4 s pause after each block:

Take 1

Default settings

23.5 s

Length

209

WPM

2.2 s

Silence

Take 2 · used

−10% speed, 0.4 s pauses

28.9 s

Length

170

WPM

4.9 s

Silence

The narration grew by about 5.3 seconds. Silence went from 2.2 s to 4.9 s, so about half the extra time is pauses and half is slower speech. The pauses land at block boundaries, which are also the shot changes, so every cut gets a breath.

Before moving on, listen through once for misreads, especially names, acronyms and numbers, where the text gives the voice the least to go on. This script had none: a speech-to-text check of the final take matched the script word for word.

In my project

In Studio, ticking Select All above the blocks turns the left panel into Edit Blocks, which changes every block at once. Speed is a slider, and Structural Pauses adds silence before or after each block. Then Generate renders the speech again.

Take 2’s settings applied to all five blocks: speed −10%, a 0.4 s pause after each block, then Generate.

Step 4: Lay the visuals on the narration

Put one shot under each paragraph, and cut on the pauses between them. If the voice is already timed (step 3), this is mostly trimming each clip to the length of its paragraph. Mute the clips’ own sound unless you need it: wind and room noise compete with the voice.

Decide the orientation before you search for clips. Stock libraries mix landscape and portrait clips, and the same timeline doesn’t convert cleanly between the two (see step 6).

In my project

Studio’s Image/Video panel searches Pexels stock footage. Clicking a result adds the clip to the end of the video track at its full length, so each one then needs trimming to its block. The results don’t show how long each clip is. Stretch a clip past its own length and the timeline marks the extra time (“+2.3s”), so pick clips at least as long as their block.

Searching stock video for block 3 and adding a clip. It lands at the end of the video track, full length.
Trimming the clip to the end of block 3, setting its volume from 50% to 0, then playing the block. Recorded on a copy of the project.

Specific searches worked better than broad ones. My queries were “honey bee”, “beehive”, “bees hive entrance”, “bees on honeycomb frame”, “honeycomb”, “capped honeycomb” and “honey dipper”. Running the same search again could return a different set of clips, so add a clip as soon as you find one you like.

Each cut ended up within 0.05 s of the end of its block’s narration:

BlockNarration endsClip cut
1. A twelfth of a teaspoon5.08 s5.07 s
2. Three miles, a hundred flowers11.04 s11.08 s
3. Mouth to mouth, enzymes17.34 s17.33 s
4. Fanning off the water21.52 s21.48 s
5. Sealed with wax, keeps for years28.88 s25.29 s and 28.90 s (two shots, one per sentence)

Stock clips came in at 50% volume. I set all six to 0.

Step 5: Add a music bed, lower than you think

Music should sit well under the voice. The test is simple: you should never have to strain to follow a word. Fade it in and out so the video doesn’t start or end on a hard edge.

In Studio’s Audio panel I searched the stock music for “gentle acoustic” and added “Morning Wingbeat”. I trimmed it to the video’s length, set it to 15% volume, and added a 1 s fade-in and a 2 s fade-out.

Lazybird Studio Edit Block panel for the music track with volume at 15 percent, a 1 second fade-in and a 2 second fade-out
Music settings: 15% volume, with fades at both ends.

To check the balance, I isolated the music from the final mix and measured both tracks. The bed came out at −31.5 LUFS against −19.9 LUFS for the narration, about 11.6 dB under the voice.

Studio plays a music track at one level the whole time: it doesn’t lower it automatically under speech (called ducking). So the bed is as loud under the narration as in the pauses, and you set the level for the spoken parts. A listening check on the final mix found no spot where the music covered the voice.

Step 6: Export the right file for the job

  • Finished video: MP4 at the size of the platform you’re posting to. My 29-second 1920×1080 MP4 rendered in about 24 seconds and came out at 66 MB. I re-encoded it to 6 MB for this page.
  • Finishing in another editor (option 2): export the narration as WAV, which is uncompressed, rather than MP3.
  • Captions: SRT or VTT for YouTube (step 7), or TXT if you want the script back as a document.
Lazybird Studio Export Project dialog with Video, Audio and Transcript tabs, landscape, portrait and square resolutions, and MP4 or MOV format
Studio’s export dialog. Video: landscape, portrait or square, as MP4 or MOV. Audio: MP3, WAV or OGG. Transcript: TXT, DOCX, SRT or VTT.

Portrait from a landscape timeline gets black bars

I also exported the same project as portrait (1080×1920). Studio fitted each landscape clip inside the vertical frame, with black bars above and below, rather than cropping it to fill. For a vertical video, build the timeline from portrait clips. Our TikTok voiceover guide covers that workflow.

The same frame exported as landscape, filling the frame, and as portrait, where the clip is letterboxed with black bars
The same moment in the landscape export (left) and the portrait export (right).

Check the captions before you upload them

The SRT had one caption per block. I checked each one against Netflix’s English style guide: at most two lines of 42 characters, and up to 20 characters per second for adult programs.

#TimeCharsChars/sFits 2 lines?
14.9 s7615.6Yes
26.0 s9115.3No
36.3 s10015.9No
44.2 s6615.8Yes
57.4 s9412.8No

Reading speed was fine throughout, but three of the five captions are too long for two lines. Either split long paragraphs into two blocks before you generate, or split those captions in a caption editor.

Step 7: Before you publish on YouTube

  • Upload the captions. YouTube accepts SRT and VTT files. Only basic SRT is supported, without styling.
  • Know when to disclose AI. YouTube asks creators to disclose realistic AI-generated or altered content: content that makes a real person appear to say or do something they didn’t, alters footage of a real event or place, generates a realistic scene that didn’t happen, or creates music that is the main focus of the video. It lists cloning your own voice for voiceovers or dubs as an edit that doesn’t need disclosure. A narrator that imitates a real person falls under the first case.
  • Write your own script. YouTube’s monetization policies don’t single out AI voices. They exclude “mass-produced, generic, repetitive” content and, under reused content, videos that only feature “readings of other materials you did not originally create, like text from websites or news feeds”. An AI voice reading your own script is a different thing from an AI voice reading someone else’s article.

What I’d do differently next time

  • Start explainers at −10% speed with 0.4 s pauses, instead of fixing the pace on a second take.
  • Keep each paragraph under about 84 characters, or split it into two blocks, so every caption fits on two lines.
  • Choose landscape or portrait before searching for clips, and only pick clips at least as long as their paragraph.

To try this workflow, Lazybird Studio has the script blocks, voices, stock footage, music and export used here. If you’d rather narrate with your own voice, our voice-over recording guide covers that.

FAQ

How many words do I need for a one-minute video?

About 155 to 215, depending on the pace. AI voices at default settings read about 213 WPM (the median of the 13 I measured), so 60 seconds holds roughly 213 words. For a calmer explainer at −10% speed with short pauses, plan about 170.

Can I add text to speech to a video I’ve already edited?

Yes. Generate the narration in a TTS tool, export it as WAV, and place it on an audio track in your editor (option 2 above). Time each paragraph to its shot, and mute or lower the original audio under it.

Can I monetize YouTube videos that use an AI voice?

YouTube’s monetization policies don’t ban AI voices. What they exclude is mass-produced, templated or repetitive content, and videos that just read material you didn’t create. Write an original script, and the voice isn’t the problem.

Do I have to disclose an AI voiceover on YouTube?

You do if the result is realistic AI content: for example, a voice that makes a real person seem to say something they didn’t. YouTube lists cloning your own voice for voiceovers or dubs as not needing disclosure. AI-generated music that is the main focus of a video does need it.

Can I narrate with a clone of my own voice?

Yes, if your tool supports voice cloning; Studio has a Voice Cloning section for this. Under YouTube’s policy above, cloning your own voice for a voiceover doesn’t need disclosure.

Should I export MP4 or MOV?

MP4, unless your editing workflow asks for MOV. MP4 is the more widely supported of the two, and it’s what I exported here.

Keep reading

All articles →

Give your next video a voice

Natural, celebrity and character voices. Or clone your own.