qvib.pro
RU

Voiced video without a camera

What for: build a faceless short (Shorts/Reels) from idea to finished file — script, AI voiceover, visuals, subtitles, edit — without showing your face.

бесплатно новичок

Updated: 02.07.2026

$ ffmpeg -loop 1 -i bg.png -i voice.mp3 \ -vf "scale=1080:1920:force_original…
Voiced video without a camera

The principle of the video (more important than its style): hook in 2–3 sec → retention → CTA. Vertical 9:16 format, cuts that follow the meaning, subtitles, finished off with ffmpeg. Any AI mentor will do; the specific services are interchangeable — stick to the pipeline, not the buttons.

🧭 The big picture

What you end up with: a finished vertical video, final.mp4 (1080×1920), with an AI voiceover, images/footage and burned-in subtitles — no filming yourself, no studio, on almost entirely free tools. Ready to upload to Shorts/Reels/TikTok.

Why this way. Short video runs on strict dramaturgy: the first 2–3 seconds decide whether people watch on (the hook), the middle holds them, and the end has the call to action (CTA: subscribe/comment/link). Most people watch with the sound off — which is why subtitles are mandatory. You don't need a face: "faceless" means voice + visuals.

A six-step pipeline: topic/hook → script → voiceover → footage → subtitles → edit. Swap tools inside the steps freely — it's the sequence that matters.

💡 Set up a working folder and put all the files in it (voice.mp3, bg.png, subs.srt) — that keeps the ffmpeg commands short and free of path confusion.


Step 1. Topic and hook

What we're doing: one clear idea for the video plus a strong hook for the first 2–3 seconds (a question / a promise / a conflict).

🤖 "Give me 10 hooks (the first 3 seconds) for a Short about <…>. The goal is retention. Short, conversational."

How to tell it worked: the hook grabs you within 3 seconds and promises a benefit or intrigue ("Never do X if…", "3 mistakes in Y"). Read it out loud — if you want to keep listening, it works.

Common mistakes:

  • A long intro — "hi everyone, today we're going to talk about…" — and the viewer is gone. Get to the point from the first second.
  • A topic "about everything" — there's no single idea. One video = one idea.

Step 2. Script

What we're doing: the structure hook → 3–5 short meaning blocks → CTA. Built for vertical and 30–60 seconds (≈90–150 words).

🤖 "Write a script for a 45-second vertical video about <…>: hook, body in bullet points, CTA. Plain language, short phrases — it's for a voiceover."

How to tell it worked: read aloud, the text takes exactly the time you need (≈140 words/min of conversational speech → 45 sec ≈ 100 words). Short phrases, no convoluted clauses — otherwise a synthetic voice will stumble.

Common mistakes:

  • Long complex sentences → the robot voice sounds unnatural. Break them into short ones.
  • No CTA → the viewer doesn't know what to do next. Finish with one clear action.

Step 3. Voiceover (TTS)

What we're doing: running the text through speech synthesis and saving voice.mp3. Options: cloud TTS (ElevenLabs and similar — the most lifelike voices) or offline/open models (free). Listen to the result: wherever it sounds robotic, break the sentence up and place pauses with commas and periods.

💡 No camera and no voice of your own — you take a ready-made synthetic voice. The same voice across all your videos = a recognizable channel.

How to tell it worked: voice.mp3 sounds even, with no swallowed words or robotic jumps; stress falls correctly on the key words.

Common mistakes:

  • Wrong stress in names/terms — respell the word phonetically or use pause/stress markup if the engine supports it.
  • Too fast a pace — the viewer can't keep up. Slow it down in the voice settings.

Step 4. Footage / images

What we're doing: a shot for every block: B-roll (stock), images from image models (Nano Banana / FLUX / Ideogram), a screencast or a simple "moving text" on a background.

🤖 "Put together a visual plan: for each block of the script, what to show on screen (b-roll / screenshot / image prompt). As a bullet list."

How to tell it worked: every meaning block has its own visual; the images are vertical or crop sanely to 9:16; nothing sits static for more than 3–4 seconds.

Common mistakes:

  • Horizontal images in a vertical frame → black bars. Take or generate them at 9:16 from the start, or crop (crop in ffmpeg, see step 6).
  • Too much small text on an image — unreadable on a phone.

Step 5. Subtitles (mandatory for Shorts)

What we're doing: generating timings with speech recognition (Whisper) → a subs.srt file. Whisper listens to your voiceover and produces text with timecodes. Most people watch with the sound off — subtitles hold their attention.

