(input_wav, language, fs=16000)
| 139 | return new_s.strip() |
| 140 | |
| 141 | def model_inference(input_wav, language, fs=16000): |
| 142 | # task_abbr = {"Speech Recognition": "ASR", "Rich Text Transcription": ("ASR", "AED", "SER")} |
| 143 | language_abbr = {"auto": "auto", "zh": "zh", "en": "en", "yue": "yue", "ja": "ja", "ko": "ko", |
| 144 | "nospeech": "nospeech"} |
| 145 | |
| 146 | # task = "Speech Recognition" if task is None else task |
| 147 | language = "auto" if len(language) < 1 else language |
| 148 | selected_language = language_abbr[language] |
| 149 | # selected_task = task_abbr.get(task) |
| 150 | |
| 151 | # print(f"input_wav: {type(input_wav)}, {input_wav[1].shape}, {input_wav}") |
| 152 | |
| 153 | if isinstance(input_wav, tuple): |
| 154 | fs, input_wav = input_wav |
| 155 | input_wav = input_wav.astype(np.float32) / np.iinfo(np.int16).max |
| 156 | if len(input_wav.shape) > 1: |
| 157 | input_wav = input_wav.mean(-1) |
| 158 | if fs != 16000: |
| 159 | print(f"audio_fs: {fs}") |
| 160 | resampler = torchaudio.transforms.Resample(fs, 16000) |
| 161 | input_wav_t = torch.from_numpy(input_wav).to(torch.float32) |
| 162 | input_wav = resampler(input_wav_t[None, :])[0, :].numpy() |
| 163 | |
| 164 | |
| 165 | merge_vad = True #False if selected_task == "ASR" else True |
| 166 | print(f"language: {language}, merge_vad: {merge_vad}") |
| 167 | text = model.generate(input=input_wav, |
| 168 | cache={}, |
| 169 | language=language, |
| 170 | use_itn=True, |
| 171 | batch_size_s=60, merge_vad=merge_vad) |
| 172 | |
| 173 | print(text) |
| 174 | text = text[0]["text"] |
| 175 | text = format_str_v3(text) |
| 176 | |
| 177 | print(text) |
| 178 | |
| 179 | return text |
| 180 | |
| 181 | |
| 182 | audio_examples = [ |
nothing calls this directly
no test coverage detected