File size: 2,003 Bytes
aadc20b 9f63b34 24e57b1 aadc20b 24e57b1 aadc20b 24e57b1 aadc20b 24e57b1 aadc20b 24e57b1 aadc20b 24e57b1 aadc20b 24e57b1 aadc20b 24e57b1 aadc20b 24e57b1 aadc20b 24e57b1 aadc20b 24e57b1 aadc20b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
import gradio as gr
from pytube import YouTube
import whisper
from transformers import pipeline
from bark import generate_audio, preload_models
from moviepy import VideoFileClip
import os
import tempfile
# Load models
asr_model = whisper.load_model("base")
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-en-hi")
preload_models()
def process_video(link):
try:
# Download audio from YouTube
yt = YouTube(link)
audio_stream = yt.streams.filter(only_audio=True).first()
temp_dir = tempfile.mkdtemp()
audio_path = os.path.join(temp_dir, "audio.mp4")
audio_stream.download(filename=audio_path)
# Step 2: Transcribe using Whisper
result = asr_model.transcribe(audio_path)
english_text = result["text"]
# Step 3: Translate to Hindi
hindi_text = translator(english_text)[0]['translation_text']
# Step 4: Generate Hindi audio using Bark
hindi_audio = generate_audio(hindi_text)
hindi_audio_path = os.path.join(temp_dir, "hindi.wav")
with open(hindi_audio_path, "wb") as f:
f.write(hindi_audio)
# Step 5: Merge audio with video
audio_clip = mp.AudioFileClip(hindi_audio_path)
video_clip = mp.ColorClip(size=(1280, 720), color=(0, 0, 0), duration=audio_clip.duration)
final_video = video_clip.set_audio(audio_clip)
output_path = os.path.join(temp_dir, "final_output.mp4")
final_video.write_videofile(output_path, fps=24)
return hindi_text, output_path
except Exception as e:
return f"Error: {str(e)}", None
gr.Interface(
fn=process_video,
inputs=gr.Textbox(label="YouTube Video Link"),
outputs=[
gr.Textbox(label="Hindi Translation"),
gr.Video(label="Dubbed Hindi Video")
],
title="ποΈ YouTube Hindi Dubber AI",
description="Paste a YouTube video link. This app transcribes it, translates it to Hindi, and dubs it using Bark AI."
).launch() |