Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -17,10 +17,13 @@ except KeyError:
|
|
17 |
client_options = ClientOptions(api_key=API_KEY)
|
18 |
client = speech.SpeechClient(client_options=client_options)
|
19 |
|
20 |
-
def
|
21 |
-
"""Obtiene la
|
22 |
-
|
23 |
-
|
|
|
|
|
|
|
24 |
|
25 |
def convert_to_wav(input_file):
|
26 |
"""Convierte archivos de audio a WAV LINEAR16 con la tasa de muestreo correcta."""
|
@@ -41,17 +44,13 @@ def transcribe(audio_file=None):
|
|
41 |
if not audio_file.endswith(".wav"):
|
42 |
audio_file = convert_to_wav(audio_file)
|
43 |
|
44 |
-
#
|
45 |
-
|
46 |
-
return "Error: El archivo de audio supera los 10MB. Usa un archivo más pequeño.", ""
|
47 |
-
|
48 |
-
# Obtener la tasa de muestreo real del archivo convertido
|
49 |
-
sample_rate = get_sample_rate(audio_file)
|
50 |
|
51 |
# Configuración de la solicitud
|
52 |
config = speech.RecognitionConfig(
|
53 |
encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
|
54 |
-
sample_rate_hertz=
|
55 |
audio_channel_count=1,
|
56 |
language_code="es-AR",
|
57 |
)
|
@@ -61,8 +60,12 @@ def transcribe(audio_file=None):
|
|
61 |
content = file.read()
|
62 |
audio = speech.RecognitionAudio(content=content)
|
63 |
|
64 |
-
|
65 |
-
|
|
|
|
|
|
|
|
|
66 |
|
67 |
transcript = []
|
68 |
confidence = []
|
@@ -87,3 +90,4 @@ demo = gr.Interface(
|
|
87 |
)
|
88 |
|
89 |
demo.launch()
|
|
|
|
17 |
client_options = ClientOptions(api_key=API_KEY)
|
18 |
client = speech.SpeechClient(client_options=client_options)
|
19 |
|
20 |
+
def get_audio_duration(file_path):
|
21 |
+
"""Obtiene la duración del archivo de audio en segundos."""
|
22 |
+
result = subprocess.run(
|
23 |
+
["ffprobe", "-i", file_path, "-show_entries", "format=duration", "-v", "quiet", "-of", "csv=p=0"],
|
24 |
+
capture_output=True, text=True
|
25 |
+
)
|
26 |
+
return float(result.stdout.strip())
|
27 |
|
28 |
def convert_to_wav(input_file):
|
29 |
"""Convierte archivos de audio a WAV LINEAR16 con la tasa de muestreo correcta."""
|
|
|
44 |
if not audio_file.endswith(".wav"):
|
45 |
audio_file = convert_to_wav(audio_file)
|
46 |
|
47 |
+
# Obtener la duración del archivo
|
48 |
+
duration = get_audio_duration(audio_file)
|
|
|
|
|
|
|
|
|
49 |
|
50 |
# Configuración de la solicitud
|
51 |
config = speech.RecognitionConfig(
|
52 |
encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
|
53 |
+
sample_rate_hertz=48000,
|
54 |
audio_channel_count=1,
|
55 |
language_code="es-AR",
|
56 |
)
|
|
|
60 |
content = file.read()
|
61 |
audio = speech.RecognitionAudio(content=content)
|
62 |
|
63 |
+
if duration <= 60:
|
64 |
+
# Si el audio dura menos de 1 minuto, usamos transcripción síncrona
|
65 |
+
response = client.recognize(config=config, audio=audio)
|
66 |
+
else:
|
67 |
+
# Si el audio dura más de 1 minuto, mostramos un error (se necesita Google Cloud Storage)
|
68 |
+
return "Error: El audio es muy largo para la transcripción síncrona. Se necesita Google Cloud Storage.", ""
|
69 |
|
70 |
transcript = []
|
71 |
confidence = []
|
|
|
90 |
)
|
91 |
|
92 |
demo.launch()
|
93 |
+
|