专注E2E语音识别,腾讯AI Lab开源轻量级语音处理工具包PIKA

语音之家 2021-09-07 15:39:30

PyTorch + Kaldi,腾讯 AI Lab 开源轻量级语音处理工具包 PIKA,专注于端到端语音识别任务。

Kaldi 是一个开源的语音识别系统,由 Daniel Povey 主导开发,在很多语音识别测试和应用中广泛使用。但它依赖大量脚本语言,且核心算法是用 C++ 编写的,对声学模型的更新和代码调试带来一定难度。

语音识别系统架构

「Kaldi 之父」Daniel Povey 表示正在打造下一代 Kaldi。去年夏天在 WAIC 开发者日上,Daniel 分享了他对下一代 Kaldi 的期望,希望能够基于 PyTorch 甚至 TensorFlow 构建语义识别模型。

学术界和业界也都在努力改进语音识别流程,加快技术迭代。此前,Yoshua Bengio 团队成员 Mirco Ravanelli 等人开发了一个新型开源框架——PyTorch-Kaldi,试图继承 Kaldi 的效率和 PyTorch 的灵活性,弥补 PyTorch 和 Kaldi 之间的鸿沟:在 PyTorch 中实现声学模型,在 Kaldi 中执行特征提取、标签 / 对齐计算和解码。

近日,腾讯 AI Lab 开源了一个基于 PyTorch 和 (Py)Kaldi 的轻量级语音处理工具包 PIKA。PIKA 首个版本专注于端到端语音识别,开发团队以 PyTorch 作为深度学习引擎,使用 Kaldi 进行数据格式化和特征提取。

项目地址:https://github.com/tencent-ailab/pika

 

具体而言,PIKA 具备以下特征:

● 即时数据增强和特征加载器;

● TDNN Transformer 编码器,以及基于卷积和 Transformer 的解码器结构;

● RNNT 训练和批解码;

● 利用 Ngram FST 的 RNNT 解码(即时重评分、aka 和 shallow fusion);

● RNNT 最小贝叶斯风险(MBR)训练;

● 用于 RNNT 的 LAS 前向与后向重评分器;

● 基于高效 BMUF(块模型更新过滤)的分布式训练。

 

安装和依赖

PIKA 开发团队推荐使用 Anaconda,因为它包含大多数的依赖项。其他主要依赖如下:

PyTorch

用户可前往 PyTorch 官网自行安装,代码和脚本应能够在 PyTtorch 0.4.0 及以上版本运行。但为了确保与 RNNT 损失模块兼容,PIKA 开发团队推荐使用 PyTorch 1.0.0 以上版本。

Pykaldi 和 Kaldi

开发团队使用 Kaldi 和 PyKaldi(Kaldi 的 python 包装器)进行数据处理、特征提取和 FST 操作。用户可前往 Pykaldi 网站自行安装,为提升效率请确保使用 ninja 构建 Pykaldi。完成所有 pykaldi 安装流程后,Kaldi 和 Pykaldi 依赖项即准备完成。

CUDA-Warp RNN-Transducer

