RenanOF commited on
Commit
e503565
·
verified ·
1 Parent(s): 610da22

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +67 -11
app.py CHANGED
@@ -1,22 +1,78 @@
1
  import gradio as gr
2
  import whisper
 
 
 
 
3
 
4
  # Carregar o modelo Whisper
5
  model = whisper.load_model("base")
6
 
7
- # Função para transcrever o áudio
8
- def transcribe(audio):
 
 
9
  result = model.transcribe(audio.name)
10
  return result["text"]
11
 
12
- # Interface do Gradio
13
- interface = gr.Interface(
14
- fn=transcribe,
15
- inputs=gr.Audio(source="microphone", type="file", label="Envie ou grave um áudio"),
16
- outputs="text",
17
- title="Whisper Transcriber",
18
- description="Transcreva áudio em texto usando o modelo Whisper da OpenAI.",
19
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
 
21
  if __name__ == "__main__":
22
- interface.launch(server_name="0.0.0.0", server_port=7860)
 
 
1
  import gradio as gr
2
  import whisper
3
+ import yt_dlp
4
+ from pydub import AudioSegment
5
+ import tempfile
6
+ import os
7
 
8
  # Carregar o modelo Whisper
9
  model = whisper.load_model("base")
10
 
11
+ # Função para transcrever áudio local
12
+ def transcrever_audio(audio):
13
+ if not audio:
14
+ return "Por favor, envie um arquivo de áudio."
15
  result = model.transcribe(audio.name)
16
  return result["text"]
17
 
18
+ # Função para transcrever áudio de YouTube
19
+ def transcrever_youtube(link):
20
+ if not link:
21
+ return "Por favor, insira um link do YouTube."
22
+
23
+ # Baixar o áudio do YouTube
24
+ ydl_opts = {
25
+ "format": "bestaudio/best",
26
+ "outtmpl": "audio.%(ext)s",
27
+ "postprocessors": [{
28
+ "key": "FFmpegExtractAudio",
29
+ "preferredcodec": "mp3",
30
+ "preferredquality": "192",
31
+ }],
32
+ "quiet": True,
33
+ }
34
+
35
+ with yt_dlp.YoutubeDL(ydl_opts) as ydl:
36
+ info = ydl.extract_info(link, download=True)
37
+ audio_path = info['requested_downloads'][0]['filepath']
38
+
39
+ # Transcrever
40
+ result = model.transcribe(audio_path)
41
+ os.remove(audio_path) # Limpar arquivo temporário
42
+ return result["text"]
43
+
44
+ # Função para transcrever áudio gravado do microfone
45
+ def transcrever_microfone(audio):
46
+ if not audio:
47
+ return "Por favor, grave um áudio."
48
+ result = model.transcribe(audio.name)
49
+ return result["text"]
50
+
51
+ # Interface com abas
52
+ with gr.Blocks() as demo:
53
+ gr.Markdown("## **Transcritor Whisper - Áudio para Texto**")
54
+ with gr.Tab("Microfone"):
55
+ gr.Markdown("Grave um áudio e transcreva automaticamente.")
56
+ microfone = gr.Audio(source="microphone", type="file", label="Gravar do microfone")
57
+ botao_microfone = gr.Button("Transcrever")
58
+ resultado_microfone = gr.Textbox(label="Transcrição")
59
+ botao_microfone.click(transcrever_microfone, inputs=microfone, outputs=resultado_microfone)
60
+
61
+ with gr.Tab("Arquivo de Áudio"):
62
+ gr.Markdown("Envie um arquivo de áudio para transcrever.")
63
+ arquivo_audio = gr.Audio(type="file", label="Envie seu arquivo de áudio")
64
+ botao_audio = gr.Button("Transcrever")
65
+ resultado_audio = gr.Textbox(label="Transcrição")
66
+ botao_audio.click(transcrever_audio, inputs=arquivo_audio, outputs=resultado_audio)
67
+
68
+ with gr.Tab("YouTube"):
69
+ gr.Markdown("Insira o link de um vídeo do YouTube para transcrição.")
70
+ link_youtube = gr.Textbox(label="URL do YouTube")
71
+ botao_youtube = gr.Button("Transcrever")
72
+ resultado_youtube = gr.Textbox(label="Transcrição")
73
+ botao_youtube.click(transcrever_youtube, inputs=link_youtube, outputs=resultado_youtube)
74
 
75
+ # Executar o app
76
  if __name__ == "__main__":
77
+ demo.launch(server_name="0.0.0.0", server_port=7860)
78
+