魔王、杜伟机器之心报道

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

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 前向与后向重评分:

##########configs##############rnn transducer modelrnnt_model=#forward and backward las rescorer modellasrescorer_fw=lasrescorer_bw=

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

Powered by Froala Editor

理论腾讯 AI Lab语音处理工具包
相关数据
语音识别技术

自动语音识别是一种将口头语音转换为实时可读文本的技术。自动语音识别也称为语音识别(Speech Recognition)或计算机语音识别(Computer Speech Recognition)。自动语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。由于语音信号的多样性和复杂性,目前的语音识别系统只能在一定的限制条件下获得满意的性能,或者说只能应用于某些特定的场合。自动语音识别在人工智能领域占据着极其重要的位置。

语音处理技术

语音处理(Speech processing),又称语音信号处理、人声处理,其目的是希望做出想要的信号,进一步做语音辨识,应用到手机界面甚至一般生活中,使人与电脑能进行沟通。

腾讯机构

腾讯,1998年11月诞生于中国深圳,是一家以互联网为基础的科技与文化公司。我们的使命是“通过互联网服务提升人类生活品质”。腾讯秉承着 “一切以用户价值为依归”的经营理念,为亿万网民提供优质的互联网综合服务。 腾讯的战略目标是“连接一切”,我们长期致力于社交平台与数字内容两大核心业务:一方面通过微信与QQ等社交平台,实现人与人、服务及设备的智慧连接;另一方面为数以亿计的用户提供优质的新闻、视频、游戏、音乐、文学、动漫、影业等数字内容产品及相关服务。我们还积极推动金融科技的发展,通过普及移动支付等技术能力,为智慧交通、智慧零售、智慧城市等领域提供有力支持。 腾讯希望成为各行各业的数字化助手,助力数字中国建设。在工业、医疗、零售、教育等各个领域,腾讯为传统行业的数字化转型升级提供“数字接口”和“数字工具箱”。我们秉持数字工匠精神,希望用数字创新提升每个人的生活品质。随着“互联网+”战略实施和数字经济的发展,我们通过战略合作与开放平台,与合作伙伴共建数字生态共同体,推进云计算、大数据、人工智能等前沿科技与各行各业的融合发展及创新共赢。多年来,腾讯的开放生态带动社会创业就业人次达数千万,相关创业企业估值已达数千亿元。 腾讯的愿景是成为“最受尊敬的互联网企业”。我们始终坚守“科技向善”的初心,运用科技手段助力公益事业发展,并将社会责任融入每一个产品。2007年,腾讯倡导并发起了中国互联网第一家在民政部注册的全国性非公募基金会——腾讯公益慈善基金会。腾讯公益致力于成为“人人可公益的创连者”,以互联网核心能力推动公益行业的长远发展为己任。腾讯公益联合多方发起了中国首个互联网公益日——99公益日,帮助公益组织和广大爱心网友、企业之间形成良好的公益生态,让透明化的“指尖公益”融入亿万网民的生活。

http://www.tencent.com/
推荐文章
暂无评论
暂无评论~