Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline | |
| from transformers import MBartForConditionalGeneration, MBart50TokenizerFast | |
| from utils import lang_ids | |
| import nltk | |
| nltk.download('punkt') | |
| MODEL_NAME = "Pranjal12345/pranjal_whisper_medium" | |
| BATCH_SIZE = 10 | |
| FILE_LIMIT_MB = 1000 | |
| pipe = pipeline( | |
| task="automatic-speech-recognition", | |
| model=MODEL_NAME, | |
| chunk_length_s=30, | |
| device='cpu', | |
| ) | |
| model = MBartForConditionalGeneration.from_pretrained("sanjitaa/mbart-many-to-many") | |
| tokenizer = MBart50TokenizerFast.from_pretrained("sanjitaa/mbart-many-to-many") | |
| lang_list = list(lang_ids.keys()) | |
| def translate_audio(inputs,target_language): | |
| if inputs is None: | |
| raise gr.Error("No audio file submitted! Please upload an audio file before submitting your request.") | |
| text = pipe(inputs, batch_size=BATCH_SIZE, generate_kwargs={"task": "translate"}, return_timestamps=True)["text"] | |
| target_lang = lang_ids[target_language] | |
| if target_language == 'English': | |
| return text | |
| else: | |
| tokenizer.src_lang = "en_XX" | |
| chunks = nltk.tokenize.sent_tokenize(text) | |
| translated_text = '' | |
| for segment in chunks: | |
| encoded_chunk = tokenizer(segment, return_tensors="pt") | |
| generated_tokens = model.generate( | |
| **encoded_chunk, | |
| forced_bos_token_id=tokenizer.lang_code_to_id[target_lang] | |
| ) | |
| translated_chunk = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True) | |
| translated_text = translated_text + translated_chunk[0] | |
| return translated_text | |
| inputs=[ | |
| gr.inputs.Audio(source="upload", type="filepath", label="Audio file"), | |
| gr.Dropdown(lang_list, value="English", label="Target Language"), | |
| ] | |
| description = "Audio translation" | |
| translation_interface = gr.Interface( | |
| fn=translate_audio, | |
| inputs= inputs, | |
| outputs="text", | |
| title="Speech Translation", | |
| description= description | |
| ) | |
| if __name__ == "__main__": | |
| translation_interface.launch() | |