🚀 SeamlessM4T Large
SeamlessM4T是一系列旨在提供高质量翻译的模型集合,它能让不同语言群体的人们通过语音和文本轻松交流。本仓库托管了🤗 Hugging Face对SeamlessM4T的实现。
🌟 SeamlessM4T v2,这个版本的改进版,采用了全新架构,已在此处发布。这个新模型在质量以及语音生成任务的推理速度上都比SeamlessM4T v1有所提升。
🤗 Transformers也支持SeamlessM4T v2,更多信息可查看这个新版本的模型卡片或直接查看🤗 Transformers文档。
SeamlessM4T Large支持:
这是统一模型的“大型”变体,无需依赖多个单独的模型就能完成多项任务:
- 语音到语音翻译(S2ST)
- 语音到文本翻译(S2TT)
- 文本到语音翻译(T2ST)
- 文本到文本翻译(T2TT)
- 自动语音识别(ASR)
你可以使用单个模型SeamlessM4TModel
执行上述所有任务,但每个任务也有其专用的子模型。
🚀 快速开始
✨ 主要特性
- 支持多种语言的语音和文本输入输出。
- 单个模型可完成多项翻译和识别任务。
- 有改进版本SeamlessM4T v2,在质量和推理速度上有所提升。
📦 安装指南
文档未提及安装步骤,此处跳过。
💻 使用示例
基础用法
首先,加载处理器和模型的检查点:
>>> from transformers import AutoProcessor, SeamlessM4TModel
>>> processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-large")
>>> model = SeamlessM4TModel.from_pretrained("facebook/hf-seamless-m4t-large")
你可以无缝地在文本或音频上使用此模型,以生成翻译后的文本或音频。
以下是如何使用处理器处理文本和音频:
>>>
>>> from datasets import load_dataset
>>> dataset = load_dataset("arabic_speech_corpus", split="test", streaming=True)
>>> audio_sample = next(iter(dataset))["audio"]
>>>
>>> audio_inputs = processor(audios=audio_sample["array"], return_tensors="pt")
>>>
>>> text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt")
高级用法
语音
SeamlessM4TModel
可以“无缝”地生成文本或语音,几乎无需更改代码。让我们以俄语语音翻译为例:
>>> audio_array_from_text = model.generate(**text_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
>>> audio_array_from_audio = model.generate(**audio_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
通过基本相同的代码,我已将英语文本和阿拉伯语语音翻译成俄语语音样本。
文本
同样,你可以使用同一模型从音频文件或文本生成翻译后的文本。你只需将generate_speech=False
传递给SeamlessM4TModel.generate
。这次,让我们翻译成法语。
>>>
>>> output_tokens = model.generate(**audio_inputs, tgt_lang="fra", generate_speech=False)
>>> translated_text_from_audio = processor.decode(output_tokens[0].tolist(), skip_special_tokens=True)
>>>
>>> output_tokens = model.generate(**text_inputs, tgt_lang="fra", generate_speech=False)
>>> translated_text_from_text = processor.decode(output_tokens[0].tolist(), skip_special_tokens=True)
📚 详细文档
使用技巧
1. 使用专用模型
SeamlessM4TModel
是用于生成语音和文本的顶级transformers模型,但你也可以使用专用模型来执行任务,无需额外组件,从而减少内存占用。例如,你可以用专门用于S2ST任务的模型替换音频到音频生成代码片段,其余代码完全相同:
>>> from transformers import SeamlessM4TForSpeechToSpeech
>>> model = SeamlessM4TForSpeechToSpeech.from_pretrained("facebook/hf-seamless-m4t-large")
或者你可以用专门用于T2TT任务的模型替换文本到文本生成代码片段,只需去掉generate_speech=False
。
>>> from transformers import SeamlessM4TForTextToText
>>> model = SeamlessM4TForTextToText.from_pretrained("facebook/hf-seamless-m4t-large")
也可以尝试使用SeamlessM4TForSpeechToText
和SeamlessM4TForTextToSpeech
。
2. 更改说话人身份
你可以使用spkr_id
参数更改用于语音合成的说话人。对于某些语言,某些spkr_id
的效果可能更好!
3. 更改生成策略
你可以为语音和文本生成使用不同的生成策略,例如.generate(input_ids=input_ids, text_num_beams=4, speech_do_sample=True)
,这将依次在文本模型上执行束搜索解码,在语音模型上执行多项抽样。
4. 同时生成语音和文本
使用SeamlessM4TModel
时,设置return_intermediate_token_ids=True
可同时返回语音和文本!
📄 许可证
本项目采用CC BY-NC 4.0许可证。