IAMCCS Audio Transcript Prompt Compiler
Put actual spoken dialogue into your LTX prompt, automatically
- audio
- compiled_prompt
- speech_line
- report
Transcribe the audio, then stuff the words into the prompt
LTX-2 is the open video model that made audio-synced generation a local reality - video and audio come out of the same DiT, which is why it's the default for dialogue work. The workflow pattern that gets the best lipsync is: take the source audio, transcribe what's being said, and put that text into the generation prompt so the model knows what the mouth should be doing. That transcription-and-injection step is exactly what this node automates.
It's the "01 Prompting" stage of the pack's Cine pipeline, and it does three things in one pass: transcribe the input audio (or accept a manually written line), build a speech line from a template, and compile a final prompt.
How it works
The speech_source dropdown picks the behavior:
manual_speech_line(default) - skip transcription, use the text you typed infallback_speech_linedirectly. The name is a bit of a misnomer; the fallback IS the speech line here.transcribe_then_fallback- transcribe; if the result is empty anduse_fallback_if_transcript_emptyis on, fall back to your line.transcribe_audio_only/speech_line_only- the pure modes.
Transcription runs through Whisper via MTB's Load Whisper node - check model_size (default tiny, all the way up to large-v3-turbo) and language (default auto). That MTB dependency is the one real gotcha: if the node errors at load, comfy-mtb isn't installed. download_missing handles the Whisper model download when set.
The speech line is assembled by the speech_template (default The speaker says "<Transcript1>") with speech_token as the placeholder the transcript gets dropped into. Then compiled_prompt joins that line with your text_prompt using join_separator. So a typical setup: a scene prompt in text_prompt, Whisper transcribing the VO track, and the compiled prompt - "…and The speaker says 'I knew you would come back.'" - goes to your LTX conditioning.
Outputs
compiled_prompt- the ready-to-encode string.speech_line- just the template-wrapped transcript, if you want to route it separately.report- diagnostics about what was transcribed or why it fell back.
The practical picture
Install is the pack install (Manager: "IAMCCS", or clone IAMCCS/IAMCCS-nodes into custom_nodes), plus the MTB pack for Whisper. Start with tiny for speed - on long audio it's dramatically faster than large-v3-turbo and good enough to catch dialogue. Two habits save you pain: keep use_fallback_if_transcript_empty on so a silent clip doesn't produce an empty prompt, and remember that Whisper timestamps (return_timestamps) aren't actually used by the compiler - that flag is there for debugging your own flows. And don't expect the model to repeat the words verbatim; it uses the transcript as a strong hint for mouth shape and delivery, which is exactly how LTX lipsync work gets its payoff.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| text_prompt | STRING | — | |
| fallback_speech_line | STRING | — | |
| speech_template | STRING | The speaker says "<Transcript1>" | — |
| speech_token | STRING | <Transcript1> | — |
| join_separator | STRING | — | |
| model_size | COMBO | tiny | 9 options: tiny, small, medium, medium.en, base, large, +3 |
| language | COMBO | auto | 12 options: auto, de, en, es, fr, it, +6 |
| download_missing | BOOLEAN | false | — |
| return_timestamps | BOOLEAN | false | — |
| use_fallback_if_transcript_empty | BOOLEAN | true | — |
| speech_source | COMBO | manual_speech_line | 4 options: manual_speech_line, transcribe_then_fallback, transcribe_audio_only, speech_line_only |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| compiled_prompt | STRING | — |
| speech_line | STRING | — |
| report | STRING | — |