Spaces:
Running
Running
from transcribe import transcribe | |
from moviepy import * | |
from translate import translate | |
from edite_video import video_edit | |
import gradio as gr | |
import requests | |
import os | |
from dub import dub | |
def extract_audio(input_video_name): | |
# Define the input video file and output audio file | |
mp3_file = "audio.mp3" | |
# Load the video clip | |
video_clip = VideoFileClip(input_video_name) | |
# Extract the audio from the video clip | |
audio_clip = video_clip.audio | |
duration = audio_clip.duration | |
print(duration) | |
# Write the audio to a separate file | |
audio_clip.write_audiofile(mp3_file) | |
# Close the video and audio clips | |
audio_clip.close() | |
video_clip.close() | |
print("Audio extraction successful!") | |
return mp3_file, duration | |
def download_video(url): | |
response = requests.get(url, stream=True) | |
response.raise_for_status() | |
with open("video.mp4", 'wb') as file: | |
for chunk in response.iter_content(chunk_size=8192): | |
if chunk: | |
file.write(chunk) | |
file.close() | |
print(f"Downloaded successfully") | |
return "video.mp4" | |
def main(url, clip_type, parameters, progress=gr.Progress()): | |
if clip_type == "dub": | |
progress(0, desc="Starting") | |
video = download_video(url) | |
progress(5, desc="downloaded") | |
mp3_file, duration = extract_audio(video) | |
progress(10, desc="extract audio") | |
srt_list = transcribe(mp3_file) | |
progress(35, desc="transcribe") | |
subtitle_file = translate(srt_list) | |
progress(55, desc="translate") | |
output_video_file = dub(subtitle_file, video) | |
progress(100, desc="finish") | |
os.remove(subtitle_file) | |
else: | |
color, font = parameters.split(",") | |
progress(0, desc="Starting") | |
video = download_video(url) | |
progress(5, desc="downloaded") | |
mp3_file, duration = extract_audio(video) | |
progress(10, desc="extract audio") | |
srt_list = transcribe(mp3_file) | |
progress(35, desc="transcribe") | |
subtitle_file = translate(srt_list) | |
progress(55, desc="translate") | |
print(parameters) | |
output_video_file = video_edit(subtitle_file, video, color, font, input_audio= "audio.mp3") | |
progress(100, desc="finish") | |
os.remove(subtitle_file) | |
return output_video_file | |
with gr.Blocks() as demo: | |
gr.Markdown("Start typing below and then click **Run** to see the output.") | |
with gr.Column(): | |
video_file_input = gr.Text(label="Upload Video url") | |
clip_type = gr.Dropdown(["dub", "sub"], label="Clip Type") | |
parameters = gr.Text() | |
btn = gr.Button("create") | |
video_file_output = gr.Video(label="result: ") | |
btn.click(fn=main, inputs=[video_file_input, clip_type, parameters], outputs=video_file_output) | |
""" with gr.Row(): | |
vid_out = gr.Video() | |
srt_file = gr.File() | |
btn2 = gr.Button("transcribe") | |
gr.on( | |
triggers=[btn2.click], | |
fn=write_google, | |
inputs=out, | |
).then(video_edit, [out, video_path_output, audio_path_output], outputs=[vid_out, srt_file])""" | |
demo.launch(debug=True) |