File size: 1,931 Bytes
b298488
e210bfc
b298488
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e210bfc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b298488
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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