Added pyttsx3 instead of gTTS, now has a male voice.

You can probably do more with this than me - I'm new to python. I just preferred a male voice over the old (annoying) female voice!
pull/234/head
5vl 3 years ago
parent db1ddce57a
commit cdb6f85d98

@ -9,3 +9,6 @@ REDDIT_2FA=""
THEME="" THEME=""
SUBREDDIT="" SUBREDDIT=""
# Set the talk speed for TTS. Recommended option is 180
TALK_SPEED=

@ -3,7 +3,7 @@ import time
from reddit.subreddit import get_subreddit_threads from reddit.subreddit import get_subreddit_threads
from video_creation.background import download_background, chop_background_video from video_creation.background import download_background, chop_background_video
from video_creation.voices import save_text_to_mp3 from video_creation.voices import save_text_to_wav
from video_creation.screenshot_downloader import download_screenshots_of_reddit_posts from video_creation.screenshot_downloader import download_screenshots_of_reddit_posts
from video_creation.final_video import make_final_video from video_creation.final_video import make_final_video
from dotenv import load_dotenv from dotenv import load_dotenv
@ -19,7 +19,7 @@ time.sleep(3)
reddit_object = get_subreddit_threads() reddit_object = get_subreddit_threads()
load_dotenv() load_dotenv()
length, number_of_comments = save_text_to_mp3(reddit_object) length, number_of_comments = save_text_to_wav(reddit_object)
download_screenshots_of_reddit_posts(reddit_object, number_of_comments, os.getenv("THEME")) download_screenshots_of_reddit_posts(reddit_object, number_of_comments, os.getenv("THEME"))
download_background() download_background()
chop_background_video(length) chop_background_video(length)

@ -1,4 +1,3 @@
gTTS==2.2.4
moviepy==1.0.3 moviepy==1.0.3
mutagen==1.45.1 mutagen==1.45.1
playwright==1.22.0 playwright==1.22.0
@ -6,3 +5,4 @@ praw==7.6.0
python-dotenv==0.20.0 python-dotenv==0.20.0
rich==12.4.4 rich==12.4.4
yt_dlp==2022.5.18 yt_dlp==2022.5.18
pyttsx3==2.90

@ -27,8 +27,8 @@ def make_final_video(number_of_clips):
# Gather all audio clips # Gather all audio clips
audio_clips = [] audio_clips = []
for i in range(0, number_of_clips): for i in range(0, number_of_clips):
audio_clips.append(AudioFileClip(f"assets/mp3/{i}.mp3")) audio_clips.append(AudioFileClip(f"assets/wav/{i}.wav"))
audio_clips.insert(0, AudioFileClip(f"assets/mp3/title.mp3")) audio_clips.insert(0, AudioFileClip(f"assets/wav/title.wav"))
audio_concat = concatenate_audioclips(audio_clips) audio_concat = concatenate_audioclips(audio_clips)
audio_composite = CompositeAudioClip([audio_concat]) audio_composite = CompositeAudioClip([audio_concat])

@ -1,34 +1,36 @@
from gtts import gTTS import pyttsx3
from pathlib import Path from pathlib import Path
from mutagen.mp3 import MP3 from mutagen.wave import WAVE
from utils.console import print_step, print_substep from utils.console import print_step, print_substep
from rich.progress import track from rich.progress import track
def save_text_to_mp3(reddit_obj): def save_text_to_wav(reddit_obj):
"""Saves Text to MP3 files. """Saves Text to WAV files.
Args: Args:
reddit_obj : The reddit object you received from the reddit API in the askreddit.py file. reddit_obj : The reddit object you received from the reddit API in the askreddit.py file.
""" """
print_step("Saving Text to MP3 files...") print_step("Saving Text to WAV files...")
length = 0 length = 0
# Create a folder for the mp3 files. # Create a folder for the mp3 files.
Path("assets/mp3").mkdir(parents=True, exist_ok=True) Path("assets/wav").mkdir(parents=True, exist_ok=True)
tts = gTTS(text=reddit_obj["thread_title"], lang="en", slow=False) engine = pyttsx3.init()
tts.save(f"assets/mp3/title.mp3") engine.setProperty("rate", 180)
length += MP3(f"assets/mp3/title.mp3").info.length engine.save_to_file(reddit_obj["thread_title"], f"assets/wav/title.wav")
engine.runAndWait()
length += WAVE(f"assets/wav/title.wav").info.length
for idx, comment in track(enumerate(reddit_obj["comments"]), "Saving..."): for idx, comment in track(enumerate(reddit_obj["comments"]), "Saving..."):
# ! Stop creating mp3 files if the length is greater than 50 seconds. This can be longer, but this is just a good starting point # ! Stop creating wav files if the length is greater than 50 seconds. This can be longer, but this is just a good starting point
if length > 50: if length > 50:
break break
tts = gTTS(text=comment["comment_body"], lang="en", slow=False) engine.save_to_file(comment["comment_body"], f"assets/wav/{idx}.wav")
tts.save(f"assets/mp3/{idx}.mp3") engine.runAndWait()
length += MP3(f"assets/mp3/{idx}.mp3").info.length length += WAVE(f"assets/wav/{idx}.wav").info.length
print_substep("Saved Text to MP3 files successfully.", style="bold green") print_substep("Saved Text to WAV files successfully.", style="bold green")
# ! Return the index so we know how many screenshots of comments we need to make. # ! Return the index so we know how many screenshots of comments we need to make.
return length, idx return length, idx

Loading…
Cancel
Save