🚀 NVIDIA Conformer-CTC Large (Russian)
本项目是一个用于俄语自动语音识别的模型,基于Conformer-CTC架构,在多个俄语语音数据集上进行训练,可将语音转录为小写西里尔字母文本。
🚀 快速开始
本模型可在NeMo工具包中使用,可作为预训练的检查点进行推理或在其他数据集上进行微调。
要训练、微调或使用该模型,您需要安装 NVIDIA NeMo。建议在安装最新版本的PyTorch之后再安装它。
pip install nemo_toolkit['all']
自动实例化模型
import nemo.collections.asr as nemo_asr
asr_model = nemo_asr.models.EncDecCTCModelBPE.from_pretrained(model_name="stt_ru_conformer_ctc_large")
使用Python进行转录
output = asr_model.transcribe(['sample.wav'])
print(output[0].text)
转录多个音频文件
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py
pretrained_name="nvidia/stt_ru_conformer_ctc_large"
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>"
输入
该模型接受16 kHz单声道音频(wav文件)作为输入。
输出
该模型为给定的音频样本提供转录后的语音字符串。
✨ 主要特性
- 本模型将语音转录为包含空格的小写西里尔字母,在约1636小时的俄语语音数据上进行训练。
- 它是Conformer的非自回归“大型”变体,约有1.2亿个参数。
📦 安装指南
要使用此模型,您需要安装 NVIDIA NeMo,建议在安装最新版本的PyTorch之后再进行安装。使用以下命令安装:
pip install nemo_toolkit['all']
💻 使用示例
基础用法
import nemo.collections.asr as nemo_asr
asr_model = nemo_asr.models.EncDecCTCModelBPE.from_pretrained(model_name="stt_ru_conformer_ctc_large")
output = asr_model.transcribe(['sample.wav'])
print(output[0].text)
高级用法
转录多个音频文件:
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py
pretrained_name="nvidia/stt_ru_conformer_ctc_large"
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>"
📚 详细文档
模型架构
Conformer-CTC模型是用于自动语音识别的Conformer模型 [1] 的非自回归变体,它使用CTC损失/解码而不是Transducer。您可以在 Conformer-CTC Model 中找到有关此模型详细信息。
训练
使用NeMo工具包 [3] 对模型进行了数百个epoch的训练。这些模型使用 示例脚本 和 基础配置 进行训练。
这些模型的分词器使用训练集的文本转录,通过 脚本 构建。
我们使用的词汇表包含33个字符:
[' ', 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']
在预处理过程中,带有变音符号的稀有符号被替换。
数据集
此集合中的所有模型都在一个复合数据集(NeMo ASRSET)上进行训练,该数据集包含超过一千小时的俄语语音:
- Mozilla Common Voice 10.0(俄语) - 训练子集 [28小时]
- Golos - 众包 [1070小时] 和远场 [111小时] 子集
- Russian LibriSpeech(RuLS) [92小时]
- SOVA - RuAudiobooksDevices [260小时] 和RuDevices [75小时] 子集
性能
此集合中可用模型的列表如下表所示。ASR模型的性能以单词错误率(WER%)报告,采用贪心解码。
| 版本 | 分词器 | 词汇表大小 | MCV 10.0开发集 | MCV 10.0测试集 | GOLOS众包测试集 | GOLOS远场测试集 | RuLS测试集 | 训练数据集 |
|------|-----------------------|--------------|-----------------|----------------|-----------------|------------------|---------------------|--------------|---------------|
| 1.13.0 | SentencePiece Unigram | 128 | 3.94 | 4.28 | 2.77 | 7.15 | 13.60 | NeMo ASRSET |
局限性
由于该模型是在公开可用的语音数据集上训练的,对于包含技术术语或模型未训练过的方言的语音,其性能可能会下降。该模型对于带有口音的语音表现可能也会较差。
使用NVIDIA Riva进行部署
为了获得最佳的实时准确性、低延迟和高吞吐量,请使用 NVIDIA Riva 部署模型,这是一个可在本地、所有云、多云、混合云、边缘和嵌入式设备上部署的加速语音AI SDK。
此外,Riva还提供:
- 针对最常用语言的世界级开箱即用准确性,模型检查点在专有数据上进行了数十万小时的GPU计算训练
- 具有运行时单词增强(例如品牌和产品名称)以及声学模型、语言模型和逆文本归一化定制的一流准确性
- 流式语音识别、Kubernetes兼容的扩展和企业级支持
查看 Riva实时演示。
🔧 技术细节
Conformer-CTC模型是用于自动语音识别的Conformer模型的非自回归变体,它使用CTC损失/解码而不是Transducer。详细架构信息可参考 Conformer-CTC Model。
模型使用NeMo工具包进行训练,训练脚本和配置可在 示例脚本 和 基础配置 中找到。分词器使用训练集的文本转录通过 脚本 构建。
📄 许可证
本项目采用CC BY 4.0许可证。
参考文献