import replicate import httpx # Función para transcribir el audio def transcribe_audio(audio_file): # Cargar el archivo de audio completo audio = AudioSegment.from_file(audio_file) audio_duration_minutes = len(audio) / (1000 * 60) # Duración en minutos # Si el audio dura más de 10 minutos, dividirlo en segmentos de 10 minutos if audio_duration_minutes > 10: segments = dividir_audio(audio_file, segment_duration_ms=10 * 60 * 1000) # 10 minutos en milisegundos else: segments = [audio_file] # Si es menor de 10 minutos, no dividir # Almacenar todas las transcripciones all_transcriptions = [] # Procesar cada segmento individualmente for segment_path in segments: with open(segment_path, "rb") as audio: # Usar httpx.Client para aumentar el tiempo de espera with httpx.Client(timeout=300) as client: # Aumenta el tiempo de espera a 300 segundos output = replicate.run( "vaibhavs10/incredibly-fast-whisper:3ab86df6c8f54c11309d4d1f930ac292bad43ace52d10c80d87eb258b3c9f79c", input={ "task": "transcribe", "audio": audio, # El archivo de audio cargado en Streamlit "language": "None", # Detecta automáticamente el idioma "timestamp": "chunk", # Incluye marcas de tiempo "batch_size": 64, "diarise_audio": False }, client=client # Usar el cliente con timeout ajustado ) # Almacenar la transcripción del segmento all_transcriptions.append(output['text']) # Combina todas las transcripciones en una sola cadena full_transcription = "\n".join(all_transcriptions) return full_transcription # Devuelve la transcripción completa