Spaces:
Runtime error
Runtime error
| # Helper functions for the video and audio extraction | |
| from pytube import YouTube | |
| from moviepy.editor import VideoFileClip | |
| import os | |
| import stable_whisper | |
| import gradio as gr | |
| def download_video(youtube_url, save_path="./"): | |
| try: | |
| # Create a YouTube object with the link | |
| yt = YouTube(youtube_url) | |
| # Get the highest resolution stream | |
| stream = yt.streams.get_highest_resolution() | |
| # Generate a unique filename for the downloaded video | |
| video_filename = "video.mp4" | |
| # Download the video | |
| video_path = stream.download(output_path=save_path, filename=video_filename) | |
| print("Download complete!") | |
| # Extract audio | |
| audio_path = extract_audio(video_path, save_path) | |
| if audio_path: | |
| print("Audio extracted successfully at:", audio_path) | |
| return [video_path, audio_path] | |
| except Exception as e: | |
| print("An error occurred:", str(e)) | |
| def extract_audio(video_path, save_path): | |
| try: | |
| # Load the video clip using moviepy | |
| video_clip = VideoFileClip(video_path) | |
| # Extract audio | |
| audio_clip = video_clip.audio | |
| # Create path for saving audio | |
| audio_path = video_path[:-4] + ".mp3" | |
| # Save audio | |
| audio_clip.write_audiofile(audio_path) | |
| return audio_path | |
| except Exception as e: | |
| print("An error occurred while extracting audio:", str(e)) | |
| # # Example usage | |
| # youtube_link = input("Enter the YouTube link: ") | |
| # download_video(youtube_link) | |
| # BONUS 1: This cell contains the function for the gradio app | |
| def vid_to_subs(link): | |
| try: | |
| # Download video and extract audio | |
| # Construct the full path to the downloaded video | |
| video_path = download_video(link)[0] | |
| # Transcribe the audio | |
| model = stable_whisper.load_model('medium') | |
| result = model.transcribe(video_path) | |
| # Store transcription result in a variable | |
| transcription = result.to_txt() | |
| return transcription | |
| except Exception as e: | |
| print("An error occurred:", str(e)) | |
| demo = gr.Interface(fn=vid_to_subs, inputs="textbox", outputs="textbox") | |
| demo.launch(share=True, debug=True) |