marioluciofjr commited on
Commit
1e35c36
·
verified ·
1 Parent(s): 3e8d071

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -14
app.py CHANGED
@@ -1,7 +1,6 @@
1
  import gradio as gr
2
  from transformers import pipeline, AutoTokenizer
3
  import torch
4
- from transformers.pipelines.audio_utils import ffmpeg_read
5
 
6
  # Verificando se a GPU está disponível
7
  device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
@@ -9,8 +8,10 @@ device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
9
  # Carregando o modelo Whisper para transcrição de áudio
10
  transcriber = pipeline(
11
  task="automatic-speech-recognition",
12
- model="openai/whisper-medium", # Você pode alterar para 'openai/whisper-small' para maior velocidade
13
  device=device,
 
 
14
  generate_kwargs={"language": "Portuguese", "task": "transcribe"}
15
  )
16
 
@@ -32,22 +33,15 @@ def transcribe_and_analyze(audio_file):
32
  progress = gr.Progress(track_tqdm=True)
33
  progress(0, desc="Iniciando transcrição...")
34
 
35
- # Abrindo o arquivo de áudio em modo binário
36
- with open(audio_file, 'rb') as f:
37
- bpayload = f.read()
38
-
39
- # Lendo os dados de áudio usando ffmpeg_read
40
- audio_data = ffmpeg_read(bpayload, sampling_rate=16000)
41
-
42
- # Transcrevendo o áudio
43
- transcription_result = transcriber(audio_data)
44
  transcription = transcription_result["text"]
45
  progress(50, desc="Transcrição concluída. Analisando emoções...")
46
 
47
  # Lista de emoções para a classificação
48
  emotions = ["alegria", "tristeza", "raiva", "nojo", "medo", "ansiedade", "vergonha", "tédio", "inveja"]
49
 
50
- # Realizando a classificação zero-shot na transcrição
51
  classification = classifier(transcription, emotions, multi_label=True)
52
 
53
  # Formatando os resultados
@@ -58,6 +52,7 @@ def transcribe_and_analyze(audio_file):
58
  # Ordenando os resultados por score decrescente
59
  results.sort(key=lambda x: float(x.split(": ")[1]), reverse=True)
60
 
 
61
  emotion_output = "\n".join(results)
62
 
63
  progress(100, desc="Processamento concluído.")
@@ -73,9 +68,9 @@ interface = gr.Interface(
73
  gr.Textbox(label="Emoções Detectadas")
74
  ],
75
  title="Voxsense 🗣️❣️",
76
- description="Envie um arquivo de áudio para transcrição e análise de emoções.",
77
  theme="default"
78
  )
79
 
80
  if __name__ == "__main__":
81
- interface.queue().launch()
 
1
  import gradio as gr
2
  from transformers import pipeline, AutoTokenizer
3
  import torch
 
4
 
5
  # Verificando se a GPU está disponível
6
  device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
 
8
  # Carregando o modelo Whisper para transcrição de áudio
9
  transcriber = pipeline(
10
  task="automatic-speech-recognition",
11
+ model="openai/whisper-medium",
12
  device=device,
13
+ chunk_length_s=30, # Definindo chunk_length_s para 30 segundos
14
+ stride_length_s=5,
15
  generate_kwargs={"language": "Portuguese", "task": "transcribe"}
16
  )
17
 
 
33
  progress = gr.Progress(track_tqdm=True)
34
  progress(0, desc="Iniciando transcrição...")
35
 
36
+ # Transcrevendo o áudio com return_timestamps=True
37
+ transcription_result = transcriber(audio_file, return_timestamps=True)
 
 
 
 
 
 
 
38
  transcription = transcription_result["text"]
39
  progress(50, desc="Transcrição concluída. Analisando emoções...")
40
 
41
  # Lista de emoções para a classificação
42
  emotions = ["alegria", "tristeza", "raiva", "nojo", "medo", "ansiedade", "vergonha", "tédio", "inveja"]
43
 
44
+ # Realizando a classificação zero-shot
45
  classification = classifier(transcription, emotions, multi_label=True)
46
 
47
  # Formatando os resultados
 
52
  # Ordenando os resultados por score decrescente
53
  results.sort(key=lambda x: float(x.split(": ")[1]), reverse=True)
54
 
55
+ # Unindo os resultados em uma string
56
  emotion_output = "\n".join(results)
57
 
58
  progress(100, desc="Processamento concluído.")
 
68
  gr.Textbox(label="Emoções Detectadas")
69
  ],
70
  title="Voxsense 🗣️❣️",
71
+ description="Envie um arquivo de áudio de até 1 hora para transcrição e análise de emoções.",
72
  theme="default"
73
  )
74
 
75
  if __name__ == "__main__":
76
+ interface.queue().launch()