Skip to content

🎥 Create youtube videos from a text prompt in seconds

License

Notifications You must be signed in to change notification settings

artkulak/text2youtube

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎬 text2youtube

Description

text2youtube uses cutting-edge AI power for YouTube automation, transforming simple text into engaging video content. Designed with YouTube automation and text-to-video technology in mind, this project streamlines the process of video content creation. It employs advanced AI for scenario generation, text-to-speech synthesis, and video compilation, making it an innovative tool in the field of text-to-video and YouTube automation.

Features

📜 Automated video script generation from prompt + reference information (like from another video script). We not only generate the script itself but also queries to Youtube/Storyblocks so that we can compose our video later from a set of clips we download from those queries.

🎙 Video voice generation with Bark. Bark is the best for naturally sounding voice at the moment, voice is one of the most important parts of a Youtube video and we did a bunch of experiments there. It runs quick on Google Colab with A100 GPU attached.

🎨 We have some basic code for stitching videos together with MoviePY but it works real slow, so for now we just export the clips from Storyblocks/Youtube and voice-over and stitch them together in Adobe Premier which takes seconds not minutes.

Demos

Open In Colab

Getting Started

  1. Install the required dependencies by running pip install -r requirements.txt.
  2. Install text-to-speech pip install git+https://github.com/suno-ai/bark.git
  3. Ensure the cookies.json file is present with necessary credentials for storyblocks.com website access.
  4. Ensure env.yaml file is present providing OpenAi API key and working directories
  5. Provide the necessary OpenAI prompt in prompts directory
  6. Provide the necessary content inputs in text files in SOURCE_DIR
  7. Run the main application file app.py to start the content creation process.
  8. The program will handle the rest, creating engaging videos with captivating voiceovers.

Project Structure

The project is organized into several modules:

  • src.audio: Contains audio-related functions for text-to-speech synthesis.
  • src.config: Stores configuration settings for the program.
  • src.logger: Implements logging functionality for the application.
  • src.openai_generation: Handles interactions with OpenAI's ChatGPT for scenario generation.
  • src.video_processing: Manages video downloads from YouTube or videoblocks.com.
  • src.utils: Contains utility functions for data processing and file handling.
  • src.video: Includes video-related functions for compilation and editing.

Results

While developing, we decided to focus on the finance niche and create a youtube channel on Economics/Countries topic. Here is the channel

We posted 1 video daily for about 20-25 days. In the end, we got around 8,000 views, 221 watch hours, and +70 subscribers, average watch time of the video was around 30%. The results of the experiment are pretty encouraging because the videos are not of very high quality and I expected worse.

What To Improve

  • It's hard to change the quality of naturally sounding voice generation at the moment but I think we can have a big boost in video generation itself. For example, finding a way to make high-quality text overlays on top of video clips would give a big advantage. Or parsing images from google and applying parallax (ken burns effect) on top
  • Improving video generation speed with MoviePY, so videos wouldn't have to be exported into adobe premier pro.
  • Allow option to create youtube shorts content, though there are plenty projects which already do that.

Dependencies

Contributors

License

This project is licensed under the MIT License. Feel free to use and modify it according to your needs.

Test and lint