from transformers import AutoProcessor, SeamlessM4Tv2ForSpeechToText import torchaudio from torch import Tensor from base64 import b64encode class EndpointHandler(): def __init__(self, path=""): self.path = path self.processor = AutoProcessor.from_pretrained( "facebook/seamless-m4t-v2-large") self.model = SeamlessM4Tv2ForSpeechToText.from_pretrained( "facebook/seamless-m4t-v2-large") self.AUDIO_DEFAULT_SAMPLE_RATE = 16000 def __call__(self, data: dict): input_audio_tensor = data["inputs"]["audio"] input_lang_code = data["inputs"]["input_lang_code"] output_lang_code = data["inputs"]["output_lang_code"] audio_inputs = self.processor( audios=input_audio_tensor, src_lang=input_lang_code, return_tensors="pt") id_array = self.model.generate( **audio_inputs, tgt_lang=output_lang_code) text_array_from_audio = self.processor.batch_decode( id_array, skip_special_tokens=True) return [{"text_array": text_array_from_audio}]