🚀 SeamlessM4T Medium
SeamlessM4T是一组旨在提供高质量翻译的模型,它能让不同语言群体的人们通过语音和文本轻松交流。本仓库托管了🤗 Hugging Face对SeamlessM4T的实现。你可以在原始的模型中心仓库(大模型和中等模型检查点)中找到原始权重以及运行它们的指南。
⚠️ 重要提示
🌟 具有全新架构的SeamlessM4T v2(此版本的改进版)已在此处发布。这个新模型在质量和语音生成任务的推理速度上都比SeamlessM4T v1有所提升。
SeamlessM4T v2也得到了🤗 Transformers的支持,更多信息可在新版本的模型卡片或直接在🤗 Transformers文档中查看。
🚀 快速开始
SeamlessM4T Medium支持以下功能:
这是统一模型的“中等”变体,无需依赖多个单独的模型即可完成多项任务:
- 语音到语音翻译(S2ST)
- 语音到文本翻译(S2TT)
- 文本到语音翻译(T2ST)
- 文本到文本翻译(T2TT)
- 自动语音识别(ASR)
你可以使用单个模型SeamlessM4TModel
完成上述所有任务,但每个任务也有其专用的子模型。
✨ 主要特性
- 提供高质量的翻译服务,打破语言障碍,促进不同语言群体之间的交流。
- 支持多种语言的语音和文本输入输出,覆盖范围广泛。
- 统一模型架构,可在单个模型中完成多种翻译和识别任务。
- 有改进版本SeamlessM4T v2,在质量和推理速度上有所提升。
📦 安装指南
文档未提及安装步骤,故跳过此章节。
💻 使用示例
基础用法
>>> from transformers import AutoProcessor, SeamlessM4TModel
>>> processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> model = SeamlessM4TModel.from_pretrained("facebook/hf-seamless-m4t-medium")
高级用法
语音处理
>>> 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")
>>> 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()
文本处理
>>> 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
是用于生成语音和文本的顶级模型,但你也可以使用专用模型来执行任务,无需额外组件,从而减少内存占用。例如,你可以用专门用于S2ST任务的模型替换音频到音频生成代码片段,其余代码完全相同:
>>> from transformers import SeamlessM4TForSpeechToSpeech
>>> model = SeamlessM4TForSpeechToSpeech.from_pretrained("facebook/hf-seamless-m4t-medium")
或者,你可以用专门用于T2TT任务的模型替换文本到文本生成代码片段,只需去掉generate_speech=False
。
>>> from transformers import SeamlessM4TForTextToText
>>> model = SeamlessM4TForTextToText.from_pretrained("facebook/hf-seamless-m4t-medium")
你也可以尝试使用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许可证。