🚀 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許可證。