🚀 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