juancamval commited on
Commit
27ede32
·
verified ·
1 Parent(s): d367b24

Update app.py

Browse files

Añadir salida de audio a la traduccion

Files changed (1) hide show
  1. app.py +30 -33
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
- def detectar_idioma(texto):
 
 
 
9
  """
10
- Detecta el idioma del texto utilizando el modelo xlm-roberta-large, con verificación de certeza.
 
11
  """
12
- api_token = os.environ.get("HF_TOKEN")
 
 
13
  try:
14
- kwargs = {}
15
- if api_token:
16
- kwargs['token'] = api_token
17
- modelo_idioma = pipeline("text-classification", model="papluca/xlm-roberta-large-language-detection", **kwargs)
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
- print(f"Error en la detección de idioma: {e}")
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
- gr.Markdown("# Traductor Inglés a Español")
 
 
 
 
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
- texto_entrada_en.change(traducir_texto, inputs=texto_entrada_en, outputs=texto_salida_es)
 
 
 
 
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()