CTC模型是语音识别模型中常见的模块之一,现有主流的语音识别系统经常采用该模型来实现端到端的语音识别。而CTC出现之前,语音识别模型的端到端识别效果还是相对较弱的,也就是说CTC解决了这一问题。
1、CTC的相关原理
深度学习的序列到序列模型可以解决许多现实任务,如:
- Image Classification
- Image Generation
- Language Modeling
- Sentiment Analysis
- Speech Recognition
- Summarization
- Translation
由于seq2seq模型往往需要输入序列和输出标注之间具备一一对应关系,然而语音识别是该模型中比较特殊的一块,由于在语音识别中,一个声音信号被转换成words或者是sub-word单元,在利用seq2seq模型时,它要求预先分割(pre-segmented)的训练数据,通过后处理将模型输出转换为label序列,然而由于识别出的字符序列或者音素序列长度远小于输入的特征帧序列,无法达到一一对应关系,因此它的应用受到较大的限制。
因此在语音识别模型中,引入了CTC模型(Connectionist temporal classification),它往往接在RNN网络的最后一层用于序列学习所用;对于一段输入序列长度为T的序列来说,每个样本点 t 在RNN网络的最后一层都会输出一个softmax向量,表示预测概率,接上CTC模型之后,就可以正确预测出序列的标签;
2、CTC的安装
(1)进行创建和make
代码语言:javascript复制git clone https://github.com/SeanNaren/warp-ctc.git
cd warp-ctc
mkdir build; cd build
cmake ..
make
从而可见该安装成功。
(2)进行pytorch绑定CTC的安装
代码语言:javascript复制export CUDA_HOME="/usr/local/cuda"
cd ../pytorch_binding
python setup.py install
注:在这过程中需要先安装cffi.
代码语言:javascript复制pip install cffi
(3)安装成功的具体界面如下:
(4)在python中的调用结果如下,可见其已经安装成功。