Spaces:
Paused
Paused
| 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 | |
| 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, 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 = video_edit(subtitle_file, video, input_audio= "audio.mp3") | |
| progress(100, desc="finish") | |
| os.remove(subtitle_file) | |
| else: | |
| 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 = video_edit(subtitle_file, video, 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(["auto edit", "default"], label="Clip Type") | |
| btn = gr.Button("create") | |
| video_file_output = gr.Video(label="result: ") | |
| btn.click(fn=main, inputs=[video_file_input, clip_type], 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) |