🚀 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