窝牛号

Meta发布多模态模型SeamlessM4T——可无缝翻译和转录语音和文本

机器翻译一直是人工智能研究的焦点,毕竟这个世界上的语言种类太多,文字更是数不胜数。如何打通人类的文字与语言,一直是研究人员研究的重点。在以往的机器翻译上,人类一直是使用类似查表的方式,很多年前的机器翻译直接是另外一个语言对应另外一个语言的单词进行生生的对应,使用机器翻译的文字,大家一看便是机器翻译的。

随着Google发布的transformer模型,把机器翻译的实力增加了一大截,甚至现在机器翻译的例子超过了人类的水准。

transformer模型刚发布时便是为机器翻译这个小应用来打造的一个模型,随着注意力机制的大火,把transformer模型发展到了对象检测,目标分类等任务,更是把transformer模型发展到了多模态任务。随着ChatGPT的发布,更是把transformer模型推到了风口浪尖上。

机器翻译虽然是小众任务,但是文本与语音的多模态翻译任务,却很少有模型涵盖如此多的语音与文本。SeamlessM4T——大规模多语言和多模态机器翻译——一个支持语音到语音翻译、语音到文本翻译、文本到语音翻译、文本到文本翻译的单一模型,以及多达 100 种语言的自动语音识别的多模态模型。是一种基础的多语言和多任务模型,可以无缝翻译和转录语音和文本。

SeamlessM4T 支持:

自动语音识别近百种语言近 100 种输入和输出语言的语音到文本翻译语音翻译,支持近100种输入语言和35种(+英语)输出语言近 100 种语言的文本到文本翻译文本转语音翻译,支持近100种输入语言和35种(+英语)输出语言

对于SeamlessM4T模型,使用多任务UnitY模型架构,它能够直接生成翻译后的文本和语音。这种新架构还支持自动语音识别、文本到文本、文本到语音、语音到文本和语音到语音翻译,这些功能已经成为UnityY 模型的一部分。

多任务 UnitY 模型由三个主要的组件组成。

文本和语音编码器的任务是识别近 100 种语言的语音输入。文本解码器将该语音转换为近 100 种文本语言。使用文本到音频模型将其解码为 36 种语言的语音。

SeamlessM4T模型的自监督语音编码器 w2v-BERT 2.0 是 w2v-BERT 的改进版本,通过分析数百万小时的多语言语音来学习语音的结构和含义。

SeamlessM4T模型有一个基于 NLLB 模型的文本编码器。它经过训练可以理解近 100 种语言的文本并生成相应的翻译文本。

类似SeamlessM4T 这样的数据驱动模型通常受益于大量高质量的端到端数据,即语音到文本和语音到语音数据。仅依靠人工转录和翻译的语音无法应对 100 种语言的语音翻译这一具有挑战性的任务。Meta AI为200 种语言构建了一个新的大规模多语言和模态文本嵌入空间,名为SONAR,在多语言相似性搜索中,其性能大大优于 LASER3 或 LaBSE 等现有方法。

SeamlessM4T 在近 100 种语言中实现了最先进的结果,并在自动语音识别、语音转文本、语音转语音、文本转语音和文本转语音等方面实现了多任务实现。SeamlessM4T的官方论文有100多页,作者有几十位,可想而知SeamlessM4T模型的复杂性。但Meta AI依然开源了SeamlessM4T模型,我们可以直接在GitHub上来查看使用SeamlessM4T模型。

SeamlessM4T模型,官方公布了2个模型文件。一个medium 12亿参数的中等模型,另外一个是23亿参数的large大模型,每个模型都包含了如下几个多任务,我们直接可以使用GitHub的官方代码来实现。

Speech-to-speech translation (S2ST) Speech-to-text translation (S2TT) Text-to-speech translation (T2ST) Text-to-text translation (T2TT) Automatic speech recognition (ASR) pip install . S2ST task: m4t_predict <path_to_input_audio> s2st <tgt_lang> --output_path <path_to_save_audio> T2TT task: m4t_predict <input_text> t2tt <tgt_lang> --src_lang <src_lang> S2TT: m4t_predict <path_to_input_audio> s2tt <tgt_lang> T2ST: m4t_predict <input_text> t2st <tgt_lang> --src_lang <src_lang> --output_path <path_to_save_audio> ASR: m4t_predict <path_to_input_audio> asr <tgt_lang>

SeamlessM4T模型要求的音频文件16khz,官方也提供了代码来格式化输入的语音。

import torchaudio resample_rate = 16000 waveform, sample_rate = torchaudio.load(<path_to_input_audio>) resampler = torchaudio.transforms.Resample(sample_rate, resample_rate, dtype=waveform.dtype) resampled_waveform = resampler(waveform) torchaudio.save(<path_to_resampled_audio>, resampled_waveform, resample_rate)

格式化后语音后,我们就可以使用以下代码使用SeamlessM4T模型了。

import torch import torchaudio from seamless_communication.models.inference import Translator translator = Translator(&34;, &34;, torch.device(&34;), torch.float16) 34;s2st& T2ST translated_text, wav, sr = translator.predict(<input_text>, &34;, <tgt_lang>, src_lang=<src_lang>) wav, sr = translator.synthesize_speech(<speech_units>, <tgt_lang>) torchaudio.save( <path_to_save_audio>, wav[0].cpu(),sample_rate=sr,) 34;s2tt& ASR transcribed_text, _, _ = translator.predict(<path_to_input_audio>, &34;, <src_lang>) 34;t2tt& hugging face体验链接 https://seamless.metademolab.com/开源链接

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1