GAS17 commited on
Commit
e210bfc
1 Parent(s): 4c2e8ab

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -59
app.py CHANGED
@@ -1,28 +1,5 @@
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,42 +19,23 @@ 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("")
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)
 
 
1
  import replicate
2
+ import httpx
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  # Función para transcribir el audio
5
  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