|
--- |
|
title: PruebaSpeechTranslate |
|
emoji: 馃弮 |
|
colorFrom: indigo |
|
colorTo: purple |
|
sdk: gradio |
|
sdk_version: 5.6.0 |
|
app_file: app.py |
|
pinned: false |
|
|
|
--- |
|
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference |
|
|
|
--- |
|
# Problema, soluci贸n, input y output |
|
|
|
- *Problema principal*: |
|
|
|
La comunicaci贸n entre distintas lenguas es imprescindible en la actualidad, por ello surge una necesidad de contar con una herramienta que permita la traducir contenido, en este caso, del ingl茅s a otros idiomas ampliamente utilizados. Este sistema est谩 en la integraci贸n de tecnolog铆as de reconocimiento de voz, tambi茅n conocido como ASR (Automatic Speech Recognition) y procesamiento de lenguaje natural para facilitar la traducci贸n. |
|
|
|
- *Soluci贸n*: |
|
|
|
Consiste en desarrollar un sistema que procese audios en formatos comunes, como .mp3 o .wav, transcriba autom谩ticamente el contenido previamente grabado en ingl茅s y proporcione su traducci贸n al idioma seleccionado. Aprovechando modelos de IA como Whisper y MBart, adaptadas al contexto del mensaje. |
|
|
|
- *Especificaciones*: |
|
|
|
Input: Un archivo de audio en formato compatible (MP3, WAV, etc.), cargado o grabado directamente por el usuario. |
|
|
|
|
|
Output: Una transcripci贸n del audio en texto traducido al idioma seleccionado (espa帽ol, alem谩n, ruso, franc茅s o sueco). |
|
Adem谩s de responder a la necesidad de superar barreras a nivel de idiomas, tambi茅n ofrece una experiencia intuitiva. |
|
|
|
# Descripci贸n de los modelos, clasificaci贸n y limitaciones |
|
|
|
## Modelos utilizados |
|
### Whisper: |
|
**Descripci贸n**: Modelo de transcripci贸n de audio desarrollado por OpenAI. Tiene como objetivo pasar audios a texto. Basado en Transformer y entrenado con un conjunto grande de datos de muchos idiomas distintos, lo que permite tareas relacionadas con el ASR. |
|
|
|
**Clasificaci贸n**: |
|
|
|
- Tipo de tarea -> ASR |
|
|
|
- Modelo preentrenado -> preentrenado en datos multiling眉es y ajustable para tareas espec铆ficas |
|
|
|
- Dominio de uso -> Procesamiento de Lenguaje Natural y Reconocimiento de Voz |
|
|
|
### MBart: |
|
**Descripci贸n**: Otro modelo multiling眉e basado en Transformer. 脷til para la traducci贸n autom谩tica y dem谩s tareas de generaci贸n de texto en m煤ltiples idiomas. Preentrenado en tareas de reducci贸n de ruido y puede ser ajustado para traducir espec铆ficamente entre dos pares de idiomas. |
|
Se utiliza el modelo "SnypzZz/Llama2-13b-Language-translate", el cual est谩 basado en MBart. El tokenizador asociado es MBart50TokenizerFast, que convierte el texto de entrada en tokens que el modelo entiende y devuelve los tokens decodificados en formato de texto. |
|
|
|
**Clasificaci贸n**: |
|
|
|
- Tipo de tarea -> Traducci贸n autom谩tica y generaci贸n de texto. |
|
|
|
- Modelo preentrenado -> preentrenado en tareas de m煤ltiples idiomas y ajustable para traducci贸n espec铆fica. |
|
|
|
- Dominio de uso -> Procesamiento de lenguaje natural y traducci贸n. |
|
|
|
### Funci贸n principal: **transcribe_translate** |
|
|
|
Convierte el audio subido (mp3 o wav, por ejemplo) a texto con Whisper, esperando que est茅 en ingl茅s, ya que Whisper 'base.en' est谩 entrenado para ello. |
|
|
|
| model_inputs = tokenizer(transcription, return_tensors="pt") | |
|
|:------------------------------------------------------------:| |
|
|
|
El modelo MBart genera los tokens traducidos al idioma objetivo especificado. Esto se consigue utilizando el ID del token del idioma (lang_code_to_id) proporcionado por el tokenizador. |
|
|
|
### Traducci贸n con MBart |
|
|
|
El texto transcrito es procesado por el tokenizador de MBart, para luego convertirlo en tokens. |
|
|
|
| generated_tokens = translation_model.generate( **model_inputs, forced_bos_token_id=tokenizer.lang_code_to_id[target_language]) | |
|
|:--------------------------------------------------------------------------------------------------------------------------------:| |
|
|
|
|
|
Los tokens generados se convierten de nuevo a texto en el idioma deseado. |
|
|
|
| translated_text = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)[0] | |
|
|:---------------------------------------------------------------------------------------:| |
|
|
|
|
|
|
|
### Sinergia para estos dos modelos: |
|
Tomamos como base que Whisper lo usamos para convertir un archivo de audio a texto en ingl茅s, |
|
y MBart toma el texto transcrito, el cual lo traduce a otro idioma seleccionado previamente. |
|
|
|
**Posibles limitaciones generales** |
|
|
|
1.La precisi贸n general depender谩 tanto de la calidad de la transcripci贸n como de la traducci贸n. A la hora de la traducci贸n, puede llegar err贸nea por culpa de la transcripci贸n. |
|
|
|
2.Los recursos necesarios aumentan significativamente cuando ambos modelos se usan en tiempo real. |
|
|
|
3.Existe la posibilidad de incompatibilidades ling眉isticas o culturales cuando se precise de traducir frases, dichos o expresiones que no tienen un significado directo en otro idioma. |
|
|
|
|
|
# Rendimiento |
|
|
|
Usando el hardware gratuito de Hugging Face (CPU basic - 2cCPU - 16GB), tenemos claramente, un rendimiento un tanto lento pero eficiente, no podemos |
|
esperar la mejor velocidad. Algunos testeos que he hecho marcan lo siguiente: |
|
|
|
| **audio** | **traducci贸n** | |
|
|:---------:|:--------------:| |
|
| 28s | 26s | |
|
| 347s | 190s | |
|
| 345s | 190s | |
|
|
|
Hay un notorio cambio entre los audios cortos y los largos, se aprovecha mejor con audios extensos. |
|
|
|
# Documentaci贸n usada |
|
|
|
- Whisper-small: https://huggingface.co/openai/whisper-small |
|
- tiny-random-MBartForConditionalGeneration: https://huggingface.co/trl-internal-testing/tiny-random-MBartForConditionalGeneration |
|
- SnypzZz/Llama2-13b-Language-translate: https://huggingface.co/SnypzZz/Llama2-13b-Language-translate |
|
- Idea de traductor: https://huggingface.co/spaces/xMcLovinx/translate/tree/main |
|
|
|
# NOTA |
|
Hay un limitador del modelo que desconozco y no he usado en el c贸digo, que pone un m谩ximo de longitud de la transcripci贸n, solo transcribe aproximadamente 15 segundos de audio, aunque cargues uno de mayor longitud. |