发布网友 发布时间:2022-04-27 06:42
共3个回答
热心网友 时间:2022-06-27 21:51
早期的训练语音模型的时候,我们需要标记每一帧的训练数据,这时候基本上是用传统的HMM和GMM做的。然后用标记了的数据去训练神经模型。端到端的方案是去处这部分非神经网络的处理阶段,而直接用CTC跟RNN来实现不需要标记到帧的训练数据来直接训练出语音模型,而不借助于其他(HMM,GMM)来训练神经网络模型。在传统的语音识别的模型中,我们对语音模型进行训练之前,往往都要将文本与语音进行严格的对齐操作。这样就有两点不太好:虽然现在已经有了一些比较成熟的开源对齐工具供大家使用,但是随着deep learning越来越火,有人就会想,能不能让我们的网络自己去学习对齐方式呢?因此CTC就应运而生啦。想一想,为什么CTC就不需要去对齐语音和文本呢?因为CTC它允许我们的神经网络在任意一个时间段预测label,只有一个要求:就是输出的序列顺序只要是正确的就ok啦~这样我们就不在需要让文本和语音严格对齐了,而且CTC输出的是整个序列标签,因此也不需要我们再去做一些后处理操作。对一段音频使用CTC和使用文本对齐的例子如下图所示:
热心网友 时间:2022-06-27 21:52
语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。 语音识别听写机在一些领域的应用被美国新闻界评为1997年计算机发展十件大事之一。CTC 全称 是Connectionist Temporal Classification,是一种改进的RNN模型。RNN模型可以用来对两个序列之间的关系进行建模。但是,传统的RNN,标注序列和输入的序列是一一对应的。语音识别中的序列建模问题不是这样:识别出的字符序列或者音素序列长度远小于输入的特征帧序列。所以不能直接用RNN来建模。CTC解决这一问题的方法是,在标注符号集中加一个空白符号blank,然后利用RNN进行标注,最后把blank符号和预测出的重复符号消除。比如有可能预测除了一个"--a-bb",就对应序列"ab"。这样就让RNN可以对长度小于输入序列的标注序列进行预测了。RNN的训练需要用到前向后向算法(Forward-backward algorithm),大概思路是,对于给定预测序列,比如“ab”,在各个字符间插入空白符号,建立起篱笆网络(Trellis),然后对将所有可能映射到给定预测的序列都穷举出来求和。RNN的解码还没有好方法,一般会使用最优路径,即只取可能性最大的带blank符号的路径,但是这实际上不一定对应最终结果的最佳概率值。利用前缀树的方法可以求取映射到最终结果序列的总概率,但是时间复杂度是指数级的,不能用。苗亚杰博士提供了一种结合语言模型的解码方法,其实质是取最优路径。
热心网友 时间:2022-06-27 21:52
传统的语音识别系统,是由语音模型、词典、语言模型构成的,而其中的语音模型和语言模型是分别训练的。这就造成每一部分的训练目标(语音模型的likelihood,语言模型的perplexity)都与整个系统的训练目标(word error rate)不一致。而使用了CTC之后,从语音特征(输入端)到文字串(输出端)就只有一个神经网络模型(这就叫“端到端”模型),可以直接用WER的某种proxy作为目标函数来训练这个神经网络,避免花费无用功去优化一个别的目标函数。当然,实际中因为可以获取的文本数据比语音数据多得多,所以往往还会用文本数据训练一个更好的语言模型,与CTC神经网络结合使用。