[DeeplearningAI笔记]序列模型3.9-3.10语音辨识/CTC损失函数/触发字检测
2023-09-11 14:15:01 时间
5.3序列模型与注意力机制
觉得有用的话,欢迎一起讨论相互学习~
3.9语音辨识 Speech recognition
- 问题描述 对于音频片段(audio clip)x ,y生成文本(transcript),人听见的或者麦克风捕捉的都是空气中细微的气压变化,语音识别系统能够根据这种微弱的气压变化将音频转化为文本字符。
- 将空气中微弱的气压变化显示成频率图的形式,并输出音频的文本内容如下图所示:
- 考虑到人的耳朵并不会处理声音的原始波形,而是通过一种特殊的物理结构来测量不同的频率和强度的声波,音频的常见预处理方式就是生成这样的 声谱图 ,同样的 横轴是时间,纵轴是声音的频率,而图中不同的颜色显示了声波的能量,也就是在不同的时间和频率上这些声音有多大
- 音位 过去的语音识别系统是依据 音位 来进行分辨的,即通过人为制定的音位符号来表示一个特定的语言,使用音位的符号标记就能使用机器合成出指定的语言。
- 进展 但是在 深度学习 这种端到端的学习系统中使用 音位 来表示声音符号已经不再有必要,而是可以构建一个系统,通过向系统中输入音频,然后直接输出音频的文本。而不需要用这种人工设计的表示方法。所以语音识别使用的数据集特别巨大,往往可以长达300多个小时甚至3000个小时的文本音频数据集。大型的商业系统中也训练了1W或者10W个小时。
注意力模型在语音识别中的应用
- 输入语音文本数据集的不同时间帧上的数据,并使用一个注意力模型输出文本描述。
CTC损失函数语音识别(Connectionist temporal classification)
Graves A, Gomez F. Connectionist temporal classification:labelling unsegmented sequence data with recurrent neural networks[C]// International Conference on Machine Learning. ACM, 2006:369-376.
-
示例 假设输入音频为 the quick brown fox ,这时使用一个新的网络,在这个例子中 输入 和 输出 的数量相等,在这里使用一个简单的 单向循环神经网络 作为例子,而 实际应用使用的往往是一个很大很深的双向LSTM或GIU结构的循环神经网络 通常输入的数量往往比输出的数量要多很多 比如你有一段10秒的音频,并且特征是100HZ的,即每秒有100个样本,于是这段10s的音频片段,就会有1000个输入。
-
但是音频文本识别的输出肯定没有1W个,所以可以用 空白字符 和 重复字符 来对其进行填充,其中 重复字符 可以用来重叠,而 空白字符 可以用来占位。
-
例如 ttt_h_eee___\space____qqq__ \space 表示空格符,表示此处为单词的结尾,用来分割单词,而 “_ ” 表示用于占位的占位符,其中占位符中间的 重复字符 可以折叠。 ttt_h_eee___\space____qqq__ 可以被处理为 the q 三个t,e,q都可以被折叠为一个字母,而占位符可以被忽略。
3.10触发字检测 Trigger word detection
- 随着语音识别的发展,越来越多的设备可以被你的声音 唤醒 ,这被称为 触发字检测系统
- 有关于 触发字检测 的文献还处于发展阶段,对于 触发字检测 的最好算法目前还没有一个广泛的定论。
- 首先将音频文件输入到RNN中,然后定义目标标签y
- 假如音频片段的一点处刚说完一个触发字,那么你就可以在训练集中把目标标签都设为0,然后此点目标签设为1.然后此点之后恢复成0,持续这个过程,只要触发了关键词,就将目标标签设置为1.
- 缺点 该算法构建了一个很不平衡的训练集,即0的出现次数比1的出现次数多出了很多。 为了解决这个问题可以在 关键词被触发 后输出多个1,以消除这种不平衡性。
相关文章
- 关于搜索夜话----作为阶段序列的告别
- Java实现 LeetCode 152 乘积最大子序列
- 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- R语言实现金融数据的时间序列分析及建模
- 时间序列教程 一、数据的三个组成部分
- 机器学习笔记 - 基于keras的Simple RNN训练时间序列数据
- 机器学习笔记 - 时间序列的线性回归
- 数学建模暑期集训25:时间序列+Spss实操
- 数学建模学习笔记(二十一)时间序列小白指南(上)
- 【t059】序列
- SAP UI5 Fiori 应用在启动时向 ABAP 后台发起的 OData 请求序列的顺序和作用分析
- Keras之MLPR:利用MLPR算法(3to1【窗口法】+【Input(3)→(12+8)(relu)→O(mse)】)实现根据历史航空旅客数量数据集(时间序列数据)预测下月乘客数量问题
- 2407. 最长递增子序列 II-动态规划暴力解法和线段树
- Leetcode 1218. 最长定差子序列(提供一种思路)