JAN–FEB 2025 · TEXT TO VIDEO
Telecraft Labs
Generating narrated videos from written stories
Python · LangChain · FFmpeg · ElevenLabs · ImagineArt · AWS Lambda · S3 · CloudWatch
Telecraft Labs turns a written story into a video with generated images, narration, music, and transitions. Built the generation pipeline and its AWS infrastructure.
Submit a story
The user chooses a story, language, voice, and visual style.
Web app · Firebase sign-in
Generate scenes & narration
The story becomes scene images and spoken narration, with character details reused between scenes.
API Lambda · ImagineArt · ElevenLabs
Assemble the video
Images and narration are combined with music and transitions.
VideoGen Lambda · FFmpeg
Get the finished video
The video is saved and its link is attached to the user’s project.
S3 video storage · Project database
Character consistency
Built in January–February 2025, before the GPT Image API launched in April. Generated images could change a character’s appearance between scenes. Split stories into scenes and reused character descriptions and visual context to reduce that drift.
The scene descriptions carried a shared character context into image generation. That gave successive requests a common description to work from, while each scene still specified its own action and setting. The goal was to reduce visual drift across the story; this did not guarantee identical characters in every generated image.
From generated assets to a finished video
Connected ImagineArt visuals, ElevenLabs narration in 10+ languages, and FFmpeg video assembly using Python and LangChain. The pipeline combined those outputs with configurable transitions and music.
Separated scene and narration generation from video composition. The generation stage produces the material for the story; the composition stage turns that material into the final media file. Saved the finished video in S3 and attached its link to the user’s project, making the output accessible after the processing job ends.
Moving compute to individual jobs
The EC2 deployment kept a server running between video-generation requests. Replaced it with event-driven AWS Lambda processing and kept completed media in S3. Compute was tied to individual jobs, with persistent output stored separately.
This introduced a different constraint: each processing job had to fit Lambda’s execution, memory, and temporary-storage limits. CloudWatch provided visibility into the generation and FFmpeg processing. At the project’s workload, monthly infrastructure cost fell from roughly $120 to $6, a 95% reduction.
The project published 80+ generated videos on YouTube, accumulating 15K+ views.