File size: 1,390 Bytes
8be831d
b28b069
 
8be831d
b28b069
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import gradio as gr
from transformers import Whisper, AutoProcessor
import youtube_dl

# Carrega o modelo Whisper
model = Whisper("facebook/whisper-large")

# Carrega o processador adequado para o modelo
processor = AutoProcessor.from_pretrained("facebook/whisper-large")

# Função para transcrever áudio a partir de uma URL do YouTube
def transcribe_from_youtube_url(url):
    ydl_opts = {
        'format': 'bestaudio/best',
        'outtmpl': '%(id)s.%(ext)s',
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec':'mp3',
            'preferredquality': '192',
        }],
    }

    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        info = ydl.extract_info(url, download=True)
        audio_filename = ydl.prepare_filename(info)
        ydl.process_item(info, None)

    return transcribe_audio(audio_filename)

def transcribe_audio(audio_file):
    result = model.transcribe(audio_file)
    return processor.batch_transcribe(model, audio_file)

# Cria interface com Gradio
def launch_interface():
    url_input = gr.inputs.Textbox(label="Insira a URL do YouTube")
    output = gr.outputs.Textbox(label="Transcrição")
    iface = gr.Interface(fn=transcribe_from_youtube_url, inputs=url_input, outputs=output, title="Transcrição de Áudio com Whisper a partir de URL do YouTube")
    iface.launch(show_alert=True)

launch_interface()