🚀 NVIDIA Streaming Citrinet 1024 (uk)
該模型可將烏克蘭語語音轉錄為小寫字母,包含空格和撇號,它基於69小時的烏克蘭語語音數據進行訓練。作為Streaming Citrinet的非自迴歸“大型”變體,該模型約有1.41億個參數,通過跨語言遷移學習方法,在預訓練的俄語Citrinet - 1024模型基礎上,針對烏克蘭語語音數據進行微調。
|
|
|
|
|
🚀 快速開始
本模型可在NeMo工具包中使用,能作為預訓練檢查點進行推理,或在其他數據集上進行微調。
若要訓練、微調或使用該模型,你需要安裝 NVIDIA NeMo。建議在安裝最新版本的PyTorch之後再安裝它。
pip install nemo_toolkit['all']
自動實例化模型
import nemo.collections.asr as nemo_asr
asr_model = nemo_asr.models.EncDecCTCModel.from_pretrained("nvidia/stt_uk_citrinet_1024_gamma_0_25")
使用Python進行轉錄
首先,獲取一個音頻樣本。
然後,簡單執行以下操作:
output = asr_model.transcribe(['sample.wav'])
print(output[0].text)
轉錄多個音頻文件
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py
pretrained_name="nvidia/stt_uk_citrinet_1024_gamma_0_25"
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>"
輸入
該模型接受16000 kHz的單聲道音頻(wav文件)作為輸入。
輸出
該模型會為給定的音頻樣本提供轉錄後的語音字符串。
✨ 主要特性
- 能夠將烏克蘭語語音準確轉錄為小寫字母,包含空格和撇號。
- 基於跨語言遷移學習,在預訓練的俄語模型基礎上微調,提升了訓練效率。
- 與NVIDIA Riva兼容,可用於生產級服務器部署。
📦 安裝指南
若要訓練、微調或使用該模型,你需要安裝 NVIDIA NeMo。建議在安裝最新版本的PyTorch之後再安裝它。
pip install nemo_toolkit['all']
💻 使用示例
基礎用法
import nemo.collections.asr as nemo_asr
asr_model = nemo_asr.models.EncDecCTCModel.from_pretrained("nvidia/stt_uk_citrinet_1024_gamma_0_25")
output = asr_model.transcribe(['sample.wav'])
print(output[0].text)
高級用法
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py
pretrained_name="nvidia/stt_uk_citrinet_1024_gamma_0_25"
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>"
📚 詳細文檔
模型架構
Streaming Citrinet - 1024模型是用於自動語音識別的Citrinet模型的非自迴歸、流式變體,它使用CTC損失/解碼而非Transducer。有關此模型的更多信息,請參閱:Citrinet Model。
訓練
使用NeMo工具包 [3] 對模型進行了1000個epoch的訓練。該模型使用 此示例腳本 和 此基礎配置 進行訓練。
該模型的分詞器使用訓練集的文本轉錄,通過 此腳本 構建。
有關跨語言遷移學習的詳細信息,請參閱 [4]。
數據集
該模型使用經過驗證的Mozilla Common Voice Corpus 10.0數據集(不包括開發集和測試集)進行訓練,該數據集包含69小時的烏克蘭語語音。微調此模型所基於的俄語模型,是在以下數據集的組合上進行訓練的:(1) Mozilla Common Voice (V7 Ru),(2) Ru LibriSpeech (RuLS),(3) Sber GOLOS和(4) SOVA數據集。
性能
此集合中可用模型的列表如下表所示。自動語音識別模型的性能以單詞錯誤率(WER%)報告,採用貪心解碼。
版本 |
分詞器 |
詞彙表大小 |
MCV - 10測試集 |
MCV - 10開發集 |
MCV - 9測試集 |
MCV - 9開發集 |
MCV - 8測試集 |
MCV - 8開發集 |
1.0.0 |
SentencePiece Unigram |
1024 |
5.02 |
4.65 |
3.75 |
4.88 |
3.52 |
5.02 |
侷限性
由於該模型是在公開可用的語音數據集上訓練的,對於包含技術術語或未在訓練集中出現的方言的語音,其性能可能會下降。對於帶有口音的語音,模型的表現可能也會變差。
使用NVIDIA Riva進行部署
為了獲得最佳的即時準確性、低延遲和高吞吐量,可使用 NVIDIA Riva 部署該模型。NVIDIA Riva是一個加速語音AI SDK,可在本地、所有云環境、多雲、混合雲、邊緣和嵌入式設備上部署。
此外,Riva還提供以下功能:
- 針對最常見語言,使用經過數十萬GPU計算小時的專有數據訓練的模型檢查點,提供世界級的開箱即用準確性。
- 通過運行時單詞增強(例如品牌和產品名稱)以及對聲學模型、語言模型和逆文本歸一化的定製,實現一流的準確性。
- 流式語音識別、與Kubernetes兼容的擴展以及企業級支持。
查看 Riva即時演示。
🔧 技術細節
- 模型類型:Streaming Citrinet - 1024,是Streaming Citrinet的非自迴歸“大型”變體,約有1.41億個參數。
- 訓練數據:使用了69小時的烏克蘭語語音數據,來自經過驗證的Mozilla Common Voice Corpus 10.0數據集(不包括開發集和測試集)。微調所基於的俄語模型在Mozilla Common Voice (V7 Ru)、Ru LibriSpeech (RuLS)、Sber GOLOS和SOVA數據集的組合上進行訓練。
- 訓練方法:使用NeMo工具包進行了1000個epoch的訓練,採用跨語言遷移學習方法,在預訓練的俄語Citrinet - 1024模型基礎上針對烏克蘭語語音數據進行微調。
- 分詞器:使用Google Sentencepiece Tokenizer,通過訓練集的文本轉錄構建。
📄 許可證
本項目採用CC - BY - 4.0許可證。
參考文獻
[1] Citrinet: Closing the Gap between Non-Autoregressive and Autoregressive End-to-End Models for Automatic Speech Recognition
[2] Google Sentencepiece Tokenizer
[3] NVIDIA NeMo Toolkit
[4] Cross-Language Transfer Learning