Seamless简介
Seamless是一系列人工智能模型,旨在实现跨语言更自然、更真实的交流。SeamlessM4T是一个大规模多语言多模态机器翻译模型,支持约100种语言。SeamlessM4T为SeamlessExpressive提供基础,后者是一个跨语言保留语调和声音风格元素的模型。SeamlessStreaming则是一个支持约100种语言的同声传译和流式自动语音识别模型。SeamlessExpressive和SeamlessStreaming被整合到Seamless中,形成一个具有多语言、实时和富有表现力翻译特征的统一模型。
链接
演示
SeamlessM4T v2 | SeamlessExpressive | SeamlessStreaming | |
---|---|---|---|
演示 | SeamlessM4T v2 演示 | SeamlessExpressive 演示 | |
HuggingFace Space 演示 | 🤗 SeamlessM4T v2 Space | 🤗 SeamlessExpressive Space | 🤗 SeamlessStreaming Space |
论文
博客
教程
在NeurIPS 2023 - Seamless EXPO上提供的详尽教程,是学习如何使用整套Seamless模型的一站式资源。请随意尝试该notebook。
SeamlessM4T
SeamlessM4T是我们基础的全能大规模多语言多模态机器翻译模型,为近100种语言的语音和文本提供高质量翻译。
SeamlessM4T模型支持以下任务:
- 语音到语音翻译(S2ST)
- 语音到文本翻译(S2TT)
- 文本到语音翻译(T2ST)
- 文本到文本翻译(T2TT)
- 自动语音识别(ASR)
:star2: 我们正在发布SeamlessM4T v2,这是一个采用我们新颖的UnitY2架构的更新版本。这个新模型在质量和语音生成任务的推理延迟方面都优于SeamlessM4T v1。
要了解更多关于SeamlessM4T模型系列、每个模型使用的方法、它们的语言覆盖范围及其性能,请访问SeamlessM4T README或🤗 模型卡片。
[!注意] Seamless M4T也可在🤗 Transformers库中使用。访问此部分获取更多详情。
SeamlessExpressive
SeamlessExpressive是一个语音到语音翻译模型,它捕捉某些未被充分探索的语调方面,如语速和停顿,同时保留说话者的声音风格和高质量的内容翻译。
要了解更多关于SeamlessExpressive模型的信息,请访问SeamlessExpressive README或🤗 模型卡片。
SeamlessStreaming
SeamlessStreaming是一个流式翻译模型。该模型支持语音作为输入模态,语音/文本作为输出模态。
SeamlessStreaming模型支持以下任务:
- 语音到语音翻译(S2ST)
- 语音到文本翻译(S2TT)
- 自动语音识别(ASR)
要了解更多关于SeamlessStreaming模型的信息,请访问SeamlessStreaming README或🤗 模型卡片。
Seamless
Seamless模型是用于富有表现力的流式语音到语音翻译的统一模型。
最新动态
- [2023/12/18] 我们开源了基于Conformer的W2v-BERT 2.0语音编码器,如论文第3.2.1节所述,这是我们Seamless模型的核心。
- [2023/12/14] 我们发布了在NeurIPS 2023上提供的Seamless教程。
快速开始
安装
[!注意] 先决条件之一是fairseq2,它只为Linux x86-64和Apple silicon Mac计算机提供预构建包。此外,它依赖于libsndfile,可能尚未安装在您的机器上。如果遇到任何安装问题,请参阅其README获取进一步说明。
pip install .
[!注意] 转录推理音频以计算指标使用Whisper,它会自动安装。Whisper反过来需要在您的系统上安装命令行工具
ffmpeg
,可从大多数包管理器获得。
运行推理
SeamlessM4T推理
以下是从根目录使用CLI运行推理的示例。
S2ST任务:
m4t_predict <输入音频路径> --task s2st --tgt_lang <目标语言> --output_path <保存音频路径>
T2TT任务:
m4t_predict <输入文本> --task t2tt --tgt_lang <目标语言> --src_lang <源语言>
请参阅推理README获取如何运行推理的详细说明,以及源端和目标端支持的语音、文本模态的语言列表。
关于使用GGML原生运行S2TT/ASR(无需Python),请参阅unity.cpp部分。
SeamlessExpressive推理
[!注意] 请查看部分了解如何下载模型。
以下是从根目录使用CLI运行推理的示例。
expressivity_predict <输入音频路径> --tgt_lang <目标语言> --model_name seamless_expressivity --vocoder_name vocoder_pretssel --output_path <保存音频路径>
SeamlessStreaming和Seamless推理
流式评估README提供了运行SeamlessStreaming和Seamless模型评估的详细说明。CLI有一个--no-scoring
选项,可用于跳过评分部分,仅运行推理。
请查看推理README获取更多详情。
运行SeamlessStreaming演示
您可以复制SeamlessStreaming HF space来运行流式演示。
您也可以通过从这里克隆space在本地运行演示。有关安装的更多详情,请参阅SeamlessStreaming HF仓库的README。
在本地运行SeamlessM4T和SeamlessExpressive Gradio演示
要在本地启动与我们在Hugging Face上托管的相同演示Space:
cd demo
pip install -r requirements.txt
python app.py
资源和使用
模型
SeamlessM4T 模型
模型名称 | 参数数量 | 检查点 | 指标 |
---|---|---|---|
SeamlessM4T-Large v2 | 23亿 | 🤗 模型卡 - 检查点 | 指标 |
SeamlessM4T-Large (v1) | 23亿 | 🤗 模型卡 - 检查点 | 指标 |
SeamlessM4T-Medium (v1) | 12亿 | 🤗 模型卡 - 检查点 | 指标 |
SeamlessExpressive 模型
要访问和下载 SeamlessExpressive,请通过此申请表申请模型资源。获得批准后,您将收到一封包含每个模型资源下载链接的电子邮件。
请注意,SeamlessExpressive 是根据其自身的许可协议和可接受使用政策提供的。
SeamlessStreaming 模型
模型名称 | 参数数量 | 检查点 | 指标 |
---|---|---|---|
SeamlessStreaming | 25亿 | 🤗 模型卡 - 单调解码器检查点 - 流式 UnitY2 检查点 | 指标 |
Seamless 模型
Seamless 模型实际上就是将 SeamlessStreaming 模型中的非表现力 vocoder_v2
替换为表现力 vocoder_pretssel
的版本。
请查看上面的章节了解如何获取 vocoder_pretssel
检查点。
W2v-BERT 2.0 语音编码器
以下是如何通过语音编码器进行前向传播的方法:
import torch
from fairseq2.data.audio import AudioDecoder, WaveformToFbankConverter
from fairseq2.memory import MemoryBlock
from fairseq2.nn.padding import get_seqs_and_padding_mask
from fairseq2.data import Collater
from pathlib import Path
from seamless_communication.models.conformer_shaw import load_conformer_shaw_model
audio_wav_path, device, dtype = ...
audio_decoder = AudioDecoder(dtype=torch.float32, device=device)
fbank_converter = WaveformToFbankConverter(
num_mel_bins=80,
waveform_scale=2**15,
channel_last=True,
standardize=True,
device=device,
dtype=dtype,
)
collater = Collater(pad_value=1)
model = load_conformer_shaw_model("conformer_shaw", device=device, dtype=dtype)
model.eval()
with Path(audio_wav_path).open("rb") as fb:
block = MemoryBlock(fb.read())
decoded_audio = audio_decoder(block)
src = collater(fbank_converter(decoded_audio))["fbank"]
seqs, padding_mask = get_seqs_and_padding_mask(src)
with torch.inference_mode():
seqs, padding_mask = model.encoder_frontend(seqs, padding_mask)
seqs, padding_mask = model.encoder(seqs, padding_mask)
评估
SeamlessM4T 评估
要复现我们的结果,或使用相同的指标对您自己的测试集进行评估,请查看此处的 README。
SeamlessExpressive 评估
以下是高效批量评估的脚本。
export MODEL_DIR="/path/to/SeamlessExpressive/model"
export TEST_SET_TSV="input.tsv" # 您的数据集,TSV 文件格式,包含 "id"、"audio" 等表头
export TGT_LANG="spa" # 目标翻译语言,选项包括 "fra"、"deu"、"eng"("cmn" 和 "ita" 为实验性支持)
export OUTPUT_DIR="tmp/" # 生成的文本/单元/波形的输出目录
export TGT_TEXT_COL="tgt_text" # ${TEST_SET_TSV} 中用于参考目标文本的列,用于计算 BLEU 分数。可以跳过此参数。
export DFACTOR="1.0" # 模型推理的持续时间因子,用于调整每个位置的预测持续时间(preddur=DFACTOR*preddur),影响输出语音速率。值越大意味着语音速率越慢(默认为 1.0)。有关我们使用的持续时间因子详情,请参见表现力评估 README。
expressivity_evaluate ${TEST_SET_TSV} \
--gated-model-dir ${MODEL_DIR} --task s2st --tgt_lang ${TGT_LANG} \
--audio_root_dir "" --output_path ${OUTPUT_DIR} --ref_field ${TGT_TEXT_COL} \
--model_name seamless_expressivity --vocoder_name vocoder_pretssel \
--text_unk_blocking True --duration_factor ${DFACTOR}
请查看此 README 章节
SeamlessStreaming 和 Seamless 评估
流式评估 README 中有关于运行 SeamlessStreaming 和 Seamless 模型评估的详细说明。
Unity.cpp
为了实现无处不在的无缝通信,我们实现了 unity.cpp,使用户可以在 GGML(一个 C 语言张量库,便于在各种平台上集成)中运行 SeamlessM4T 模型。
要转录/翻译给定的音频,请执行以下命令:
./ggml/bin/unity --model seamlessM4T_medium.ggml input.wav
有关构建和更多用法的详细信息,请查看 unity.cpp
表现力数据集
我们创建了两个表现力语音到语音翻译数据集,mExpresso 和 mDRAL,涵盖英语和其他五种语言 —— 法语、德语、意大利语、普通话和西班牙语。目前,我们开源了 mExpresso 中英语到其他语言方向的语音到文本部分,剩余部分的数据集将很快开源。详情请查看 README
SeamlessAlignExpressive
我们正在推出首个表现力语音对齐程序。从原始数据开始,表现力对齐程序自动发现不仅含义相同,而且整体表现力相同的音频片段对。为展示这一程序,我们提供了元数据,用于创建一个名为 SeamlessAlignExpressive 的基准数据集,可用于验证我们的对齐方法的质量。SeamlessAlignExpressive 是首个大规模(11,000+ 小时)多语言表现力翻译音频对齐集合。更多详情可在 SeamlessAlignExpressive README 中找到。
将原始音频转换为单元
请查看此处的 README。请注意,SeamlessM4T v1 模型使用简化单元,而其他模型使用非简化单元。
库
无缝通信依赖于 Meta 开发的 4 个库。
fairseq2
fairseq2 是我们下一代开源序列建模组件库,为研究人员和开发人员提供机器翻译、语言建模和其他序列生成任务的构建模块。本仓库中的所有 SeamlessM4T 模型都由 fairseq2 提供支持。
SONAR 和 BLASER 2.0
SONAR(Sentence-level multimOdal and laNguage-Agnostic Representations)是一个新的多语言和多模态句子嵌入空间,在 xsim 和 xsim++ 多语言相似度搜索任务上优于现有的句子嵌入,如 LASER3 和 LabSE。SONAR 为多种语言提供文本和语音编码器。SeamlessAlign 是基于 SONAR 嵌入进行挖掘的。 BLASER 2.0是我们最新的基于模型的多模态翻译评估指标。它是BLASER的扩展版本,支持语音和文本。它直接在源信号上操作,因此不需要像ASR-BLEU那样的中间ASR系统。与第一个版本一样,BLASER 2.0利用输入和输出句子嵌入之间的相似性。SONAR是BLASER 2.0的底层嵌入空间。使用BLASER 2.0进行评估的脚本可以在SONAR仓库中找到。
stopes
作为无缝通信项目的一部分,我们扩展了stopes库。第一版提供了用于构建翻译模型训练数据集的文本到文本挖掘工具。第二版借助SONAR进行了扩展,支持围绕训练大型语音翻译模型的任务。特别是,我们提供了读取/写入fairseq audiozip数据集的工具,以及一个新的挖掘流程,可以进行语音到语音、文本到语音、语音到文本和文本到文本的挖掘,所有这些都基于新的SONAR嵌入空间。
SimulEval
SimulEval是一个用于评估同声传译模型的库。SimulEval还提供了一个后端,用于使用部分/增量输入进行生成,具有灵活/可扩展的状态,用于实现流式推理。用户定义实现SimulEval接口的代理,这些代理可以在管道中连接在一起。您可以在这里找到为SeamlessStreaming实现的代理。
[遗留] SeamlessM4T v1说明
微调SeamlessM4T v1模型
请查看此处的README。
设备端模型
除了Seamless-M4T大型(2.3B)和中型(1.2B)模型外,我们还发布了一个针对设备端推理的小型模型(281M)。要了解更多关于使用和模型详情,请查看此处的README。
SeamlessAlign挖掘数据集
我们开源了SeamlessAlign的元数据,这是最大的开放多模态翻译数据集,总计超过27万小时的对齐语音和文本数据。社区可以根据SeamlessAlign readme重建该数据集。
引用
如果您在工作中使用Seamless或任何在Seamless中发布的模型/数据集/工件,请引用:
@inproceedings{seamless2023,
title="Seamless: Multilingual Expressive and Streaming Speech Translation",
author="{Seamless Communication}, Lo{\"i}c Barrault, Yu-An Chung, Mariano Coria Meglioli, David Dale, Ning Dong, Mark Duppenthaler, Paul-Ambroise Duquenne, Brian Ellis, Hady Elsahar, Justin Haaheim, John Hoffman, Min-Jae Hwang, Hirofumi Inaguma, Christopher Klaiber, Ilia Kulikov, Pengwei Li, Daniel Licht, Jean Maillard, Ruslan Mavlyutov, Alice Rakotoarison, Kaushik Ram Sadagopan, Abinesh Ramakrishnan, Tuan Tran, Guillaume Wenzek, Yilin Yang, Ethan Ye, Ivan Evtimov, Pierre Fernandez, Cynthia Gao, Prangthip Hansanti, Elahe Kalbassi, Amanda Kallet, Artyom Kozhevnikov, Gabriel Mejia, Robin San Roman, Christophe Touret, Corinne Wong, Carleigh Wood, Bokai Yu, Pierre Andrews, Can Balioglu, Peng-Jen Chen, Marta R. Costa-juss{\`a}, Maha Elbayad, Hongyu Gong, Francisco Guzm{\'a}n, Kevin Heffernan, Somya Jain, Justine Kao, Ann Lee, Xutai Ma, Alex Mourachko, Benjamin Peloquin, Juan Pino, Sravya Popuri, Christophe Ropers, Safiyyah Saleem, Holger Schwenk, Anna Sun, Paden Tomasello, Changhan Wang, Jeff Wang, Skyler Wang, Mary Williamson",
journal={ArXiv},
year={2023}
}
许可证
我们有三个许可证类别。
以下非生成组件根据MIT_LICENSE中的MIT许可证授权:
- W2v-BERT 2.0语音编码器
- 代码
- mExpresso数据集中仅文本部分,详见SeamlessExpressive README。
- UnitY2强制对齐提取器,详见UnitY2 Aligner README。
- 语音毒性工具和etox数据集,详见ETOX README。
- MuTox:通用多语言基于音频的毒性数据集和零样本检测器Mutox README
以下模型根据LICENSE中的CC-BY-NC 4.0许可证授权:
- SeamlessM4T模型(v1和v2)。
- SeamlessStreaming模型。
以下模型根据SEAMLESS_LICENSE中的Seamless许可证授权:
- Seamless模型。
- SeamlessExpressive模型。