模型简介
模型特点
模型能力
使用案例
🚀 Canary 1B Flash
Canary 1B Flash是一款基于Canary架构的多语言多任务模型,在多个语音基准测试中取得了卓越的性能。它支持四种语言的自动语音识别,以及英语与德语、法语、西班牙语之间的翻译,还具备实验性的字词级和片段级时间戳功能。该模型采用宽松的CC - BY - 4.0许可证发布,可用于商业用途。
🚀 快速开始
若要使用canary - 1b - flash进行训练、微调或转录,你需要安装 NVIDIA NeMo。该模型可在NeMo框架中使用,可作为预训练检查点进行推理或在其他数据集上进行微调。更多详细信息,请参考 我们的教程。
✨ 主要特性
- 多语言支持:支持英语、德语、法语、西班牙语的自动语音识别和翻译。
- 实验性时间戳功能:提供英语、德语、法语和西班牙语的字词级和片段级时间戳。
- 高性能:在多个语音基准测试中达到了先进水平。
- 商业可用:采用CC - BY - 4.0许可证发布,可用于商业用途。
📦 安装指南
要使用canary - 1b - flash,你需要安装 NVIDIA NeMo。
💻 使用示例
基础用法
from nemo.collections.asr.models import EncDecMultiTaskModel
# load model
canary_model = EncDecMultiTaskModel.from_pretrained('nvidia/canary-1b-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='yes', # generate output with Punctuation and Capitalization
)
predicted_text_1 = output[0].text
生成字词级和片段级时间戳
output = canary_model.transcribe(
['filepath.wav'],
timestamps='yes', # generate output with timestamps
)
predicted_text = output[0].text
word_level_timestamps = output[0].timestamp['word']
segment_level_timestamps = output[0].timestamp['segment']
长音频推理
python scripts/speech_to_text_aed_chunked_infer.py \
pretrained_name="nvidia/canary-1b-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
📚 详细文档
输入信息
属性 | 详情 |
---|---|
输入类型 | 音频 |
输入格式 | .wav 或 .flac 文件 |
输入参数 | 一维 |
其他输入属性 | 16000 Hz 单声道音频,无需预处理 |
输入可以是音频文件路径列表或jsonl清单文件。如果输入是路径列表,模型默认音频为英语并进行转录。
输出信息
属性 | 详情 |
---|---|
输出类型 | 文本 |
输出格式 | 根据解码任务选择,以字符串形式输出文本(可能包含时间戳) |
输出参数 | 一维文本字符串 |
其他输出属性 | 可能需要逆文本归一化;不处理特殊字符 |
软件集成
属性 | 详情 |
---|---|
运行时引擎 | NeMo - main |
支持的硬件微架构兼容性 | NVIDIA Ampere、NVIDIA Blackwell、NVIDIA Jetson、NVIDIA Hopper、NVIDIA Lovelace、NVIDIA Pascal、NVIDIA Turing、NVIDIA Volta |
首选/支持的操作系统 | Linux、Linux 4 Tegra、Windows |
模型版本
canary - 1b - flash
🔧 技术细节
模型架构
Canary是一个编码器 - 解码器模型,采用FastConformer编码器和Transformer解码器。通过编码器提取音频特征后,将诸如 <目标语言>
、<任务>
、<切换时间戳>
和 <切换大小写和标点>
等任务标记输入到Transformer解码器中,触发文本生成过程。Canary使用了来自每种语言的单独SentencePiece分词器的连接分词器,便于扩展到更多语言。canary - 1b - flash模型有32个编码器层和4个解码器层,总共有883M个参数。更多架构细节,请参考 [1]。
训练和评估
训练数据集
canary - 1b - flash模型在总共85K小时的语音数据上进行训练,包括31K小时的公共数据、20K小时由 Suno 收集的数据和34K小时的内部数据。这些数据集包含对话、网络视频和有声读物录音。
- 数据收集方法:人工
- 标注方法:混合(人工和自动)
评估数据集
- 自动语音识别:HuggingFace OpenASR Leaderboard评估集、MLS、MCV
- 自动语音翻译:FLEURS、COVOST - v2、mExpresso
- 时间戳预测:Librispeech
- 幻觉鲁棒性:MUSAN 48小时评估集
- 噪声鲁棒性:Librispeech
- 模型公平性:Casual Conversations Dataset
训练过程
Canary - 1B - Flash使用NVIDIA NeMo框架进行训练,总共训练200K步,采用2D分桶 [1] 并使用OOMptimizer [8] 设置最佳批量大小。模型在128个NVIDIA A100 80GB GPU上进行训练。可以使用 示例脚本 和 [基础配置](https://github.com/NVIDIA/NeMo/blob/main/examples/asr/conf/speech_multitask/fast - conformer_aed.yaml) 进行训练。这些模型的分词器是使用训练集的文本转录通过 脚本 构建的。
推理
- 引擎:NVIDIA NeMo
- 测试硬件:A6000、A100、V100
性能评估
英语ASR性能(无大小写和标点)
在 [HuggingFace OpenASR排行榜](https://huggingface.co/spaces/hf - audio/open_asr_leaderboard) 上的WER:
版本 | 模型 | RTFx | AMI | GigaSpeech | LS Clean | LS Other | Earnings22 | SPGISpech | Tedlium | Voxpopuli |
---|---|---|---|---|---|---|---|---|---|---|
nemo - main | canary - 1b - flash | 1045.75 | 13.11 | 9.85 | 1.48 | 2.87 | 12.79 | 1.95 | 3.12 | 5.63 |
不同系统上的推理速度
在OpenASR基准测试(批量大小 = 128)上使用实时因子(RTFx)对推理速度进行了分析:
版本 | 模型 | 系统 | RTFx |
---|---|---|---|
nemo - main | canary - 1b - flash | NVIDIA A100 | 1045.75 |
nemo - main | canary - 1b - flash | NVIDIA H100 | 1669.07 |
多语言ASR性能
在 MLS 测试集上的WER:
版本 | 模型 | De | Es | Fr |
---|---|---|---|---|
nemo - main | canary - 1b - flash | 4.36 | 2.69 | 4.47 |
在 MCV - 16.1 测试集上的WER:
版本 | 模型 | En | De | Es | Fr |
---|---|---|---|---|---|
nemo - main | canary - 1b - flash | 6.99 | 4.09 | 3.62 | 6.15 |
AST性能
使用 BLEU分数 和 [COMET分数](https://aclanthology.org/2020.emnlp - main.213/) 评估AST性能,并在数据集中使用带有大小写和标点的原生注释。
- FLEURS 测试集
- BLEU分数: | 版本 | 模型 | En->De | En->Es | En->Fr | De->En | Es->En | Fr->En | |:-----------:|:---------:|:----------:|:----------:|:----------:|:----------:|:----------:|:----------:| | nemo - main | canary - 1b - flash | 32.27 | 22.6 | 41.22 | 35.5 | 23.32 | 33.42 |
- COMET分数: | 版本 | 模型 | En->De | En->Es | En->Fr | De->En | Es->En | Fr->En | |:-----------:|:---------:|:----------:|:----------:|:----------:|:----------:|:----------:|:----------:| | nemo - main | canary - 1b - flash | 0.8114 | 0.8118 | 0.8165 | 0.8546 | 0.8228 | 0.8475 |
- COVOST - v2 测试集
- BLEU分数: | 版本 | 模型 | De->En | Es->En | Fr->En | |:-----------:|:---------:|:----------:|:----------:|:----------:| | nemo - main | canary - 1b - flash | 39.33 | 41.86 | 41.43 |
- COMET分数: | 版本 | 模型 | De->En | Es->En | Fr->En | |:-----------:|:---------:|:----------:|:----------:|:----------:| | nemo - main | canary - 1b - flash | 0.8553 | 0.8585 | 0.8511 |
- [mExpresso](https://huggingface.co/facebook/seamless - expressive#mexpresso - multilingual - expresso) 测试集
- BLEU分数: | 版本 | 模型 | En->De | En->Es | En->Fr | |:-----------:|:---------:|:----------:|:----------:|:----------:| | nemo - main | canary - 1b - flash | 22.91 | 35.69 | 27.85 |
- COMET分数: | 版本 | 模型 | En->De | En->Es | En->Fr | |:-----------:|:---------:|:----------:|:----------:|:----------:| | nemo - main | canary - 1b - flash | 0.7889 | 0.8211 | 0.7910 |
时间戳预测
在 Librispeech测试集 上,在200ms的边界值下的F1分数:
版本 | 模型 | test - clean | test - other |
---|---|---|---|
nemo - main | canary - 1b - flash | 95.5 | 93.5 |
幻觉鲁棒性
在 MUSAN 48小时评估集上每分钟的字符数:
版本 | 模型 | 每分钟字符数 |
---|---|---|
nemo - main | canary - 1b - flash | 60.92 |
噪声鲁棒性
在 Librispeech Test Clean 上,在不同信噪比(SNR)水平的加性白噪声下的WER:
版本 | 模型 | SNR 10 | SNR 5 | SNR 0 | SNR - 5 |
---|---|---|---|---|---|
nemo - main | canary - 1b - flash | 2.34 | 3.69 | 8.84 | 29.71 |
模型公平性评估
按照论文 "Towards Measuring Fairness in AI: the Casual Conversations Dataset" [9] 中的方法,对canary - 1b - flash模型进行了公平性评估。在CausalConversations - v1数据集上进行评估,结果如下:
性别偏差
性别 | 男性 | 女性 | 未指定 | 其他 |
---|---|---|---|---|
话语数量 | 19325 | 24532 | 926 | 33 |
% WER | 14.66 | 12.44 | 17.17 | 27.56 |
年龄偏差
年龄组 | (18 - 30) | (31 - 45) | (46 - 85) | (1 - 100) |
---|---|---|---|---|
话语数量 | 15956 | 14585 | 13349 | 43890 |
% WER | 13.18 | 13.45 | 13.64 | 13.41 |
(公平性评估的错误率是通过对参考文本和预测文本进行归一化确定的,与https://github.com/huggingface/open_asr_leaderboard 中的评估方法类似。)
📄 许可证
canary - 1b - flash采用CC - BY - 4.0许可证发布。使用此模型即表示你同意该许可证的 [条款和条件](https://choosealicense.com/licenses/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](https://www.isca - archive.org/interspeech_2024/puvvada24_interspeech.pdf) [3] [Fast Conformer with Linearly Scalable Attention for Efficient Speech Recognition](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber = 10389701) [4] Attention is All You Need [5] [Unified Model for Code - Switching Speech Recognition and Language Identification Based on Concatenated Tokenizer](https://aclanthology.org/2023.calcs - 1.7.pdf) [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](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber = 9634168)
伦理考虑
NVIDIA认为可信AI是一项共同责任,我们已经制定了政策和实践,以支持广泛的AI应用开发。当按照我们的服务条款下载或使用时,开发者应与内部模型团队合作,确保该模型满足相关行业和用例的要求,并解决不可预见的产品滥用问题。请 [在此](https://www.nvidia.com/en - us/support/submit - security - vulnerability/) 报告安全漏洞或NVIDIA AI相关问题。