对于 RNNT 损失模块,开发者采用了 warp-rnnt(https://github.com/1ytic/warp-rnnt)项目中的 pytorch 绑定。

使用方法

在使用 PIKA 之前,我们需要先检查 egs 目录中的所有训练和解码脚本。

数据准备和 RNNT 训练

egs/train_transducer_bmuf_otfaug.sh 包括数据准备和 RNNT 训练。用户需要准备训练数据并指定训练数据目录:

#training data dir must contain wav.scp and label.txt files#wav.scp: standard kaldi wav.scp file, see https://kaldi-asr.org/doc/data_prep.html #label.txt: label text file, the format is, uttid sequence-of-integer, where integer#           is one-based indexing mapped label, note that zero is reserved for blank,  #           ,eg., utt_id_1 3 5 7 10 23
train_data_dir=

 

继续 MBR 训练

有了 RNNT 训练模型后,用户可以使用 egs/train_transducer_mbr_bmuf_otfaug.sh 继续 MBR 训练(假设使用的训练数据相同,则可以省略数据准备步骤)。用户需要确保指定初始模型:

--verbose \
--optim sgd \
--init_model $exp_dir/init.model \
--rnnt_scale 1.0 \
--sm_scale 0.8 \


训练 LAS 前向与后向重评分器

用户可以利用 egs/train_las_rescorer_bmuf_otfaug.sh 为 RNNT 模型训练 LAS 前向与后向重评分器。LAS 重评分器将与 RNNT 模型共享编码器部分,并使用两层 LSTM 作为额外的编码器。用户需要确保指定编码器共享:

--num_batches_per_epoch 526264 \
--shared_encoder_model $exp_dir/final.model \
--num_epochs 5 \
该工具还支持双向 LAS 重评分,即前向与后向重评分。后向重评分(自右至左)通过训练 LAS 模型时反转序列标签来实现。通过以下代码,用户可以轻松执行 LAS 后向重评分训练:

--reverse_labels

 

解码

egs/eval_transducer.sh 是主要的评估脚本,包含解码 pipeline。指定以下两个模型可以实现 LAS 前向与后向重评分:
1、##########configs##############rnn transducer model

2、rnnt_model=#forward and backward las rescorer model

3、lasrescorer_fw=

4、lasrescorer_bw=

PIKA 工具包中的所有训练和解码超参数都基于大规模训练和内部评估数据。用户可能需要调参以获得最优性能。此外,WER (CER) 评分脚本基于中文普通话任务,处理不同语言的用户可以重写评分脚本。

...全文
1508 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
代码转载自:https://pan.quark.cn/s/50df8825dc0d Tensilica Xtensa指令集架构手册是一份详尽阐述Xtensa指令集架构(ISA)的参考指南,它主要面向Tensilica公司所推出的处理器核心,尤其是LX106核,同时亦涵盖了ESP8266和ESP32等相关内容。该手册全面介绍了Xtensa处理器核心的指令集、配置选项、扩展能力以及将架构映射至硬件的详细情况。接下来将依据手册中所述的知识点进行深入解读。 ### Xtensa指令集架构(ISA) Xtensa指令集架构是Tensilica公司为其处理器产品设计的一套指令集,该指令集具备高度的可配置性和可扩展性。这一特性使得Xtensa ISA能够在不同的应用领域和硬件需求中进行个性化定制,以满足特定的功能与性能要求。 #### 可配置性(Configurability) Xtensa ISA的可配置性体现在用户可以根据实际需求对处理器的多个方面进行定制。这包括但不限于: - **指令集扩展**:用户可以根据特定的应用需求添加新的指令,从而提升处理特定任务的效率。 - **寄存器文件扩展**:根据应用需求,可以增加或优化处理器的寄存器数量和类型。 - **协处理器扩展**:通过集成特定的协处理器,可以将专门的计算任务卸载到协处理器上,从而提升整体性能。 #### 可扩展性(Extensibility) Xtensa ISA不仅可配置,还拥有卓越的可扩展性,它支持多种扩展,包括: - **状态扩展(State Extensions)**:允许处理器添加新的状态寄存器,以支持新的功能或增强现有功能。 - **指令扩展(Instruction Extensions)**:...
下载代码方式:https://pan.quark.cn/s/8779ceeac982 YOLOv5被认为是一种功能卓越且精确度高的目标检测系统,它在即时处理场景中展现出优越的性能。"基于YOLOv5的火灾检测"计划致力于运用这项尖端的计算机视觉方法,以达成对火焰和烟雾的有效辨识,进而起到防止及降低火灾事故的作用。在这个压缩文件里,用户能够获取到预先训练完成的模型,这表示使用者能够直接执行推理检测,无需从头开始训练模型。 我们现在将详细探讨YOLO(You Only Look Once)系统。YOLO是一种单阶段的目标检测方法,它将目标检测任务转化成回归问题,通过直接预测边界框和类别可能性来迅速识别图像中的物体。YOLOv5是这一系列的最新迭代,由Ultralytics团队研发,它在前几代的基础上进行了改进,包括更迅速的训练速率、更精准的检测以及更强的适应性。 YOLOv5的关键优化包含: 1. **数据增强**:应用了Mosaic数据增强技术,这是一种融合了随机缩放、翻转、裁剪及色彩调节的技巧,增强了模型的普遍适用性。 2. **更高效的架构**:运用了SPP-Block(Spatial Pyramid Pooling)和Path Aggregation Network (PANet)设计,提升了特征提取的效能和精确度。 3. **权重初始化**:采用了更优化的权重初始化策略,使模型在初始训练阶段就能更快地达到收敛。 4. **联合训练**:YOLOv5支持多尺度训练,即同步训练不同尺度的网络,以改善对小目标的检测效果。 5. **优化的损失函数**:使用了GIOU(Generalized IoU)损失函数,改进了边界框的定位。 针对火灾检测的应用,YOLOv...

235

社区成员

发帖
与我相关
我的任务
社区描述
助力AI语音开发者的社区
语音识别人工智能自然语言处理 企业社区 北京·昌平区
社区管理员
  • 语音之家
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