| 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") |
| |
| |
| audio = whisper.load_audio(input_audio) |
| audio = whisper.pad_or_trim(audio) |
| |
| mel = whisper.log_mel_spectrogram(audio, n_mels=model.dims.n_mels).to(model.device) |
| |
| |
| _, probs = model.detect_language(mel) |
| print(f"Detected language: {max(probs, key=probs.get)}") |
| |
| |
| options = whisper.DecodingOptions() |
| result = whisper.decode(model, mel, options) |
| |
| |
| text_result = result.text |
| return text_result |
| |
| |