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



