File size: 5,959 Bytes
127353e 9dd91b9 127353e e665107 127353e 27d5f80 e665107 ecedc1e 432bc54 9601b76 a2fdabe d0787ff 9601b76 a2fdabe d0787ff 9601b76 a2fdabe d0787ff 11f7fe4 aaba823 d0787ff ecedc1e 432bc54 ecedc1e fb3242c d0787ff fb3242c 7536772 521d44c 40fa490 521d44c 40fa490 521d44c 40fa490 57e4a00 fb3242c 27d5f80 6990b9c fb3242c 7536772 27d5f80 586ee69 27d5f80 4c9c1de 27d5f80 6990b9c 045d190 6990b9c 27d5f80 6990b9c b6076a3 6990b9c 02f3c95 40fa490 a2fdabe 27d5f80 d0787ff ecedc1e 8d3f34b 27d5f80 4c9c1de 27d5f80 4c9c1de 27d5f80 4a9079d aaba823 b520654 aaba823 b520654 f18a77f 2177007 942721f b3b2ef9 f18a77f 2177007 |
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
---
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. |