See llms.txt for all machine-readable content.
This self-hosted workflow takes text and a selected language from an n8n form, generates an MP3 voiceover using the Edge TTS CLI, analyzes the audio with FFmpeg/FFprobe to detect real pauses, and outputs a matching .ass karaoke subtitle file with word-by-word timing.
edge-tts CLI to generate an MP3 voiceover.silencedetect to find silence start/end markers.\k karaoke tags and line wrapping based on character width./tmp.edge-tts on the n8n host (for example via pipx install edge-tts) and ensure the edge-tts command is on the PATH.ffmpeg and ffprobe are on the PATH.There are no credentials to configure and nothing is billed. Edge TTS is the Read Aloud voice built into Microsoft Edge, reachable from the open-source edge-tts CLI, so a voiceover costs nothing regardless of how much text you send.
Why the timing is done this way: most caption workflows divide the clip length evenly across the words. Edge TTS audio is roughly a quarter silence (a lead-in, about a second of pause at every full stop, a tail), so that stretches every word and the highlight drifts behind the voice. This workflow measures the real pauses with silencedetect and lays the words out on speech time only, then anchors each sentence to the audio it is actually spoken in, so a sentence starts on its first syllable rather than a second early.
Known limits: Chinese, Japanese and Thai are not supported, because the line splitter needs whitespace between words. Karaoke timing within a sentence is proportional to word length, not true per-word timings from the engine.
Two environment variables matter on n8n v2 or the file steps fail quietly: NODES_EXCLUDE="[]" (Execute Command is disabled by default) and N8N_RESTRICT_FILE_ACCESS_TO="/tmp" (file writes are locked to ~/.n8n-files by default). On macOS /tmp is a symlink to /private/tmp and n8n resolves the real path, so list both: "/tmp;/private/tmp".