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