FOREIGN-WHISPERS / main.py
RobCaamano's picture
Update main.py
7144462
import argparse
import os
from yt_download import download_video
from video_to_text import convert_video_to_text
from opus import translate_file
from diarization import perform_diarization
from tts import main as tts_main
from translated_video import create_translated_video
def get_transcription_filename(video_path):
base_name = os.path.splitext(os.path.basename(video_path))[0]
return f'./transcribed/{base_name}.txt'
def get_audio_filename(video_path):
base_name = os.path.splitext(os.path.basename(video_path))[0]
return f'./audio/{base_name}.wav'
def get_video_name(video_path):
base_name = os.path.splitext(os.path.basename(video_path))[0]
return base_name
def main(youtube_url):
# Ensure necessary directories exist
if not os.path.exists('./downloads'):
os.makedirs('./downloads')
if not os.path.exists('./audio'):
os.makedirs('./audio')
if not os.path.exists('./transcribed'):
os.makedirs('./transcribed')
if not os.path.exists('./translated'):
os.makedirs('./translated')
# Step 1: Download video
## yt_download.py
downloaded_video_path = download_video(youtube_url)
# Step 2: Transcribe video's audio
## video_to_text.py
transcribed_text_path = get_transcription_filename(downloaded_video_path)
model_type = 'base' # Whisper model type
convert_video_to_text(downloaded_video_path, model_type)
# Step 3: Translate transcribed text to Spanish
## opus.py
translated_text_path = './translated/translated_text.txt'
translate_file(transcribed_text_path, translated_text_path)
# Step 4: Perform diarization
## diarization.py
audio_path = get_audio_filename(downloaded_video_path)
diarized_audio_dir = './audio/diarization'
perform_diarization(audio_path, translated_text_path)
# Step 5: Generate speech for translated text
## tts.py
speaker_directory = './audio/diarization'
aligned_text_file = './audio/diarization/aligned_text.txt'
output_audio_file = './translated/final_audio.wav'
tts_main(speaker_directory, aligned_text_file, output_audio_file)
# Step 6: Create final translated video
## translated_video.py
video_name = get_video_name(downloaded_video_path)
final_video_path = create_translated_video(downloaded_video_path, output_audio_file, translated_text_path, video_name)
print(f"Final translated video created at {final_video_path}")
return final_video_path
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Process a YouTube video with multiple steps.")
parser.add_argument("youtube_url", help="YouTube video URL")
args = parser.parse_args()
main(args.youtube_url)