模型概述
模型特點
模型能力
使用案例
🚀 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 相關問題。



