Spaces:
Runtime error
Runtime error
Update app.py
Browse filesAñadir salida de audio a la traduccion
app.py
CHANGED
@@ -1,58 +1,55 @@
|
|
1 |
from transformers import pipeline
|
2 |
import gradio as gr
|
3 |
-
import os
|
4 |
|
5 |
-
# Modelo de traducción inglés-español
|
6 |
modelo_traduccion = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es")
|
7 |
|
8 |
-
|
|
|
|
|
|
|
9 |
"""
|
10 |
-
|
|
|
11 |
"""
|
12 |
-
api_token = os.environ.get("HF_TOKEN")
|
|
|
|
|
13 |
try:
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
resultado = modelo_idioma(texto, top_k=1)[0]
|
19 |
-
if resultado['label'] == 'en' and resultado['score'] > 0.9: # Ajusta el umbral de certeza si es necesario
|
20 |
-
return 'en'
|
21 |
-
else:
|
22 |
-
return resultado['label']
|
23 |
except Exception as e:
|
24 |
-
|
25 |
-
return None
|
26 |
-
|
27 |
-
def traducir_texto(texto_en):
|
28 |
-
if not texto_en.strip():
|
29 |
-
return ""
|
30 |
-
|
31 |
-
idioma_detectado = detectar_idioma(texto_en)
|
32 |
-
|
33 |
-
if idioma_detectado == 'en':
|
34 |
-
try:
|
35 |
-
resultado = modelo_traduccion(texto_en)
|
36 |
-
return resultado[0]['translation_text']
|
37 |
-
except Exception as e:
|
38 |
-
return f"Error en la traducción: {e}"
|
39 |
-
else:
|
40 |
-
return f"Idioma detectado: {idioma_detectado}. Por favor, introduce texto en inglés para traducir."
|
41 |
|
42 |
def borrar_entrada(texto_entrada):
|
|
|
|
|
|
|
43 |
return ""
|
44 |
|
45 |
with gr.Blocks() as interfaz_traductor:
|
46 |
-
|
|
|
|
|
|
|
|
|
47 |
with gr.Row():
|
48 |
with gr.Column():
|
49 |
texto_entrada_en = gr.Textbox(label="Texto en inglés", placeholder="Pega aquí el texto en inglés", lines=10)
|
50 |
boton_borrar = gr.Button("Borrar todo")
|
51 |
with gr.Column():
|
52 |
texto_salida_es = gr.Textbox(label="Traducción al español", placeholder="La traducción aparecerá aquí", interactive=False, lines=10)
|
|
|
53 |
gr.Markdown("*Puedes copiar el texto traducido seleccionándolo y usando Ctrl+C (o Cmd+C en macOS).*")
|
54 |
|
55 |
-
|
|
|
|
|
|
|
|
|
56 |
boton_borrar.click(borrar_entrada, inputs=texto_entrada_en, outputs=texto_entrada_en)
|
57 |
|
58 |
interfaz_traductor.launch()
|
|
|
1 |
from transformers import pipeline
|
2 |
import gradio as gr
|
3 |
+
import os # Importa la librería 'os' para acceder a las variables de entorno
|
4 |
|
5 |
+
# Modelo de traducción inglés-español (generalmente público)
|
6 |
modelo_traduccion = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es")
|
7 |
|
8 |
+
# Modelo de Text-to-Speech para español (generalmente público)
|
9 |
+
modelo_tts = pipeline("text-to-speech", model="espnet/spanish_tts_tacotron2")
|
10 |
+
|
11 |
+
def traducir_texto(texto_en):
|
12 |
"""
|
13 |
+
Traduce directamente el texto de entrada del inglés al español y genera audio.
|
14 |
+
Lee el token de Hugging Face del entorno (si está configurado).
|
15 |
"""
|
16 |
+
api_token = os.environ.get("HF_TOKEN") # Lee el valor de la variable de entorno HF_TOKEN
|
17 |
+
if not texto_en.strip():
|
18 |
+
return "", None
|
19 |
try:
|
20 |
+
resultado_traduccion = modelo_traduccion(texto_en)[0]['translation_text']
|
21 |
+
# Generar audio a partir del texto traducido
|
22 |
+
audio_output = modelo_tts(resultado_traduccion)
|
23 |
+
return resultado_traduccion, audio_output['audio']
|
|
|
|
|
|
|
|
|
|
|
24 |
except Exception as e:
|
25 |
+
return f"Error en la traducción o TTS: {e}", None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
def borrar_entrada(texto_entrada):
|
28 |
+
"""
|
29 |
+
Borra el texto del cuadro de texto de entrada.
|
30 |
+
"""
|
31 |
return ""
|
32 |
|
33 |
with gr.Blocks() as interfaz_traductor:
|
34 |
+
"""
|
35 |
+
Define la interfaz gráfica de la aplicación de traducción de inglés a español con Text-to-Speech.
|
36 |
+
Lee el token de Hugging Face del entorno (si está configurado).
|
37 |
+
"""
|
38 |
+
gr.Markdown("# Traductor Inglés a Español con TTS")
|
39 |
with gr.Row():
|
40 |
with gr.Column():
|
41 |
texto_entrada_en = gr.Textbox(label="Texto en inglés", placeholder="Pega aquí el texto en inglés", lines=10)
|
42 |
boton_borrar = gr.Button("Borrar todo")
|
43 |
with gr.Column():
|
44 |
texto_salida_es = gr.Textbox(label="Traducción al español", placeholder="La traducción aparecerá aquí", interactive=False, lines=10)
|
45 |
+
audio_salida = gr.Audio(label="Audio de la Traducción")
|
46 |
gr.Markdown("*Puedes copiar el texto traducido seleccionándolo y usando Ctrl+C (o Cmd+C en macOS).*")
|
47 |
|
48 |
+
def actualizar_salida(texto_entrada):
|
49 |
+
traduccion, audio = traducir_texto(texto_entrada)
|
50 |
+
return traduccion, audio
|
51 |
+
|
52 |
+
texto_entrada_en.change(actualizar_salida, inputs=texto_entrada_en, outputs=[texto_salida_es, audio_salida])
|
53 |
boton_borrar.click(borrar_entrada, inputs=texto_entrada_en, outputs=texto_entrada_en)
|
54 |
|
55 |
interfaz_traductor.launch()
|