GAS17 commited on
Commit
c887c55
verified
1 Parent(s): 03505aa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -14
app.py CHANGED
@@ -1,6 +1,7 @@
1
  import os
2
  import replicate
3
  import gradio as gr
 
4
 
5
  # Aseg煤rate de que REPLICATE_API_TOKEN est茅 configurado en las variables de entorno
6
  replicate_token = os.getenv("REPLICATE_API_TOKEN")
@@ -8,25 +9,60 @@ replicate_token = os.getenv("REPLICATE_API_TOKEN")
8
  if not replicate_token:
9
  raise ValueError("No se ha encontrado el token de API de Replicate.")
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  # Funci贸n para transcribir el audio
12
  def transcribe_audio(audio_file):
13
- with open(audio_file, "rb") as audio:
14
- output = replicate.run(
15
- "vaibhavs10/incredibly-fast-whisper:3ab86df6c8f54c11309d4d1f930ac292bad43ace52d10c80d87eb258b3c9f79c",
16
- input={
17
- "task": "transcribe",
18
- "audio": audio, # El archivo de audio cargado en Gradio
19
- "language": "None", # Detecta autom谩ticamente el idioma
20
- "timestamp": "chunk", # Incluye marcas de tiempo
21
- "batch_size": 64,
22
- "diarise_audio": False
23
- }
24
- )
25
- return output['text'] # Devuelve solo el texto transcrito
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
  # Crea la interfaz de Gradio
28
  with gr.Blocks() as demo:
29
- gr.Markdown("")
30
  audio_input = gr.Audio(type="filepath", label="Sube tu archivo de audio")
31
  output_text = gr.Textbox(label="Transcripci贸n")
32
 
 
1
  import os
2
  import replicate
3
  import gradio as gr
4
+ from pydub import AudioSegment
5
 
6
  # Aseg煤rate de que REPLICATE_API_TOKEN est茅 configurado en las variables de entorno
7
  replicate_token = os.getenv("REPLICATE_API_TOKEN")
 
9
  if not replicate_token:
10
  raise ValueError("No se ha encontrado el token de API de Replicate.")
11
 
12
+ # Funci贸n para dividir el archivo de audio en segmentos de duraci贸n definida (en milisegundos)
13
+ def dividir_audio(audio_path, segment_duration_ms=60000):
14
+ audio = AudioSegment.from_file(audio_path)
15
+ audio_length = len(audio)
16
+ segments = []
17
+
18
+ # Divide el audio en fragmentos
19
+ for i in range(0, audio_length, segment_duration_ms):
20
+ segment = audio[i:i+segment_duration_ms]
21
+ segment_path = f"segment_{i // 1000}.wav"
22
+ segment.export(segment_path, format="wav") # Exporta el fragmento como un archivo WAV
23
+ segments.append(segment_path)
24
+
25
+ return segments
26
+
27
  # Funci贸n para transcribir el audio
28
  def transcribe_audio(audio_file):
29
+ # Cargar el archivo de audio completo
30
+ audio = AudioSegment.from_file(audio_file)
31
+ audio_duration_minutes = len(audio) / (1000 * 60) # Duraci贸n en minutos
32
+
33
+ # Si el audio dura m谩s de 10 minutos, dividirlo en segmentos de 1 minuto
34
+ if audio_duration_minutes > 10:
35
+ segments = dividir_audio(audio_file, segment_duration_ms=60000)
36
+ else:
37
+ segments = [audio_file] # Si es menor de 10 minutos, no dividir
38
+
39
+ # Almacenar todas las transcripciones
40
+ all_transcriptions = []
41
+
42
+ # Procesar cada segmento individualmente
43
+ for segment_path in segments:
44
+ with open(segment_path, "rb") as audio:
45
+ output = replicate.run(
46
+ "vaibhavs10/incredibly-fast-whisper:3ab86df6c8f54c11309d4d1f930ac292bad43ace52d10c80d87eb258b3c9f79c",
47
+ input={
48
+ "task": "transcribe",
49
+ "audio": audio, # El archivo de audio cargado en Gradio
50
+ "language": "None", # Detecta autom谩ticamente el idioma
51
+ "timestamp": "chunk", # Incluye marcas de tiempo
52
+ "batch_size": 64,
53
+ "diarise_audio": False
54
+ }
55
+ )
56
+ # Almacenar la transcripci贸n del segmento
57
+ all_transcriptions.append(output['text'])
58
+
59
+ # Combina todas las transcripciones en una sola cadena
60
+ full_transcription = "\n".join(all_transcriptions)
61
+ return full_transcription # Devuelve la transcripci贸n completa
62
 
63
  # Crea la interfaz de Gradio
64
  with gr.Blocks() as demo:
65
+ gr.Markdown("# Transcripci贸n de Audio usando Whisper")
66
  audio_input = gr.Audio(type="filepath", label="Sube tu archivo de audio")
67
  output_text = gr.Textbox(label="Transcripci贸n")
68