模型简介
模型特点
模型能力
使用案例
许可证: cc-by-4.0 语言:
- 英文
- 德文
- 西班牙文
- 法文 库名称: nemo 数据集:
- librispeech_asr
- fisher_corpus
- Switchboard-1
- WSJ-0
- WSJ-1
- 新加坡国家语料库第一部分
- 新加坡国家语料库第六部分
- vctk
- voxpopuli
- europarl
- multilingual_librispeech
- mozilla-foundation/common_voice_8_0
- MLCommons/peoples_speech 缩略图: 无 标签:
- 自动语音识别
- 自动语音翻译
- 语音
- 音频
- Transformer
- FastConformer
- Conformer
- pytorch
- NeMo
- hf-asr-leaderboard 小部件:
- 示例标题: Librispeech 样本1 src: https://cdn-media.huggingface.co/speech_samples/sample1.flac
- 示例标题: Librispeech 样本2 src: https://cdn-media.huggingface.co/speech_samples/sample2.flac 模型索引:
- 名称: canary-1b-flash
结果:
- 任务:
名称: 自动语音识别
类型: automatic-speech-recognition
数据集:
名称: LibriSpeech (其他)
类型: librispeech_asr
配置: other
分割: test
参数:
language: en
指标:
- 名称: 测试 WER 类型: wer 值: 2.87
- 任务:
类型: 自动语音识别
名称: automatic-speech-recognition
数据集:
名称: SPGI 语音
类型: kensho/spgispeech
配置: test
分割: test
参数:
language: en
指标:
- 名称: 测试 WER 类型: wer 值: 1.95
- 任务:
类型: 自动语音识别
名称: automatic-speech-recognition
数据集:
名称: Mozilla Common Voice 16.1
类型: mozilla-foundation/common_voice_16_1
配置: en
分割: test
参数:
language: en
指标:
- 名称: 测试 WER (英文) 类型: wer 值: 6.99
- 任务:
类型: 自动语音识别
名称: automatic-speech-recognition
数据集:
名称: Mozilla Common Voice 16.1
类型: mozilla-foundation/common_voice_16_1
配置: de
分割: test
参数:
language: de
指标:
- 名称: 测试 WER (德文) 类型: wer 值: 4.09
- 任务:
类型: 自动语音识别
名称: automatic-speech-recognition
数据集:
名称: Mozilla Common Voice 16.1
类型: mozilla-foundation/common_voice_16_1
配置: es
分割: test
参数:
language: es
指标:
- 名称: 测试 WER (西班牙文) 类型: wer 值: 3.62
- 任务:
类型: 自动语音识别
名称: automatic-speech-recognition
数据集:
名称: Mozilla Common Voice 16.1
类型: mozilla-foundation/common_voice_16_1
配置: fr
分割: test
参数:
language: fr
指标:
- 名称: 测试 WER (法文) 类型: wer 值: 6.15
- 任务:
类型: 自动语音翻译
名称: automatic-speech-translation
数据集:
名称: FLEURS
类型: google/fleurs
配置: en_us
分割: test
参数:
language: en-de
指标:
- 名称: 测试 BLEU (英->德) 类型: bleu 值: 32.27
- 任务:
类型: 自动语音翻译
名称: automatic-speech-translation
数据集:
名称: FLEURS
类型: google/fleurs
配置: en_us
分割: test
参数:
language: en-de
指标:
- 名称: 测试 BLEU (英->西) 类型: bleu 值: 22.6
- 任务:
类型: 自动语音翻译
名称: automatic-speech-translation
数据集:
名称: FLEURS
类型: google/fleurs
配置: en_us
分割: test
参数:
language: en-de
指标:
- 名称: 测试 BLEU (英->法) 类型: bleu 值: 41.22
- 任务:
类型: 自动语音翻译
名称: automatic-speech-translation
数据集:
名称: FLEURS
类型: google/fleurs
配置: de_de
分割: test
参数:
language: de-en
指标:
- 名称: 测试 BLEU (德->英) 类型: bleu 值: 35.5
- 任务:
类型: 自动语音翻译
名称: automatic-speech-translation
数据集:
名称: FLEURS
类型: google/fleurs
配置: es_419
分割: test
参数:
language: es-en
指标:
- 名称: 测试 BLEU (西->英) 类型: bleu 值: 23.32
- 任务:
类型: 自动语音翻译
名称: automatic-speech-translation
数据集:
名称: FLEURS
类型: google/fleurs
配置: fr_fr
分割: test
参数:
language: fr-en
指标:
- 名称: 测试 BLEU (法->英) 类型: bleu 值: 33.42
- 任务:
类型: 自动语音翻译
名称: automatic-speech-translation
数据集:
名称: COVOST
类型: covost2
配置: de_de
分割: test
参数:
language: de-en
指标:
- 名称: 测试 BLEU (德->英) 类型: bleu 值: 39.33
- 任务:
类型: 自动语音翻译
名称: automatic-speech-translation
数据集:
名称: COVOST
类型: covost2
配置: es_419
分割: test
参数:
language: es-en
指标:
- 名称: 测试 BLEU (西->英) 类型: bleu 值: 41.86
- 任务:
类型: 自动语音翻译
名称: automatic-speech-translation
数据集:
名称: COVOST
类型: covost2
配置: fr_fr
分割: test
参数:
language: fr-en
指标:
- 名称: 测试 BLEU (法->英) 类型: bleu 值: 41.43 指标:
- 任务:
名称: 自动语音识别
类型: automatic-speech-recognition
数据集:
名称: LibriSpeech (其他)
类型: librispeech_asr
配置: other
分割: test
参数:
language: en
指标:
- wer
- bleu
- comet 管道标签: automatic-speech-recognition
Canary 1B Flash
描述:
NVIDIA NeMo Canary Flash [1] 是基于Canary架构[2]的多语言多任务模型系列,在多个语音基准测试中实现了最先进的性能。拥有8.83亿参数和超过1000 RTFx的推理速度(在open-asr-leaderboard数据集上),canary-1b-flash支持四种语言(英语、德语、法语、西班牙语)的自动语音转文本识别(ASR)以及从英语到德语/法语/西班牙语和从德语/法语/西班牙语到英语的翻译,可选择是否包含标点和大小写(PnC)。此外,canary-1b-flash还提供实验性的单词级和片段级时间戳功能,支持英语、德语、法语和西班牙语。 该模型采用宽松的CC-BY-4.0许可证发布,可用于商业用途。
模型架构:
Canary是一个编码器-解码器模型,采用FastConformer [3]编码器和Transformer解码器[4]。通过从编码器提取的音频特征,任务令牌如<目标语言>、<任务>、<切换时间戳>和<切换PnC>被输入到Transformer解码器以触发文本生成过程。Canary使用来自每种语言的SentencePiece [6]分词器的连接分词器[5],这使得扩展到更多语言变得容易。canary-1b-flash模型有32个编码器层和4个解码器层,总计8.83亿参数。有关架构的更多详情,请参阅[1]。
NVIDIA NeMo
要使用canary-1b-flash进行训练、微调或转录,您需要安装NVIDIA NeMo。
如何使用此模型
该模型可在NeMo框架[7]中使用,可作为预训练检查点用于推理或对另一个数据集进行微调。
请参考我们的教程获取更多详情。
以下是几个推理示例:
加载模型
from nemo.collections.asr.models import EncDecMultiTaskModel
# 加载模型
canary_model = EncDecMultiTaskModel.from_pretrained('nvidia/canary-1b-flash')
# 更新解码参数
decode_cfg = canary_model.cfg.decoding
decode_cfg.beam.beam_size = 1
canary_model.change_decoding_strategy(decode_cfg)
输入:
输入类型: 音频
输入格式: .wav或.flac文件
输入参数: 1D
其他输入相关属性: 16000 Hz单声道音频,无需预处理
canary-1b-flash的输入可以是音频文件路径列表或jsonl清单文件。
如果输入是路径列表,canary-1b-flash假设音频为英文并进行转录。即canary-1b-flash的默认行为是英文ASR。
output = canary_model.transcribe(
['path1.wav', 'path2.wav'],
batch_size=16, # 推理批大小
pnc='yes', # 生成带标点和大小写的输出
)
predicted_text_1 = output[0].text
canary-1b-flash还可以生成单词和片段级时间戳
output = canary_model.transcribe(
['filepath.wav'],
timestamps='yes', # 生成带时间戳的输出
)
predicted_text = output[0].text
word_level_timestamps = output[0].timestamp['word']
segment_level_timestamps = output[0].timestamp['segment']
对于超过10秒的音频文件,建议使用长格式推理脚本(下一节解释)和chunk_len_in_secs=10.0
来生成时间戳。
要使用canary-1b-flash转录其他支持的语言或执行语音到文本翻译或提供单词级时间戳,将输入指定为jsonl清单文件,其中文件中的每一行是一个包含以下字段的字典:
# input_manifest.json中的一行示例
{
"audio_filepath": "/path/to/audio.wav", # 音频文件路径
"source_lang": "en", # 音频输入语言,设置`source_lang`==`target_lang`进行ASR,选项=['en','de','es','fr']
"target_lang": "en", # 文本输出语言,选项=['en','de','es','fr']
"pnc": "yes", # 是否包含PnC输出,选项=['yes', 'no']
"timestamp": "yes", # 是否输出单词级时间戳,选项=['yes', 'no']
}
然后使用:
output = canary_model.transcribe(
"<输入清单文件路径>",
batch_size=16, # 推理批大小
)
使用Canary-1B-flash进行长格式推理:
Canary模型设计用于处理小于40秒的输入音频。为了处理更长的音频,NeMo包含speech_to_text_aed_chunked_infer.py脚本,该脚本处理分块,对分块文件进行推理,并拼接转录。
该脚本将对audio_dir
中的所有.wav
文件进行推理。或者,您也可以传递如上所示的清单文件路径。解码输出将保存在output_json_path
。
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
注意对于带时间戳的长格式推理,建议使用chunk_len_in_secs
为10秒。
输出:
输出类型: 文本
输出格式: 根据解码任务选择的文本输出(带时间戳)字符串
输出参数: 一维文本字符串
其他输出相关属性: 可能需要逆文本规范化;不处理特殊字符
软件集成:
运行时引擎:
- NeMo - 主分支
支持的硬件微架构兼容性:
- [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-1b-flash模型共训练了85K小时的语音数据。其中包括31K小时的公共数据,20K小时由Suno收集的数据,以及34K小时的内部数据。 以下数据集包括对话、网络视频和有声书录音。
数据收集方法:
- 人工
标注方法:
- 混合:人工、自动化
公共数据的组成部分如下。
英语 (25.5k小时)
- Librispeech 960小时
- Fisher语料库
- Switchboard-1数据集
- WSJ-0和WSJ-1
- 国家语音语料库(第一部分、第六部分)
- VCTK
- VoxPopuli (EN)
- Europarl-ASR (EN)
- 多语言Librispeech (MLS EN) - 2,000小时子集
- Mozilla Common Voice (v7.0)
- People's Speech - 12,000小时子集
- Mozilla Common Voice (v11.0) - 1,474小时子集
德语 (2.5k小时)
- Mozilla Common Voice (v12.0) - 800小时子集
- 多语言Librispeech (MLS DE) - 1,500小时子集
- VoxPopuli (DE) - 200小时子集
西班牙语 (1.4k小时)
- Mozilla Common Voice (v12.0) - 395小时子集
- 多语言Librispeech (MLS ES) - 780小时子集
- VoxPopuli (ES) - 108小时子集
- Fisher - 141小时子集
法语 (1.8k小时)
- Mozilla Common Voice (v12.0) - 708小时子集
- 多语言Librispeech (MLS FR) - 926小时子集
- VoxPopuli (FR) - 165小时子集
评估数据集:
数据收集方法:
- 人工
标注方法:
- 人工
自动语音识别:
- HuggingFace OpenASR Leaderboard评估集
- MLS
- [MCV] (https://commonvoice.mozilla.org/en/datasets)
自动语音翻译:
时间戳预测:
幻觉鲁棒性:
- MUSAN 48小时评估集
噪声鲁棒性:
模型公平性:
训练
Canary-1B-Flash使用NVIDIA NeMo框架[7]训练了总计200K步,采用2D分桶[1]并使用OOMptimizer[8]设置最佳批大小。模型在128个NVIDIA A100 80GB GPU上训练。 可以使用此[示例脚本](https://github.com/NVIDIA/NeMo/blob/main/examples/asr/speech_multit



