import gradio as gr import whisper from transformers import MBartForConditionalGeneration, MBart50TokenizerFast # Cargar modelo Whisper y modelo de traducción MBart whisper_models = { "tiny.en": whisper.load_model("tiny.en"), "base.en": whisper.load_model("base.en"), "small.en": whisper.load_model("small.en"), "medium.en": whisper.load_model("medium.en"), } translation_model = MBartForConditionalGeneration.from_pretrained("SnypzZz/Llama2-13b-Language-translate") translation_tokenizer = MBart50TokenizerFast.from_pretrained("SnypzZz/Llama2-13b-Language-translate", src_lang="en_XX") # Función para transcribir el audio def whisper_transcript(model_size, audio_file): loaded_model = whisper_models[model_size] transcript = loaded_model.transcribe(audio_file, language="english") return transcript["text"] # Función para traducir el texto def translate_text(input_text, language_code): model_inputs = translation_tokenizer(input_text, return_tensors="pt") generated_tokens = translation_model.generate( **model_inputs, forced_bos_token_id=translation_tokenizer.lang_code_to_id[language_code] ) output = translation_tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)[0] return output.strip() # Interfaz de Gradio combinada with gr.Blocks(theme="Nymbo/Nymbo_Theme") as demo: gr.Markdown("# Transcribe y Traduce Audios") gr.Markdown("**Cómo usar**: Selecciona un modelo de transcripción, graba o sube un audio en inglés y clica en transcribir. Luego, elige un idioma y traduce el texto.") # Selección de modelo y entrada de audio model_selector = gr.Dropdown( label="Selecciona el modelo Whisper", choices=["tiny.en", "base.en", "small.en", "medium.en"], value="base.en", ) audio_input = gr.Audio(label="Sube o graba el audio", source=["upload", "microphone"], type="filepath") # Botón para ejecutar transcripción transcript_output = gr.Textbox(label="Texto transcrito (inglés)") transcribe_button = gr.Button("Transcribir Audio") transcribe_button.click(whisper_transcript, inputs=[model_selector, audio_input], outputs=transcript_output) # Selección de idioma de traducción y botón de traducción language_selector = gr.Dropdown(["de_DE", "es_XX", "fr_XX", "sv_SE", "ru_RU"], label="Elige el idioma de salida") translation_output = gr.Textbox(label="Texto traducido") translate_button = gr.Button("Traducir Texto") translate_button.click(translate_text, inputs=[transcript_output, language_selector], outputs=translation_output) # Lanzar la interfaz de Gradio demo.launch()