GAS17 commited on
Commit
cb7c154
1 Parent(s): e210bfc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -17
app.py CHANGED
@@ -1,5 +1,28 @@
 
1
  import replicate
2
- import httpx
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  # Función para transcribir el audio
5
  def transcribe_audio(audio_file):
@@ -19,23 +42,42 @@ def transcribe_audio(audio_file):
19
  # Procesar cada segmento individualmente
20
  for segment_path in segments:
21
  with open(segment_path, "rb") as audio:
22
- # Usar httpx.Client para aumentar el tiempo de espera
23
- with httpx.Client(timeout=300) as client: # Aumenta el tiempo de espera a 300 segundos
24
- output = replicate.run(
25
- "vaibhavs10/incredibly-fast-whisper:3ab86df6c8f54c11309d4d1f930ac292bad43ace52d10c80d87eb258b3c9f79c",
26
- input={
27
- "task": "transcribe",
28
- "audio": audio, # El archivo de audio cargado en Streamlit
29
- "language": "None", # Detecta automáticamente el idioma
30
- "timestamp": "chunk", # Incluye marcas de tiempo
31
- "batch_size": 64,
32
- "diarise_audio": False
33
- },
34
- client=client # Usar el cliente con timeout ajustado
35
- )
36
- # Almacenar la transcripción del segmento
37
- all_transcriptions.append(output['text'])
38
 
39
  # Combina todas las transcripciones en una sola cadena
40
  full_transcription = "\n".join(all_transcriptions)
41
  return full_transcription # Devuelve la transcripción completa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
  import replicate
3
+ import streamlit as st
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")
8
+
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):
14
+ audio = AudioSegment.from_file(audio_path)
15
+ audio_length = len(audio)
16
+ segments = []
17
+
18
+ # Divide el audio en fragmentos de la duración especificada (10 minutos en milisegundos)
19
+ for i in range(0, audio_length, segment_duration_ms):
20
+ segment = audio[i:i+segment_duration_ms] # Cada fragmento de hasta 10 minutos
21
+ segment_path = f"segment_{i // (60 * 1000)}.wav" # Nombre del archivo con el índice del minuto
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):
 
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 Streamlit
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
+
64
+ # Configurar la interfaz de Streamlit
65
+ st.title("Transcripción de Audio usando Whisper")
66
+
67
+ # Subir archivo de audio
68
+ uploaded_audio = st.file_uploader("Sube tu archivo de audio", type=["wav", "mp3", "ogg", "flac"])
69
+
70
+ # Si se ha subido un archivo
71
+ if uploaded_audio is not None:
72
+ # Guardar el archivo temporalmente
73
+ with open("temp_audio_file.wav", "wb") as f:
74
+ f.write(uploaded_audio.read())
75
+
76
+ st.info("Transcribiendo el audio, esto puede tardar unos minutos...")
77
+
78
+ # Transcribir el archivo
79
+ transcription = transcribe_audio("temp_audio_file.wav")
80
+
81
+ # Mostrar el resultado
82
+ st.subheader("Transcripción")
83
+ st.text(transcription)