语音识别 Speech recognition 中的 CTC cost,CTC损失函数(学习心得)

seq2seq 模型在语音识别方面的应用让人激动!

在这里插入图片描述
什么是语音识别问题呢?
气压随着时间推移不断变化,产生了音频
人的耳朵可以衡量不同频率和强度的声波

输入整个原始的音频片段 raw audio clip
生成一个声谱图 generate a spectrogram(横轴是时间,纵轴是声音的频率,颜色显示声波能量的大小)

  • 伪空白输出 false blank outputs:经常用于预处理步骤,在输入到神经网络之前

过去一段时间,语音识别是基于音位 phonemes 来构建的
而音位是由人工设计而成 hand-engineered

但是在 end-to-end 的神经网络中,音位已经不再需要了
我们只需要一个很大的数据集
学术研究中需要 300 小时的音频,专业研究中,可能超过 3000 小时,都是合理的大小
最好的商业系统,已经训练了超过1万小时的数据,甚至超过10万,而且还在变得更大!

在这里插入图片描述
如何建立一个语音识别系统呢?
比如,我们可以利用注意力模型

在这里插入图片描述
另外一种效果不错的方法:CTC cost (利用 CTC 损失函数)
CTC:Connectionist Temporal Classification
这是由 Alex Graves, Santiago Fernandes, Faustino Gomez, Jurgen Schmidhuber 提出

假设语音片段内容是某人说的一句话
我们建立一个网络结构,输入 x 和输出 y 的数量都一样(其实就是个简单的单向 RNN,但是实践中,更可能是一个双向 LSTM 结构/ GRU 结构,并且是 deeper model)

值得注意的是,time step 在语音识别中会非常大,而且输入的时间步 要比输出大很多
比如 10 秒的音频,特征是 100 赫兹(即每秒100个样本),那一共是 1000 个输入
但是我们的输出,可能并没有 1000 个字母
这怎么处理呢?

CTC cost function 解决了这一问题
比如下面这种输出:
在这里插入图片描述
CTC 允许 RNN 生成输出空白符 blank character,上面是用下划线表示
并将空白字符间 重复的字符 折叠,得到:

t h e   q the\ q the q

所以即使我们得到1000个输出,但是最终得到的文本会更短

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值