🚀 NVIDIA流式Conformer-Hybrid大模型(美式英语)
本模型集合包含了支持多前瞻的缓存感知型FastConformer-Hybrid大尺寸版本(约1.14亿个参数),在大规模英语语音数据上进行训练。这些模型专为流式自动语音识别(ASR)而设计,可用于具有不同延迟(0毫秒、80毫秒、480毫秒、1040毫秒)的流式应用程序。每种情况下,模型的最坏延迟和平均延迟为上述数值的一半。你可以在此处 [5]找到更多细节和评估结果。
🚀 快速开始
本模型可在NeMo工具包 [3] 中使用,可作为预训练检查点用于流式处理或在其他数据集上进行微调。你需要安装 NVIDIA NeMo,建议在安装最新版本的PyTorch之后再安装它。
pip install nemo_toolkit['all']
✨ 主要特性
- 本集合包含大尺寸的缓存感知型FastConformer-Hybrid版本,约有1.14亿个参数,支持多前瞻。
- 模型在大规模英语语音数据上训练,适用于流式自动语音识别。
- 支持多种延迟设置,可用于不同的流式应用场景。
📦 安装指南
你需要安装 NVIDIA NeMo,建议在安装最新版本的PyTorch之后再进行安装,安装命令如下:
pip install nemo_toolkit['all']
💻 使用示例
基础用法
模拟流式ASR
你可以使用此脚本模拟这些模型的流式ASR:缓存感知流式模拟。你可以使用 --att_context_size
设置上下文大小,否则将使用列表中的第一个上下文大小(1040毫秒)作为默认值。
使用Python进行转录
缓存感知模型的设计使得模型在离线和流式模式下的预测结果相同。因此,你可以使用常规的转录函数进行转录。首先,获取一个示例音频文件:
wget https://dldata-public.s3.us-east-2.amazonaws.com/2086-149220-0033.wav
然后,执行以下代码:
import nemo.collections.asr as nemo_asr
asr_model = nemo_asr.models.EncDecHybridRNNTCTCBPEModel.from_pretrained(model_name="nvidia/stt_en_fastconformer_hybrid_large_streaming_multi")
asr_model.encoder.set_default_att_context_size([70,13])
asr_model.change_decoding_strategy(decoder_type='rnnt')
output = asr_model.transcribe(['2086-149220-0033.wav'])
print(output[0].text)
高级用法
转录多个音频文件
使用Transducer模式进行推理:
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py \
pretrained_name="stt_en_fastconformer_hybrid_large_streaming_multi" \
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>"
使用CTC模式进行推理:
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py \
pretrained_name="stt_en_fastconformer_hybrid_large_streaming_multi" \
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>" \
decoder_type="ctc"
要在不同的前瞻设置之间切换,你可以在 transcribe_speech.py
脚本中设置 att_context_size
,如下所示:
python [NEMO_GIT_FOLDER]/examples/asr/transcribe_speech.py \
pretrained_name="stt_en_fastconformer_hybrid_large_streaming_multi" \
audio_dir="<DIRECTORY CONTAINING AUDIO FILES>" \
att_context_size=[70,0]
att_context_size
支持的值为:{[70,0]: 0毫秒, [70,1]: 80毫秒, [70,16]: 480毫秒, [70,33]: 1040毫秒}。
📚 详细文档
模型架构
这些模型是Hybrid FastConfomer的缓存感知版本,专为流式ASR训练。你可以在 缓存感知流式Conformer [5] 中找到有关缓存感知模型的更多信息。
这些模型使用多前瞻进行训练,使其能够支持不同的延迟。要了解如何在不同的前瞻设置之间切换,你可以阅读有关缓存感知模型的文档。
FastConformer [4] 是Conformer模型 [1] 的优化版本,你可以在 Fast-Conformer模型 中找到有关FastConformer详细信息。
该模型在多任务设置中使用联合Transducer和CTC解码器损失进行训练 [5]。你可以在 混合Transducer-CTC 中找到有关混合Transducer-CTC训练的更多信息。你也可以在文档中找到有关如何在Transducer和CTC解码器之间切换的更多内容。
训练数据
本集合中的所有模型均在一个复合数据集(NeMo ASRSET)上进行训练,该数据集包含数千小时的英语语音:
- Librispeech:960小时的英语语音
- Fisher语料库
- Switchboard-1数据集
- WSJ-0和WSJ-1
- 新加坡国家语料库(第1部分、第6部分)
- VCTK
- VoxPopuli(英语)
- Europarl-ASR(英语)
- 多语言Librispeech(MLS EN) - 2000小时子集
- Mozilla Common Voice(v7.0)
- People's Speech - 12000小时子集
注意:较旧版本的模型可能在较小的数据集上进行训练。
性能表现
本集合中可用模型的列表在以下表格中展示,分别列出了Transducer解码器和CTC解码器的性能。自动语音识别模型的性能以单词错误率(WER%)表示,采用贪心解码。
Transducer解码器
注意力上下文大小 |
LS test-other ([70,13]-1040毫秒) |
LS test-other ([70,6]-480毫秒) |
LS test-other ([70,1]-80毫秒) |
LS test-other ([70,0]-0秒) |
训练数据集 |
[[70,13],[70,6],[70,1],[70,0]] |
5.4 |
5.7 |
6.4 |
7.0 |
NeMo ASRSET 3.0 |
CTC解码器
注意力上下文大小 |
LS test-other ([70,13]-1040毫秒) |
LS test-other ([70,6]-480毫秒) |
LS test-other ([70,1]-80毫秒) |
LS test-other ([70,0]-0秒) |
训练数据集 |
[[70,13],[70,6],[70,1],[70,0]] |
6.2 |
6.7 |
7.8 |
8.4 |
NeMo ASRSET 3.0 |
输入输出
- 输入:本模型接受16000 KHz单声道音频(wav文件)作为输入。
- 输出:对于给定的音频样本,本模型以字符串形式提供转录后的语音。
局限性
由于该模型是在公开可用的语音数据集上训练的,对于包含技术术语或模型未训练过的方言的语音,其性能可能会下降。对于带有口音的语音,模型的表现可能也会较差。
NVIDIA Riva部署
NVIDIA Riva 是一个加速语音AI SDK,可部署在本地、所有云、多云、混合云、边缘和嵌入式设备上。此外,Riva还提供以下功能:
- 针对最常见语言,使用在专有数据上训练的模型检查点,经过数十万小时的GPU计算,实现世界级的开箱即用准确率。
- 通过运行时单词增强(例如品牌和产品名称)以及对声学模型、语言模型和逆文本归一化的定制,实现一流的准确率。
- 支持流式语音识别、Kubernetes兼容的扩展和企业级支持。
虽然此模型目前尚未得到Riva的支持,但 支持的模型列表在此处。你可以查看 Riva实时演示。
🔧 技术细节
这些模型是基于缓存感知的FastConformer-Hybrid架构,使用多前瞻技术进行训练,以支持不同的延迟。模型在大规模英语语音数据集上进行训练,采用联合Transducer和CTC解码器损失的多任务训练方法。具体的技术细节和评估结果可以参考 Stateful Conformer with Cache-based Inference for Streaming Automatic Speech Recognition [5]。
📄 许可证
本模型使用的许可证为CC BY 4.0。
参考文献
[1] Conformer: Convolution-augmented Transformer for Speech Recognition
[2] Google Sentencepiece Tokenizer
[3] NVIDIA NeMo Toolkit
[4] Fast Conformer with Linearly Scalable Attention for Efficient Speech Recognition
[5] Stateful Conformer with Cache-based Inference for Streaming Automatic Speech Recognition