语音识别基础学习与录音笔实时转写测试

2020-11-02 10:24:39 浏览数 (1)

一、引言

小编所在项目中,C1、C1Pro、C1Max录音笔,通过BLE和APP连接,音频文件实时传输到录音助手App端,具备实时录音转写的功能。工欲善其事必先利其器,小编补习了语音识别相关基础知识,对所测试应用的实时转写业务逻辑有了更深的认识。希望对语音测试的小伙伴们也有所帮助~~(●—●)

二、语音识别基础概念

1、语音识别(Automatic Speech Recognition,ASR)

语音识别,也被称自动语音识别,所要解决的问题是让机器能够“听懂”人类的语音,将语音中包含的文字信息“提取”出来,相当于给机器安装上“耳朵”,使其具备“能听”的功能。

语音识别是一门涉及面很广的交叉学科,它与声学、语音学、语言学、信息理论、模式识别理论以及神经生物学等学科都有非常密切的关系。语音识别的目标是将人类的语音内容转换为相应的文字。

2、语音激活检测(voice active detection,VAD)

VAD也称为speech activity detection or speech detection, 是一项用于语音处理的技术,目的是检测语音信号是否存在。 VAD技术主要用于语音编码和语音识别。

通俗来讲,就是判断什么时候有语音什么时候没有语音(静音)。语音信号处理或是语音识别都是在VAD截取出来的有效语音片段上进行的。

3、语音唤醒(keyword spotting,简称 KWS ;或voice trigger,VT)

VT判断是唤醒(激活)词,那后续的语音就应该进行识别了;否则,不进行识别。语音唤醒的目的就是将设备从休眠状态激活至运行状态,所以唤醒词说出之后,能立刻被检测出来。

4、麦克风阵列(Microphone Array)

由一定数目的声学传感器(一般是麦克风)组成,用来对声场的空间特性进行采样并处理的系统。

能够解决的问题:噪声抑制、回声抑制、去混响、单或多声源定位、声源数目估计、源分离、鸡尾酒会效应。按麦克风个数分:单麦、双麦、多麦。

三、语音识别基本原理与识别流程

1、声波

声音实际上是一种波。常见的mp3等格式都是压缩格式,必须转成非压缩的纯波形文件来处理,比如Windows PCM文件,也就是俗称的wav文件。wav文件里存储的除了一个文件头以外,就是声音波形的一个个点了。下图是一个波形的示例。

声音信号采集和播放经常使用的三个参数为采样频率(SampleRate)、采样位数(SampleSize)、声道数(ChannelCount)。

采样的数据速率就是指每秒所有声道采样数据的总量,计算公式为:

采样频率 * 采样位数 * 声道数 = 采样数据速率

2、语音识别基本流程

语音识别原理的4个基本流程:“输入——编码——解码——输出”

3、语音识别系统结构

语音识别系统本质上是一种模式识别系统,主要包括信号处理和特征提取、声学模型(AM)、语言模型(LM)和解码搜索四部分。

声学前端预处理

是指在特征提取之前,先对原始语音进行处理,部分消除噪声和不同说话人带来的影响,使处理后的信号更能反映语音的本质特征。最常用的前端处理有端点检测和语音增强。端点检测是指在语音信号中将语音和非语音信号时段区分开来,准确地确定出语音信号的起始点。经过端点检测后,后续处理就可以只对语音信号进行,这对提高模型的精确度和识别正确率有重要作用。语音增强的主要任务就是消除环境噪声对语音的影响。目前通用的方法是采用维纳滤波,该方法在噪声较大的情况下效果好于其它滤波器。

a)信号处理和特征提取:

以音频信号为输入,通过消除噪声和信道失真对语音进行增强,将信号从时域转化到频域,并为后面的声学模型提取合适的有代表性的特征向量。

b)声学模型:

将声学和发音学的知识进行整合,以特征提取部分生成的特征为输入,并为可变长特征序列生成声学模型分数。对应于语音到音节概率分布的计算。

语音识别,可分为“传统”识别方式与“端到端”识别方式,其主要差异就体现在声学模型上。“传统”方式的声学模型一般采用隐马尔可夫模型(HMM),而“端到端”方式一般采用深度神经网络(DNN)。

c)语言模型:

语言模型估计通过训练语料学习词与词之间的相互关系,来估计假设词序列的可能性,又叫语言模型分数。如果了解领域或相关的先验知识,语言模型的分数通常可以估计的更准确。对应于音节到字概率分布的计算。

d)解码搜索:

综合声学模型分数与语言模型分数的结果,将总体输出分数最高的词序列当做识别结果。

4、语音识别系统构建过程

1)训练:训练通常是离线完成的,对预先收集好的海量语音、语言数据库进行信号处理和知识挖掘,获取语音识别系统所需要的“声学模型”和“语言模型”

2)识别:识别过程通常是在线完成的,对用户实时的语音进行自动识别,识别过程通常又可以分为“前端”和“后端”两大模块。

A.前端:前端模块主要的作用是进行端点检测(去除多余的静音和非说话声)、降噪、特征提取等;

B.后端:后端模块的作用是利用训练好的“声学模型”和“语言模型”对用户说话的特征向量进行统计模式识别(又称“解码”),得到其包含的文字信息,此外,后端模块还存在一个“自适应”的反馈模块,可以对用户的语音进行自学习,从而对“声学模型”和“语音模型”进行必要的“校正”,进一步提高识别的准确率。

四、搜狗录音助手—连接硬件的实时语音识别

1、音频编码和解码

音频编码的目标就是尽可能压缩原始采样数据,节省带宽,方便文件存储和网络传输。音频编码大致可以分为两类:无损编码和有损编码。

第一类是无损编码,比如FLAC是一种对原始 PCM 进行无损压缩的编码库。无损编码的特点是信息解码后不会有任何的丢失,解码后每一比特都和原始采样数据一致。无损编码最大的特点是大,占用空间或带宽很多。

实际中使用最多的都是有损编码,一般是使用离散余弦变换等数学方法将信号从时域转换到频域,将人耳不敏感的频域部分信息过滤掉,然后进行编码。有损音频编码常见的有:MP3、WMA、AAC、Speex、Opus等。有损编码也都有相应的解码器,解码器就是将压缩后的数据在一定程度上还原为 PCM 数据,解码得到的 PCM 数据与原始采样数据是有差异的,这也是称之为有损编码的原因。

2、录音笔实时录音转写

(1). 录音笔多麦克风阵列收音(C1 Max为例),存储2种格式的音频文件:opus格式(用于传输,压缩格式,便于传输)、wav格式(用于听感);

(2). opus格式的音频文件,通过BLE协议,传输到App端;

(3). APP端的解码库对传输的opus音频文件进行无损解码,生成标准的PCM流;

(4). 语音SDK(前端库)将多声道的PCM流进行合并,合成为一声道的PCM;(多声道的pcm流过搜狗语音的阵列生成两路pcm,一路用于听感、一路用于识别,然后输出mp3)

(5). 语音识别SDK和知音平台服务端建立gPRC连接,获取PCM流文件的文字识别结果;

(6). 语音识别SDK通过回调,返回给native识别结果,native进行展示。


注:参考文章

https://zh.wikipedia.org/wiki/语音识别

https://zhuanlan.zhihu.com/p/22512377

https://zhuanlan.zhihu.com/p/105454729

http://blog.itpub.net/29829936/viewspace-2652896/

0 人点赞