--- 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.