ASR识别(自动语音识别)

简介

asr的实现可分为pipeline或者end2end思路,其中主要区别在于声学模型的识别单元上:

词模型

字发音模型

半音节模型

音素模型

模型识别单元大小(词发音模型、字发音模型、 半音节模型或音素模型)对语音训练数据量大小、 语音识别率,以及灵活性有较大的影响。对中等词汇量以上的语音识别系统来说,识别单元小,则计算量也小,所需的模型存储量也小,要求的训练数据量相对也小,所需的模型存储量也小,要求的训练数据量相对也少,但带来的问题是对应语音段的定位和分割困难,以及更复杂的识别模型规则。通常大的识别单元易于包括协同发音在模型中,这有利于提高系统的识别率,但要求的训练数据相对增加,当然,对于现在大数据处理技术来说,训练数据的增多问题不大。

传统方法最为常见的是音素级别,其次到字发音模型,词级别模型由于每个词都有足够多的训练样本,这往往难以做到,尤其是对于大词汇量语音识别比较少见。在深度学习中由于建模能力的加强,会偏向于使用拼音、字、词或者wordpiece模型,但也对数据产生较大的依赖。

模型

从目前ASR的发展来看,建议采用end2end的模型,其中有CTC、FSMN、encode-decode,甚至transformer。可以说涉及编码解码的模型都可以用来进行语音模型搭建。

简单说下怎么采用transformer做ASR,尤其我本身是做NLP的,所以对transformer比较熟悉,这里也推荐大家尝试采用transformer建模,其并行的训练优势确实比RNN要舒服得多,且性能也比RNN要好。那么怎么采用transformer做ASR呢,基本框架是保持不变,只需要将输入从文本切换成语音特征,较为常用的log mel-fbank,这样的话encode的词向量就是不需要的了,decode还是跟原transformer一样做文本输出,目前我采用transformer在中文ASR上能达到95%的准确率。详情大家也可以参考下这篇paper:

数据集

公开的中文数据集有:

thchs30

ST-CMDS-20170001_1-OS

Aishell-1

Primewords Chinese Corpus Set

特征

目前语音识别的常用的特征有:

fft

log mel-fbank

mfcc

数据增强

通过0.9、1.1的速度扰动对数据进行增强处理

相关paper

你可能感兴趣的:(ASR识别(自动语音识别))