whisper_lab2 / app.py
Campfireman's picture
Update app.py
85be9f8
raw
history blame
No virus
2.03 kB
from transformers import pipeline
import gradio as gr
import moviepy.editor as mp
from pytube import YouTube
pipe = pipeline(model="Campfireman/whisper-small-hi") # change to "your-username/the-name-you-picked"
def download_video(url):
print("Downloading...")
local_file = (
YouTube(url)
.streams.filter(progressive=True, file_extension="mp4")
.first()
.download()
)
print("Downloaded")
return local_file
def validate_youtube(url):
#This creates a youtube object
try:
yt = YouTube(url)
except Exception:
print("Hi there URL seems invalid")
return True
#This will return the length of the video in sec as an int
video_length = yt.length
if video_length > 600:
print("Your video is larger than 10 minutes")
return True
else:
print("Your video is less than 10 minutes")
return False
def validate_url(url):
import validators
if not validators.url(url):
return True
else:
return False
def download_video(url):
print("Downloading...")
local_file = (
YouTube(url)
.streams.filter(progressive=True, file_extension="mp4")
.first()
.download()
)
print("Downloaded")
return local_file
def video_spliter(video_in):
my_clip = mp.VideoFileClip(download_video(video_in))
my_audio = "audio_out.wav"
my_clip.audio.write_audiofile(my_audio)
return my_audio
def transcribe(video_url):
if validate_url(video_url):
if not validate_youtube(video_url):
return "The URL seems not for Youtube videos"
else:
return "The URL seems invalid"
audio = video_spliter(video)
#text = pipe(audio)["text"]
return text
iface = gr.Interface(
fn=transcribe,
inputs=gr.Textbox(label = "Enter the URL of the Youtube video clip here: "),
outputs="text",
title="Whisper Medium Chinese",
description="Video Chinese Transcriptior",
)
iface.launch()