Generate multi-voice conversation videos from text transcripts. Two paths: quick ffmpeg (no dependencies) or rich Remotion (React animations).
| Tool | Path / Notes |
|---|---|
| ------ | ------------- |
| ffmpeg | System install or Jellyfin ffmpeg at /usr/lib/jellyfin-ffmpeg/ffmpeg |
| supertonic-tts | Python package for multi-voice TTS (see scripts/generate_audio.py for load logic) |
| Node.js + npm | Only needed for Remotion path |
Create a JSON file with your conversation:
[
{"speaker": "NARRATOR", "text": "Customer Discovery Interview", "voice": "M1", "speed": 1.0, "align": "center"},
{"speaker": "INTERVIEWER","text": "Walk me through when you first realized...", "voice": "M5", "speed": 0.95, "align": "left"},
{"speaker": "CUSTOMER", "text": "I was looking for a marketer agent.", "voice": "M2", "speed": 1.0, "align": "right"}
]
Fields: speaker (label), text (spoken text), voice (supertonic voice name e.g. M1-M5, F1-F2), speed (optional playback speed), align (left/right/center for video placement).
python scripts/generate_audio.py manifest.json output.wav
Outputs:
output.wav — concatenated multi-voice audiooutput_timings.json — per-segment start/end times for video syncPath A: ffmpeg — fast, no Node.js needed
python scripts/ffmpeg_render.py output_timings.json output.wav video.mp4
Options: --width, --height, --font-size, --bg, --font, --crf
Path B: Remotion — richer animations, React-based
Copy the boilerplate:
cp -r assets/remotion-boilerplate ./my-video
cd my-video
npm install
Edit src/Conversation.tsx:
conversation array with your lines (duration in frames, 30fps)SpeakerConfig colors/alignment and place audio in public/Render:
npx remotion render src/index.ts Conversation out/video.mp4
Default color/alignment map (edit in either ffmpeg or Remotion):
| Speaker | Color | Align |
|---|---|---|
| --------- | ------- | ------- |
| NARRATOR | #cbd5e1 | center |
| INTERVIEWER | #60a5fa | left |
| CUSTOMER | #34d399 | right |
Add more by extending the config map in the respective renderer.
共 1 个版本