🚀 NVIDIA FastConformer-Hybrid Large (be)
本模型可將語音轉錄為大小寫白俄羅斯語字母,同時支持空格、句號、逗號和問號。它是FastConformer Transducer - CTC的“大型”版本(約1.15億參數),是一個基於兩種損失(Transducer(默認)和CTC)訓練的混合模型。欲瞭解完整的架構細節,請參閱模型架構部分和NeMo文檔。
|
|
| 
🚀 快速開始
本部分將介紹如何安裝必要的工具包以及如何使用該模型進行語音轉錄。
安裝NVIDIA NeMo
若要訓練、微調或使用該模型,你需要安裝 NVIDIA NeMo。建議在安裝最新版本的Pytorch之後再安裝它。
pip install nemo_toolkit['all']
使用模型進行語音轉錄
自動實例化模型
import nemo.collections.asr as nemo_asr
asr_model = nemo_asr.models.EncDecHybridRNNTCTCBPEModel.from_pretrained(model_name="nvidia/stt_be_fastconformer_hybrid_large_pc")
使用Python進行轉錄
首先,獲取一個音頻樣本:
wget https://dldata-public.s3.us-east-2.amazonaws.com/2086-149220-0033.wav
然後,進行轉錄:
output = asr_model.transcribe(['2086-149220-0033.wav'])
print(output[0].text)
轉錄多個音頻文件
使用Transducer模式推理:
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py
pretrained_name="nvidia/stt_be_fastconformer_hybrid_large_pc"
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>"
使用CTC模式推理:
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py
pretrained_name="nvidia/stt_be_fastconformer_hybrid_large_pc"
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>"
decoder_type="ctc"
✨ 主要特性
- 語言支持:能夠處理白俄羅斯語語音,轉錄結果包含大小寫字母、空格、句號、逗號和問號。
- 模型架構:採用FastConformer Transducer - CTC架構,約1.15億參數,是一個混合模型,基於Transducer和CTC兩種損失進行訓練。
- 多任務訓練:在多任務設置下進行訓練,結合了聯合Transducer和CTC解碼器損失。
📦 安裝指南
若要訓練、微調或使用該模型,需安裝 NVIDIA NeMo。建議在安裝最新版本的Pytorch之後再安裝它。
pip install nemo_toolkit['all']
💻 使用示例
基礎用法
自動實例化模型:
import nemo.collections.asr as nemo_asr
asr_model = nemo_asr.models.EncDecHybridRNNTCTCBPEModel.from_pretrained(model_name="nvidia/stt_be_fastconformer_hybrid_large_pc")
高級用法
轉錄單個音頻文件
import nemo.collections.asr as nemo_asr
asr_model = nemo_asr.models.EncDecHybridRNNTCTCBPEModel.from_pretrained(model_name="nvidia/stt_be_fastconformer_hybrid_large_pc")
output = asr_model.transcribe(['2086-149220-0033.wav'])
print(output[0].text)
轉錄多個音頻文件
使用Transducer模式推理:
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py
pretrained_name="nvidia/stt_be_fastconformer_hybrid_large_pc"
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>"
使用CTC模式推理:
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py
pretrained_name="nvidia/stt_be_fastconformer_hybrid_large_pc"
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>"
decoder_type="ctc"
📚 詳細文檔
輸入
本模型接受16000 Hz單聲道音頻(wav文件)作為輸入。
輸出
本模型為給定的音頻樣本提供轉錄後的語音字符串。
模型架構
FastConformer [1] 是Conformer模型的優化版本,具有8倍深度可分離卷積下采樣。該模型在多任務設置下進行訓練,結合了聯合Transducer和CTC解碼器損失。你可以在以下鏈接找到關於FastConformer的更多詳細信息:Fast - Conformer Model 以及關於混合Transducer - CTC訓練的信息:Hybrid Transducer - CTC。
訓練
使用NeMo工具包 [3] 對模型進行了數百個epoch的訓練。這些模型使用 此示例腳本 和 此基礎配置 進行訓練。
這些模型的分詞器使用訓練集的文本轉錄,通過 此腳本 構建。
數據集
本集合中的所有模型均在包含1500小時白俄羅斯語語音的MCV12 BY語料庫上進行訓練。
性能
自動語音識別模型的性能通過單詞錯誤率(Word Error Rate)來衡量。由於該數據集在多個領域和更大的語料庫上進行訓練,因此在一般情況下,它在轉錄音頻方面的表現通常會更好。
以下表格總結了本集合中可用模型在使用Transducer解碼器時的性能。ASR模型的性能以單詞錯誤率(WER%)的形式報告,採用貪心解碼。
a) 在無標點和大寫數據上使用Transducer解碼器
版本 |
分詞器 |
詞彙表大小 |
MCV12 DEV |
MCV12 TEST |
1.18.0 |
SentencePiece Unigram |
1024 |
2.68 |
2.72 |
b) 在有標點和大寫數據上使用Transducer解碼器
版本 |
分詞器 |
詞彙表大小 |
MCV12 DEV |
MCV12 TEST |
1.18.0 |
SentencePiece Unigram |
1024 |
3.84 |
3.87 |
侷限性
由於該模型是在公開可用的語音數據集上進行訓練的,因此對於包含技術術語或模型未訓練過的方言的語音,其性能可能會下降。對於帶有口音的語音,模型的表現也可能較差。此外,該模型僅輸出 '.', ',', '?'
這些標點符號,因此在需要其他標點符號的場景中可能表現不佳。
NVIDIA Riva部署
NVIDIA Riva 是一個加速語音AI SDK,可部署在本地、所有云環境、多雲、混合雲、邊緣和嵌入式設備上。
此外,Riva還提供以下功能:
- 卓越的開箱即用準確性:針對最常見的語言,使用在專有數據上訓練的模型檢查點,經過數十萬小時的GPU計算,提供世界級的準確性。
- 一流的準確性:支持運行時單詞增強(例如品牌和產品名稱),並可自定義聲學模型、語言模型和逆文本歸一化。
- 流式語音識別:支持流式語音識別、Kubernetes兼容的擴展和企業級支持。
儘管Riva目前尚不支持此模型,但 支持的模型列表可在此處查看。你可以查看 Riva即時演示。
🔧 技術細節
FastConformer [1] 是Conformer模型的優化版本,具有8倍深度可分離卷積下采樣。該模型在多任務設置下進行訓練,結合了聯合Transducer和CTC解碼器損失。你可以在以下鏈接找到關於FastConformer的更多詳細信息:Fast - Conformer Model 以及關於混合Transducer - CTC訓練的信息:Hybrid Transducer - CTC。
📄 許可證
使用此模型的許可受 CC - BY - 4.0 許可協議的約束。通過下載該模型的公開版本,即表示你接受 CC - BY - 4.0 許可協議的條款和條件。
參考文獻
[1] Fast Conformer with Linearly Scalable Attention for Efficient Speech Recognition
[2] Google Sentencepiece Tokenizer
[3] NVIDIA NeMo Toolkit