Download main.py from sonic-coder/YoutubeTranscriptAI: direct link, hf CLI and curl.
- Browser
- Download file 1.56 kB
-
https://huggingface.co/sonic-coder/YoutubeTranscriptAI/resolve/42e246d565272fe857e4fcd09a5faf4fd76af2dc/main.py
- Command line
-
hf download hf://sonic-coder/YoutubeTranscriptAI@42e246d565272fe857e4fcd09a5faf4fd76af2dc/main.py
-
curl -L -o main.py https://huggingface.co/sonic-coder/YoutubeTranscriptAI/resolve/42e246d565272fe857e4fcd09a5faf4fd76af2dc/main.py
1.56 kB
| 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 | |