hf-seamless-m4t-medium项目介绍
项目背景
对于许多不同语言社群的人们来说,语言障碍是一大沟通障碍。SeamlessM4T是专门为提高翻译质量而设计的一系列模型,旨在帮助这些群体通过语音和文本实现无障碍交流。hf-seamless-m4t-medium是这一模型中的一个特别版本,集成了多项语言任务,专注于多语言沟通的无缝体验。
项目特点
hf-seamless-m4t-medium 项目作为SeamlessM4T的“medium”版,支持以下功能:
- 支持101种语言的语音输入。
- 支持196种语言的文本输入和输出。
- 支持35种语言的语音输出。
这种“medium”模型是一种统一模型,可以无须依赖多个独立模型即可执行多项任务,包括:
- 语音到语音翻译(S2ST)
- 语音到文本翻译(S2TT)
- 文本到语音翻译(T2ST)
- 文本到文本翻译(T2TT)
- 自动语音识别(ASR)
用户只需使用单一模型,即可完成上述所有任务。
使用方法
基本加载
用户可以首先加载处理器和模型的检查点,来准备进行语音或者文本的处理:
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()
文本生成
同样,也可以从音频文件或文本生成翻译文本,只需在生成函数中设置generate_speech=False
。以下示例展示将内容翻译为法语:
# 从音频翻译
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):
from transformers import SeamlessM4TForTextToText
model = SeamlessM4TForTextToText.from_pretrained("facebook/hf-seamless-m4t-medium")
2. 更改说话人身份
用户可以通过spkr_id
参数更改语音合成的说话人身份,不同的spkr_id
可能在某些语言下表现更佳。
3. 更改生成策略
不同的生成策略可以用于语音和文本的生成,比如可以在文本生成中使用多束搜索,语音生成中使用多项分布抽样。
4. 同时生成语音和文本
通过在SeamlessM4TModel
中使用return_intermediate_token_ids=True
可以同时返回生成的语音和文本。
通过这些功能和使用技巧,hf-seamless-m4t-medium为多语言交流提供了模块化和灵活的解决方案。