🤖 "How do I turn a finished voice.mp3 voiceover into .srt subtitles with Whisper and burn them into a vertical video? Give me the commands step by step."

How to tell it worked: open subs.srt — it has lines with timecodes (00:00:01,200 --> 00:00:03,800) and correct text matching the voiceover.

Common mistakes:

  • Whisper detected the wrong language → subtitle soup. Specify the language explicitly (the language parameter).
  • Long subtitle lines don't fit the width — break them into short phrases.

Step 6. Edit and finish (ffmpeg)

What we're doing: assembling the track (footage + voiceover + subtitles) and cropping to 9:16. Example: gluing one image and the audio into a 1080×1920 video.

ffmpeg -loop 1 -i bg.png -i voice.mp3 \
  -vf "scale=1080:1920:force_original_aspect_ratio=cover,crop=1080:1920" \
  -c:v libx264 -tune stillimage -c:a aac -b:a 192k -shortest out.mp4

Burn (hardcode) the subtitles into the picture:

ffmpeg -i out.mp4 -vf "subtitles=subs.srt" final.mp4

How to tell it worked: open final.mp4 — the video is vertical 1080×1920, the sound is in sync, the subtitles are readable on screen. The duration matches the voiceover (-shortest trims to the shorter track).

Common mistakes:

  • ffmpeg: command not found — it isn't installed. macOS: brew install ffmpeg; Windows: winget install ffmpeg (or download from ffmpeg.org); Ubuntu: sudo apt install ffmpeg.
  • The video isn't vertical / there are black bars — check scale=...:force_original_aspect_ratio=cover + crop=1080:1920.
  • The subtitles didn't show up — the subtitles filter requires subs.srt to be in the current folder; escape paths with spaces or non-Latin characters (put subtitles=subs.srt in quotes).
  • The audio drifts out of sync or cuts off — make sure -shortest and the voiceover length match your intent.

🧠 For the senior

  • Subtitle styling: karaoke/dynamic captions (word by word) lift retention substantially — subtitles=subs.ass (ASS format) with a custom font/outline, or force_style with FontName/Outline.
  • Loudness and the "phone" mix: normalize with loudnorm (EBU R128) — consistent loudness across all your videos, not clipped by the platform.
  • Footage from several clips: the concat demuxer or a filtergraph; scale+crop to 1080×1920 for each source; a gentle zoom effect (Ken Burns) via zoompan brings static shots to life.
  • In batches: wrap the pipeline in a script (bash/Python): text → TTS API → Whisper → ffmpeg assembly in a single command. Title/thumbnail — through vidIQ (picked for retention).
  • Export quality: -crf 18-23, -pix_fmt yuv420p (compatible with social-network players), -movflags +faststart (instant start when streaming).

⚠️ Warnings

  • Music and stock — only with the right to use them. Someone else's track or footage without a license → the platform demonetizes, mutes or removes the video (and you may get a strike). Take material from libraries with an explicit license.
  • Voices and faces. Cloning someone's voice or inserting recognizable people without consent is a legal risk. Use synthetic voices you're allowed to publish.
  • Irreversible things in ffmpeg. The commands write a NEW file (out.mp4, final.mp4) — that's safe. But don't give the output file the same name as the input, or you'll overwrite the original.

🆘 Rescue prompt

Help me build a faceless 9:16 video step by step, explain it simply.
TOPIC: <…>. LENGTH: <45 sec>. PLATFORM: <YouTube Shorts / Reels / TikTok>.
WHAT I ALREADY HAVE: <a script? voice.mp3? images?>. I'M STUCK ON: <step>.
HERE'S THE ERROR / WHAT I SEE: <the ffmpeg/Whisper error text or a description>.

What to do:
1) Finish the current step: hook → script → AI voiceover → footage → subtitles → ffmpeg assembly.
2) Give me the exact ffmpeg/Whisper commands FOR MY OS and how to install them.
3) After each step — how to check the result (what to open/listen to).
4) Warn me about music/stock rights and about not overwriting the original.

💎 Depth and value

  • A channel without a face is freedom. You don't need to be on camera, own a studio or be "telegenic". An idea + a voice + visuals, and you publish while staying anonymous or simply private.
  • The pipeline matters more than the tools. TTS services, image models and editors change every month; the "hook → script → voiceover → visuals → subtitles → ffmpeg" scheme doesn't. Learn it once and you can build a video on whatever new tools appear.
  • Scalability. A hand-made video is a skill; a scripted pipeline is a production line: dozens of videos a week on autopilot. From here it's one step to a content factory (see the video-editing / Remotion skills).

Читать по-русски →