APP下载

基于声音无线控制小车的研究

2018-09-25宫晓梅

赢未来 2018年8期
关键词:声卡录音指令

宫晓梅

摘要本文主要研究由人声无线控制小车的动作与状态,当收到预置指令后,自行分辨声音并自动执行相应预设定动作,来实现人声控制小车的目的。

关键词声音控制语音识别 DTW方法

本文所研究的声音控制自动化小车的具体内容是:采用无线麦克,应用无线信号处理技术,基于嵌入式芯片,制作可辨别人声,并执行相应指令的车子,实现人声控制车子前、后、左、右、启动、停止、加速等等指令。具体功能实现如下。

1声音的采集

将声音信号送入计算机,本文利用了声卡录音的低层操作技术,即对winmm.lib进行API调用。具体编程时这一部分被写在一个类中(Soundin类)。

在构造函数中设定包括最大采样率(11025),数据缓存(作为程序一次性读入的数据,2048),声卡本身所带的一些影响采样数据等的各种参数;

调用API函数waveInGetNumDevs(返回UNIT,参数为空)检察并打开声音输入设备,即声卡;并进而使用waveInGetDevCaps得到声卡的容量(在waveInCaps中存有该数据,对其进行地址引用,从DWORD dwFormats得到最大采样率、声道数和采样位);

创建一个叫WaveInThreadEvent的事件对象,并赋予一个Handle,叫m_WaveInEvent,开始利用线程指针m_WaveInThread调用自定义的线程WaveInThreadProc;

对结构WAVEFORMATEX中WaveInOpen开始提供录音设备。注意设备句柄的得到是通过对HWAVEIN 型数据m_WaveIn的引用。

由于通过这种方式进行录音的文件格式是.wav,所以要先设置录音长度,以及对头文件进行一些设置:包括buffer的地址为InputBuffer的初始地址,大小为录音长度的两倍,类型。使用waveInPrepareHeader为录音设备准备buffer。然后使用waveInAddBuffer函数为录音设备送出一个输入buffer。最后使用waveInStart(m_WaveIn)打开设备。

2声音的预处理:

声音信息的预处理主要包括音头和音尾的判断,声音的预加重,分帧处理和窗化处理。

1)音头音尾的判断与提取:

对声音信号的提取,主就是确定音头、音尾的位置。常用的方法有过零率和短时距能量等几种。本文就采用了过零率这个方法。首先对噪声取样,从这些噪声样本中得到噪声的上下限,將实时信号与这个门限进行比较,得到过零率。

利用过零率的大小来判断是否有声音信号进入,若

( 为预设的过零率值),则表示有声音信号进入,就找到了音头。在找到音头的情况下,若 ,则表示声音结束,也就找到了音尾。音头和音尾之间的部分就是本文用以作为识别用的声音指令信号了。由于一般情况下人们所发出的单音都有一定的时间长度,故尔再对所得到的声音指令信号做一次筛选,若得到的声音信号的长度小于预设值,就认为不是本文所要的声音信号,舍弃之。实验表明,利用过零率和预设长度相结合起来提取声音指令信号的方法很有效的。

2)语音信号的预加重:

本文所采用的预加重的方法是较为常用的网络:

传递函数为 ;得到的信号为:

预加重的目的是为了补偿语音谱的固有衰落,消除唇辐射的影响。

经过实验发现,预加重对以后数据的处理有很大的影响。

3)分帧处理

在计算各个系数之前要先将语音信号作分帧处理。语音信号是瞬时变化的,但在10~20ms内是相对稳定的,而本文设定的采样频率为11025所以本文对预处理后的语音信号S1(n)以300点为一帧进行处理,帧移为100个采样点。

4)窗化处理

为了避免矩形窗化时对LPC系数在端点的误差,本文采用了汉明窗函数来进行窗化。即:

其中:

3语音数据的特征提取

语音信号的特征有多种度量标准,基于比赛的各种要求选用比较有效的倒谱特征。

倒谱特征的实质就是将信号作适当的同态滤波,将信号中的卷积关系变为乘积关系,随之作对数处理使之化为可分离的相加成分。

本文所选取的计算倒谱的方法是利用信号的LPC系数来计算其倒谱系数。

语音信号经过预处理,它的每个样值均可由过去若干个样值的线性组合来逼近,同时可以采用使实际语音抽样与线性预测抽样之间的均方差最小的方式,来解出一组预测的系数。这就是LPC所提取出来的信号的初始特征。综合考虑识别误差和识别速度的影响,本文在计算LPC 时,Q值取为8,而在计算倒谱时P值取为12。

4动态时间归整DTW 方法的实现与改进

DTW主要是应用在孤立词识别的算法,用来识别一些特定的指令比较好用,这个算法是基于DP(动态规划)的算法基础上发展而来的。由于本文预先设定是进行孤立字控制,所以本文选取了简单易行的动态时间归整DTW方法。

同一个人在发同一个音的总体和瞬时速度都常会在一定的范围内所变动,所以本文希望建立待识别样和各模板时间轴的一种变换关系,应用于识别系统中来消除它们作匹配时由于相应时间上的差异所造成的同类音距离偏大的现象。

由于声控过程中对语音识别速度的要求是很高的,而DTW是识别过程中时间消耗的主要部分,本文的创新之处在于声音控制部分,拥有低延迟,多人语音兼容,能够实现95%以上的声音指令,可扩展性非常广。

参考文献

[1]张晓林,崔迎炜.嵌入式系统设计与实践[M].北京:北京航空航天大学出版社,2006

[2]王炳锡,屈丹.实用语音识别基础北京国防工业出版社出版,2005

猜你喜欢

声卡录音指令
听我指令:大催眠术
Funny Phonics
funny phonics
ARINC661显控指令快速验证方法
LED照明产品欧盟ErP指令要求解读
Colorful Seasons多彩四季
A New Term
ALSA声卡驱动程序设计
声卡数据采集系统设计方式分析
坐标系旋转指令数控编程应用