Guides

    Podcast clips: captions after trim, multi-speaker is a dialogue object

    Trim. Caption. Do not lipsync a waveform.

    Versely Team4 min read

    Trim. Caption. Do not lipsync a waveform. A podcast clip is a keep-range from a file you already recorded. The mouths in that file already moved. The job is to cut the usable seconds, burn what was said, and — if you are building a two-voice track rather than clipping one — generate dialogue as dialogue. Animating a still to a waveform is a different object, and it will not rescue a 50-minute source you refused to trim.

    Cut first. Caption the cut. Leave lipsync for a face that has no video.

    Trim is the first object

    Trim a video is cut_video with one [start, end) range, seconds from the start of the source. Keep the part you want. Drop the rest. The output is a new file with a URL, ready for the next step. That is not a timeline hobby. That is the clip.

    If the miss is in the middle — a flub, a cough, a sponsor read — cut a section out of a video is the same tool with multiple keep-ranges concatenated in order. Segments are KEEP ranges, not delete ranges. Get the arithmetic right or you publish the cough.

    Timestamps are seconds. Frame-level precision follows the source frame rate. cut_video works on one source. Merging trimmed ranges from several recordings is a compose job, not a second trim.

    Dead air at the head of an episode is billed if you caption it. Trim it off so the caption meter never sees it.

    Captions belong on the kept range

    Once the clip is the clip, add captions to a video transcribes the remaining audio and burns styled, timed lines. add_veed_captions. 165 language codes. Speech in, subtitles out. It does not translate. The caption language should match what was actually spoken.

    Two limits matter on podcast tape:

    • Overlapping speakers degrade the transcript. Cross-talk is a recording problem. Recut the range, or accept messy lines. Do not lipsync the mess into a new mouth.
    • DYNAMIC presets cost 2× BASIC. 21 BASIC looks at the standard rate; 9 DYNAMIC looks (glass, whisper, fusion, glide, and the rest) at double. preview_caption_style is the cheap compare on the first seconds. Podcast clips are often long enough that the multiplier is the week.

    This tool captions what someone says. A hook you wrote that nobody said is a text overlay, a different job.

    Multi-speaker is a dialogue object. Lipsync is a face.

    If the clip already has two people on camera, you trimmed and captioned. You are done. Do not run lipsync on top of living mouths.

    If you are authoring a podcast-style video from a script — host and guest as distinct voices, no source tape — add multi-speaker dialogue to a video is the object. generate_multi_speaker_speech takes a script with speaker aliases (Host:, Guest:) and a speakers map, one distinct voice per alias, in script order. Then attach_audio_to_video in replace or mix. Billed by script length and speaker count; estimate_cost before a long conversation. A single narrator is generate_speech. Reach for multi-speaker only when you need two or more.

    That call generates audio. Pairing it with on-screen visuals or lipsync per speaker is a separate step.

    Lipsync a video is not that step for a waveform. generate_lipsync wants an image_url and an audio_url. It animates a still face. It does not take the podcast video as the face input. Re-syncing an already-shot mouth to new audio is dub_video with the HeyGen engine — still not "lipsync the WAV." Do not feed a waveform to a lipsync row and call the result a clip of the episode. You invented a presenter. You did not clip the show.

    FAQ

    Should I caption the whole episode and trim after?

    No. Captioning is billed on the file you hand it, and DYNAMIC looks double the rate. Trim to the keep-range first. Caption the clip.

    Can I lipsync a guest still to the episode WAV so I do not need camera?

    You can run generate_lipsync on an image plus audio. That is a talking still, not a podcast clip of the recording. The mouths in the tape already exist. Trim that tape.

    Do I generate each host and guest voice as separate speech calls?

    Not for a scripted conversation. generate_multi_speaker_speech is one call. Chaining generate_speech and stitching by hand is the job this object exists to skip.

    What if two people talk over each other in the keep-range?

    The transcript will degrade. Recut to a cleaner exchange, or live with messy captions. Do not lipsync the overlap onto generated faces. That is a new show.