完全基于C++语言编写的开源语音识别系统

标签:
wav2letter开源语音识别系统c杂谈 |
分类: 技术文章 |
随着大众对于自动语音识别(automatic speech
recognition,ASR)技术关注的持续加强,在众多软件社区中语音识别软件系统与工具包软件激增。其中包括Kaldi、ESPNet、OpenSeq2Seq和Eesen。在过去十年的发展中,这些框架已经从传统的基于隐马尔可夫模型(Hidden
Markov Models,HMM)和高斯混合模型(Gaussian Mixture
Models,GMM)发展到基于端到端的神经网络模型。许多当前的ASR工具包都不是基于声音单位(phonemes)的而是使用基于图形单位(graphemes)的端到端声学建模。本文章所介绍的ASR工具包也是如此。
产生这样的转变主要有以下两方面原因:1、端到端模型十分简单;2、此模型与HMM/GMM系统之间原有的差距正在急剧缩小。
本文向大众展示了一款当前基于深度学XI的语音识别架构——wav2letter++,wav2letter++完全基于C++语言编写并使用了能最大化提升效率的ArrayFire张量库。高性能结构可以加快迭代速度,而迭代速度很多时候又是直接关乎研究与训练新的数据库或任务模型的成功的重要参数。
作者通过与其他现存常见的主要的开源语音识别系统相比较,确定了wav2letter++在一定情况下比其他已经优化过的端到端语音识别神经网络训练速度快超过两倍以上。
其中阐述了wav2letter++为什么会利用现代C++语言对AI智能进行的设计,以及C++为语音识别系统带来的好处:
用C++作为当前第三广泛使用的编程语言,能够完全控制高性能任务关键型系统的所有资源。更重要的是,C++中所具有的静态数据类型可以在对大规模程序进行编译时捕捉所有协议不匹配错误。利用现代C++语言对AI智能进行设计,我们可以在不牺牲编程简易度的情况下写出保持高效率与高可扩展性的软件。
wav2letter++的设计主要能满足三项使用需求:首先,工具包必须可以在包含数千小时语音数据的数据库中建立训练模型。其次,必须能尽量简单地合并与表达新的网络结构和损失函数,尽可能简化其他代码的使用。第三,从模型研究到模型部署的路径应该在确保研究的灵活性的基础上尽量做到简洁并尽可能减少对新代码的需求。
wav2letter++采用了ArrayFire作为张量库,并支持数种端到端的模型,每个模型分别由“网络”和“标准”两部分组成。同时wav2letter++的训练管道为使用者使用不同的特征、框架与优化参数进行实验提供了更大的灵活性。训练程序可以在三种模式下运行:-train(平启动(flat-start)训练),continue(从检查点位置继续)和fork(例如转移学习)。并使用更高效的cuDNN算法扩展了核心ArrayFire CUDA后端。
wav2letter++是完全使用C++编写的系统,它事实上可以很简单的和现存的用任何语言编写的应用程序进行整合。由于它使用的C++语言具有静态变量且面向对象,所以它可以更好地适应大规模开发需求。
本文仅摘取了译文中的一些关键论述,旨在使阅读者能对系统 有初步的认识,如想通过更为详细的论点和论据了解该系统为什么能提供高效的语音识别能力?可点击“高效的语音识别系统:wav2letter++”来对这篇译文进行更深入和详尽的了解。
作者:Vineel Pratap, Awni Hannun等
原文链接:https://arxiv.org/abs/1812.07625