语音识别原理(1)-语音识别有哪些过程

如果要自己开发一个语音识别系统,首先需要一个声音的录音程序。这个录音程序主要干的事就是将我们人说话的模拟信号转换成数字信号,也就是语音编码中的量化。

语音编码主要有4个步骤的过程:

参考  https://blog.csdn.net/miaokoko/article/details/79183975

模拟信号------采样------量化--------数字信号

模拟信号也就是我们人发出的声音信号,模拟信号是连续的,没有办法用计算机存储,所以为了能让计算机存储模拟信号必须对其进行采样。

采样也就是每隔一段时间采一个点,让人说话的模拟信号变成离散信号,可以让计算机处理。

但是这时候计算机还是不能存储,因为没有计算机里面都是使用二进制存储,必须将每一个模拟信号的直转换为一个量值,让计算机能够表达并存储,所以就需要对采样的值进行量化

量化也就是我们编程中遇到的16位PCM编码中的16位,每16位表达一个量化的值,也可以选择8位。

PCM编码就是对模拟信号进行四个过程转换后得到的数字信号,但是此使如果我们要播放音频,还需要将信号转换为可以播放的格式,一般选择无损的话会选择wav格式,wav只是简单的在PCM数据上加了自己的头,数据部分不变。具体格式很多,可以参考:https://blog.csdn.net/houxiaoni01/article/details/78810674  作者写的很全。

然后拿到数字信号就可以进行语音识别了。

语音识别主要过程有:

一段音频------分帧(分成若干小段音频)------特侦提取(一般是MFCC特征)--------识别(声学模型)-------组合(语言模型)

首先一段音频,也就是上面我们的录音程序录到的一段音频文件,比如A.wav/A.mp3......

分帧也就是将我们录到的这一段音频隔一段时间切割一下,比如我们录了1分钟的声音,现在我们每1秒分割一下,会得到60个样本。

特征提取一般是提取MFCC特征,使用的主要是傅里叶变化的原理,有一些现成的工具(librosa http://librosa.github.io/librosa/),有兴趣也可以看看源码。

然后就是通过两个模型来识别。这里主要的两个模型,声学模型和语言模型,最好使用已经训练好的,因为已有的模型是在大量数据样本下训练的,有更好的棒性。如果要自己完成整个过程,需要自己对数据进行标注。

声学模型主要干的事是将我们分帧后的数据获取到对应的因素。

语言模型也就是根据不同语言的结构,前后关系的一些句子,匹配到和声学模型识别到的最相似的句子,给出一个人类可以读懂的句子。

语音识别大致就是这样几个过程。

还需要了解一些最常用的算法:比如EM算法,HMM(隐马尔可夫),LSTM,RNN,基本的神经网络等。

学习语音识别也可以多在GitHub上看一些项目。多看源码,了解具体的过程。

猜你喜欢

转载自blog.csdn.net/qq_23128065/article/details/103432541
今日推荐