Funbi/Translation_app
0
1import whisper2 3model = whisper.load_model("medium")4 5from transformers import pipeline6en_fr_translator = pipeline("translation_en_to_fr")7 8import gradio as gr 9import time10LANGUAGES = {11 "en": "english",12 "zh": "chinese",13 "de": "german",14 "es": "spanish",15 "ru": "russian",16 "ko": "korean",17 "fr": "french",18 "ja": "japanese",19 "pt": "portuguese",20 "tr": "turkish",21 "pl": "polish",22 "ca": "catalan",23 "nl": "dutch",24 "ar": "arabic",25 "sv": "swedish",26 "it": "italian",27 "id": "indonesian",28 "hi": "hindi",29 "fi": "finnish",30 "vi": "vietnamese",31 "iw": "hebrew",32 "uk": "ukrainian",33 "el": "greek",34 "ms": "malay",35 "cs": "czech",36 "ro": "romanian",37 "da": "danish",38 "hu": "hungarian",39 "ta": "tamil",40 "no": "norwegian",41 "th": "thai",42 "ur": "urdu",43 "hr": "croatian",44 "bg": "bulgarian",45 "lt": "lithuanian",46 "la": "latin",47 "mi": "maori",48 "ml": "malayalam",49 "cy": "welsh",50 "sk": "slovak",51 "te": "telugu",52 "fa": "persian",53 "lv": "latvian",54 "bn": "bengali",55 "sr": "serbian",56 "az": "azerbaijani",57 "sl": "slovenian",58 "kn": "kannada",59 "et": "estonian",60 "mk": "macedonian",61 "br": "breton",62 "eu": "basque",63 "is": "icelandic",64 "hy": "armenian",65 "ne": "nepali",66 "mn": "mongolian",67 "bs": "bosnian",68 "kk": "kazakh",69 "sq": "albanian",70 "sw": "swahili",71 "gl": "galician",72 "mr": "marathi",73 "pa": "punjabi",74 "si": "sinhala",75 "km": "khmer",76 "sn": "shona",77 "yo": "yoruba",78 "so": "somali",79 "af": "afrikaans",80 "oc": "occitan",81 "ka": "georgian",82 "be": "belarusian",83 "tg": "tajik",84 "sd": "sindhi",85 "gu": "gujarati",86 "am": "amharic",87 "yi": "yiddish",88 "lo": "lao",89 "uz": "uzbek",90 "fo": "faroese",91 "ht": "haitian creole",92 "ps": "pashto",93 "tk": "turkmen",94 "nn": "nynorsk",95 "mt": "maltese",96 "sa": "sanskrit",97 "lb": "luxembourgish",98 "my": "myanmar",99 "bo": "tibetan",100 "tl": "tagalog",101 "mg": "malagasy",102 "as": "assamese",103 "tt": "tatar",104 "haw": "hawaiian",105 "ln": "lingala",106 "ha": "hausa",107 "ba": "bashkir",108 "jw": "javanese",109 "su": "sundanese",110}111 112def transcribe(audio):113 114 115 # load audio and pad or trim it to fit 30 seconds116 audio = whisper.load_audio(audio)117 audio = whisper.pad_or_trim(audio)118 119 # make log-Mel spectrogram and move to the same device as the model120 mel = whisper.log_mel_spectrogram(audio).to(model.device)121 122 # detect the spoken language123 _, probs = model.detect_language(mel)124 language= max(probs, key=probs.get)125 lang = LANGUAGES[language]126 #lang=(f"Detected language: {max(probs, key=probs.get)}")127 lang=(f"Detected language: {lang}")128 129 130 131 132 133 # decode the audio134 options = whisper.DecodingOptions(fp16 = False,task= "translate")135 result = whisper.decode(model, mel, options)136 word= result.text137 trans = en_fr_translator(word)138 Trans = trans[0]['translation_text']139 result=f"{lang}\n{word}\n\nFrench translation: {Trans}"140 return result141 142 143gr.Interface(144title = 'OpenAI Whisper ASR Gradio Web UI',description="This app will take an audio input and it will try to guess the language and also translate it to french ",145fn=transcribe,146inputs=[147 gr.inputs.Audio(source="microphone", type="filepath")148],149outputs=[150 "textbox"151],152live=True).launch()