import whisper import yt_dlp import gradio as gr def yt_download(link): if not link.strip(): gr.Info("You need to provide a download link.") print("You need to provide a download link") return None ydl_opts = { 'format': 'bestaudio', 'outtmpl': '%(title)s', 'nocheckcertificate': True, 'ignoreerrors': True, 'no_warnings': True, 'quiet': True, 'extractaudio': True, 'postprocessors': [{'key': 'FFmpegExtractAudio', 'preferredcodec': 'wav'}], 'postprocessor_args': [ '-acodec', 'pcm_f32le' ], } with yt_dlp.YoutubeDL(ydl_opts) as ydl: result = ydl.extract_info(link, download=True) download_path = ydl.prepare_filename(result, outtmpl='%(title)s.wav') return download_path def whisper_(input_audio): model = whisper.load_model("medium") # load audio and pad/trim it to fit 30 seconds audio = whisper.load_audio(input_audio) audio = whisper.pad_or_trim(audio) # make log-Mel spectrogram and move to the same device as the model mel = whisper.log_mel_spectrogram(audio, n_mels=model.dims.n_mels).to(model.device) # detect the spoken language _, probs = model.detect_language(mel) print(f"Detected language: {max(probs, key=probs.get)}") # decode the audio options = whisper.DecodingOptions() result = whisper.decode(model, mel, options) # print the recognized text text_result = result.text return text_result