模型简介
模型特点
模型能力
使用案例
🚀 Canary 180M Flash
NVIDIA NeMo Canary Flash [1] 是基于 Canary 架构 [2] 的多语言多任务模型家族,在多个语音基准测试中取得了领先的性能。canary-180m-flash 拥有 1.82 亿个参数,推理速度超过 1200 RTFx(在 open-asr-leaderboard 数据集上),支持 4 种语言(英语、德语、法语、西班牙语)的自动语音转文本识别(ASR),以及英语与德语/法语/西班牙语之间的翻译,支持有或无标点和大小写(PnC)的输出。此外,canary-180m-flash 还提供了英语、德语、法语和西班牙语的单词级和片段级时间戳的实验性功能。该模型根据宽松的 CC-BY-4.0 许可证发布,可用于商业用途。
🚀 快速开始
若要使用 canary-180m-flash 进行训练、微调或转录,你需要安装 NVIDIA NeMo。该模型可在 NeMo 框架 [7] 中使用,可作为预训练检查点进行推理或在其他数据集上进行微调。更多详细信息请参考 我们的教程。
✨ 主要特性
- 多语言多任务处理:支持 4 种语言的自动语音识别和翻译。
- 高性能:在多个语音基准测试中取得了领先的性能。
- 实验性功能:提供单词级和片段级时间戳的实验性功能。
- 商业可用:根据 CC-BY-4.0 许可证发布,可用于商业用途。
📦 安装指南
要使用 canary-180m-flash 进行训练、微调或转录,你需要安装 NVIDIA NeMo。
💻 使用示例
基础用法
加载模型
from nemo.collections.asr.models import EncDecMultiTaskModel
# load model
canary_model = EncDecMultiTaskModel.from_pretrained('nvidia/canary-180m-flash')
# update decode params
decode_cfg = canary_model.cfg.decoding
decode_cfg.beam.beam_size = 1
canary_model.change_decoding_strategy(decode_cfg)
输入为音频文件路径列表时的推理
output = canary_model.transcribe(
['path1.wav', 'path2.wav'],
batch_size=16, # batch size to run the inference with
pnc='True', # generate output with Punctuation and Capitalization
)
predicted_text = output[0].text
预测单词级和片段级时间戳
output = canary_model.transcribe(
['filepath.wav'],
timestamps=True, # generate output with timestamps
)
predicted_text = output[0].text
word_level_timestamps = output[0].timestamp['word']
segment_level_timestamps = output[0].timestamp['segment']
输入为 jsonl 清单文件时的推理
# Example of a line in input_manifest.json
{
"audio_filepath": "/path/to/audio.wav", # path to the audio file
"source_lang": "en", # language of the audio input, set `source_lang`==`target_lang` for ASR, choices=['en','de','es','fr']
"target_lang": "en", # language of the text output, choices=['en','de','es','fr']
"pnc": "yes", # whether to have PnC output, choices=['yes', 'no']
"timestamp": "yes", # whether to output word-level timestamps, choices=['yes', 'no']
}
output = canary_model.transcribe(
"<path to input manifest file>",
batch_size=16, # batch size to run the inference with
)
高级用法
长音频推理
Canary 模型设计用于处理小于 40 秒的输入音频。为了处理更长的音频,NeMo 包含 speech_to_text_aed_chunked_infer.py 脚本,该脚本处理分块、对分块文件进行推理并拼接转录结果。
python scripts/speech_to_text_aed_chunked_infer.py \
pretrained_name="nvidia/canary-180m-flash" \
audio_dir=$audio_dir \
output_filename=$output_json_path \
chunk_len_in_secs=40.0 \
batch_size=1 \
decoding.beam.beam_size=1 \
timestamps=False
注意:对于带时间戳的长音频推理,建议使用 10 秒的 chunk_len_in_secs
。
📚 详细文档
模型架构
Canary 是一个编码器 - 解码器模型,具有 FastConformer [3] 编码器和 Transformer 解码器 [4]。从编码器提取音频特征后,诸如 <target language>
、<task>
、<toggle timestamps>
和 <toggle PnC>
等任务令牌被输入到 Transformer 解码器中以触发文本生成过程。Canary 使用来自每种语言的单个 SentencePiece [6] 分词器的连接分词器 [5],这使得它易于扩展到更多语言。canary-180m-flash 模型有 17 个编码器层和 4 个解码器层,总共有 1.82 亿个参数。有关架构的更多详细信息,请参考 [1]。
输入输出信息
输入
- 输入类型:音频
- 输入格式:.wav 或 .flac 文件
- 输入参数:一维
- 其他输入相关属性:16000 Hz 单声道音频,无需预处理
输出
- 输出类型:文本
- 输出格式:根据解码任务选择,以字符串形式输出文本(带时间戳)
- 输出参数:一维文本字符串
- 其他输出相关属性:可能需要逆文本归一化;不处理特殊字符
软件集成
运行时引擎
- NeMo - main
支持的硬件微架构兼容性
- [NVIDIA Ampere]
- [NVIDIA Blackwell]
- [NVIDIA Jetson]
- [NVIDIA Hopper]
- [NVIDIA Lovelace]
- [NVIDIA Pascal]
- [NVIDIA Turing]
- [NVIDIA Volta]
首选/支持的操作系统
- [Linux]
- [Linux 4 Tegra]
- [Windows]
模型版本
canary-180m-flash
训练和评估数据集
训练数据集
canary-180m-flash 模型在总共 85000 小时的语音数据上进行训练。其中包括 31000 小时的公共数据、20000 小时由 Suno 收集的数据和 34000 小时的内部数据。这些数据集包括对话、网络视频和有声读物录音。
数据收集方法:人工
标注方法:混合:人工、自动
公共数据的组成如下:
- 英语(25500 小时):Librispeech 960 小时、Fisher Corpus、Switchboard-1 数据集、WSJ-0 和 WSJ-1、National Speech Corpus(第 1 部分、第 6 部分)、VCTK、VoxPopuli(英语)、Europarl-ASR(英语)、Multilingual Librispeech(MLS 英语) - 2000 小时子集、Mozilla Common Voice(v7.0)、People's Speech - 12000 小时子集、Mozilla Common Voice(v11.0) - 1474 小时子集。
- 德语(2500 小时):Mozilla Common Voice(v12.0) - 800 小时子集、Multilingual Librispeech(MLS 德语) - 1500 小时子集、VoxPopuli(德语) - 200 小时子集。
- 西班牙语(1400 小时):Mozilla Common Voice(v12.0) - 395 小时子集、Multilingual Librispeech(MLS 西班牙语) - 780 小时子集、VoxPopuli(西班牙语) - 108 小时子集、Fisher - 141 小时子集。
- 法语(1800 小时):Mozilla Common Voice(v12.0) - 708 小时子集、Multilingual Librispeech(MLS 法语) - 926 小时子集、VoxPopuli(法语) - 165 小时子集。
评估数据集
数据收集方法:人工
标注方法:人工
- 自动语音识别:HuggingFace OpenASR Leaderboard 评估集、MLS、MCV
- 自动语音翻译:FLEURS、COVOST-v2、mExpresso
- 时间戳预测:Librispeech
- 幻觉鲁棒性:MUSAN 48 小时评估集
- 噪声鲁棒性:Librispeech
- 模型公平性:Casual Conversations Dataset
训练
canary-180m-flash 使用 NVIDIA NeMo 框架 [7] 进行训练,总共进行 219000 步训练,使用 2D 分桶 [1] 并使用 OOMptimizer [8] 设置最佳批量大小。该模型在 32 个 NVIDIA A100 80GB GPU 上进行训练。可以使用 示例脚本 和 基础配置 对模型进行训练。
这些模型的分词器是使用训练集的文本转录,通过 此脚本 构建的。
推理
- 引擎:NVIDIA NeMo
- 测试硬件:A6000、A100、V100
性能
自动语音识别(ASR)和自动语音翻译(AST)实验
对于 ASR 和 AST 实验,使用贪心解码生成预测。注意,在评估过程中,短于 1 秒的话语会对称地零填充到 1 秒。
英语 ASR 性能(无 PnC)
ASR 性能通过单词错误率(WER)衡量,我们使用 whisper-normalizer 处理真实标签和预测文本。
在 HuggingFace OpenASR 排行榜 上,以批量大小 128 进行评估的 WER:
版本 | 模型 | RTFx | AMI | GigaSpeech | LS Clean | LS Other | Earnings22 | SPGISpech | Tedlium | Voxpopuli |
---|---|---|---|---|---|---|---|---|---|---|
main | canary-180m-flash | 1233 | 14.86 | 10.51 | 1.87 | 3.83 | 13.33 | 2.26 | 3.98 | 6.35 |
不同系统上的推理速度
我们使用 实时因子(RTFx)在 OpenASR 基准测试中对推理速度进行了分析,以量化吞吐量。
版本 | 模型 | 系统 | RTFx |
---|---|---|---|
main | canary-180m-flash | NVIDIA A100 | 1233 |
main | canary-180m-flash | NVIDIA H100 | 2041 |
多语言 ASR 性能
在 MLS 测试集上的 WER:
版本 | 模型 | 德语 | 西班牙语 | 法语 |
---|---|---|---|---|
main | canary-180m-flash | 4.81 | 3.17 | 4.75 |
在 MCV-16.1 测试集上的 WER:
版本 | 模型 | 英语 | 德语 | 西班牙语 | 法语 |
---|---|---|---|---|---|
main | canary-180m-flash | 9.53 | 5.94 | 4.90 | 8.19 |
更多评估细节可在 HuggingFace ASR 排行榜 上找到。
AST 性能
我们使用 BLEU 分数 评估 AST 性能,并在数据集中使用带标点和大小写的原生注释。
FLEURS 测试集:
BLEU 分数:
版本 | 模型 | 英语 -> 德语 | 英语 -> 西班牙语 | 英语 -> 法语 | 德语 -> 英语 | 西班牙语 -> 英语 | 法语 -> 英语 |
---|---|---|---|---|---|---|---|
main | canary-180m-flash | 28.18 | 20.47 | 36.66 | 32.08 | 20.09 | 29.75 |
COMET 分数:
版本 | 模型 | 英语 -> 德语 | 英语 -> 西班牙语 | 英语 -> 法语 | 德语 -> 英语 | 西班牙语 -> 英语 | 法语 -> 英语 |
---|---|---|---|---|---|---|---|
main | canary-180m-flash | 77.56 | 78.10 | 78.53 | 83.03 | 81.48 | 82.28 |
COVOST-v2 测试集:
BLEU 分数:
版本 | 模型 | 德语 -> 英语 | 西班牙语 -> 英语 | 法语 -> 英语 |
---|---|---|---|---|
main | canary-180m-flash | 35.61 | 39.84 | 38.57 |
COMET 分数:
版本 | 模型 | 德语 -> 英语 | 西班牙语 -> 英语 | 法语 -> 英语 |
---|---|---|---|---|
main | canary-180m-flash | 80.94 | 84.54 | 82.50 |
mExpresso 测试集:
BLEU 分数:
版本 | 模型 | 英语 -> 德语 | 英语 -> 西班牙语 | 英语 -> 法语 |
---|---|---|---|---|
main | canary-180m-flash | 21.60 | 33.45 | 25.96 |
COMET 分数:
版本 | 模型 | 英语 -> 德语 | 英语 -> 西班牙语 | 英语 -> 法语 |
---|---|---|---|---|
main | canary-180m-flash | 77.71 | 80.87 | 77.82 |
时间戳预测
在 Librispeech 测试集 上,在 200ms 容差下的 F1 分数:
版本 | 模型 | test-clean | test-other |
---|---|---|---|
main | canary-180m-flash | 93.48 | 91.38 |
幻觉鲁棒性
在 MUSAN 48 小时评估集上,每分钟的字符数:
版本 | 模型 | 每分钟字符数 |
---|---|---|
main | canary-180m-flash | 91.52 |
噪声鲁棒性
在 Librispeech Test Clean 上,在不同信噪比(SNR)水平的加性白噪声下的 WER:
版本 | 模型 | SNR 10 | SNR 5 | SNR 0 | SNR -5 |
---|---|---|---|---|---|
main | canary-180m-flash | 3.23 | 5.34 | 12.21 | 34.03 |
模型公平性评估
正如论文 "Towards Measuring Fairness in AI: the Casual Conversations Dataset" [9] 中所述,我们评估了 canary-180m-flash 模型的公平性。该模型在 CausalConversations-v1 数据集上进行评估,结果报告如下:
性别偏差
性别 | 男性 | 女性 | 不适用 | 其他 |
---|---|---|---|---|
话语数量 | 19325 | 24532 | 926 | 33 |
% WER | 16.92 | 14.01 | 20.01 | 25.04 |
年龄偏差
年龄组 | (18 - 30) | (31 - 45) | (46 - 85) | (1 - 100) |
---|---|---|---|---|
话语数量 | 15956 | 14585 | 13349 | 43890 |
% WER | 14.95 | 15.36 | 15.65 | 15.29 |
(公平性评估的错误率是通过对参考文本和预测文本进行归一化确定的,类似于在 https://github.com/huggingface/open_asr_leaderboard 评估中使用的方法。)
🔧 技术细节
canary-180m-flash 使用 NVIDIA NeMo 框架 [7] 进行训练,总共进行 219000 步训练,使用 2D 分桶 [1] 并使用 OOMptimizer [8] 设置最佳批量大小。该模型在 32 个 NVIDIA A100 80GB GPU 上进行训练。可以使用 示例脚本 和 基础配置 对模型进行训练。
这些模型的分词器是使用训练集的文本转录,通过 此脚本 构建的。
📄 许可证
canary-180m-flash 根据 CC-BY-4.0 许可证发布。使用此模型即表示您同意该许可证的 条款和条件。
参考文献
[1] Training and Inference Efficiency of Encoder-Decoder Speech Models [2] Less is More: Accurate Speech Recognition & Translation without Web-Scale Data [3] Fast Conformer with Linearly Scalable Attention for Efficient Speech Recognition [4] Attention is All You Need [5] Unified Model for Code-Switching Speech Recognition and Language Identification Based on Concatenated Tokenizer [6] Google Sentencepiece Tokenizer [7] NVIDIA NeMo Framework [8] EMMeTT: Efficient Multimodal Machine Translation Training [9] Towards Measuring Fairness in AI: the Casual Conversations Dataset
伦理考虑
NVIDIA 认为可信 AI 是一项共同责任,我们已经制定了政策和实践,以支持广泛的 AI 应用开发。当按照我们的服务条款下载或使用时,开发人员应与内部模型团队合作,确保该模型满足相关行业和用例的要求,并解决意外的产品滥用问题。
请 在此 报告安全漏洞或 NVIDIA AI 相关问题。



