关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 语音签到系统中的信号处理技术

语音签到系统中的信号处理技术

作者:李金龙[1],原立格[1](郑州工商学院信息工程学院,郑州 451450)时间:2023-08-07来源:电子产品世界收藏
编者按:研究了快速准确签到的语音签到系统,该系统利用MATLAB仿真对语音信号进行处理并提取特征量进行分类,使其满足语音签到的目的,主要从信号滤波、信号检测、信号处理、分类学习等方面体现信号处理的整体过程。用MATLAB中的分类学习器模块对特征变量通过不同的模型,并对比不同模型来找到最适合语音信号的分类模型,以达到识别语音签到者的目的。

基金项目:2022年河南省大学生创新创业训练计划项目,项目编号s202213507009

本文引用地址:http://www.eepw.com.cn/article/202308/449347.htm

在信息技术高速发展的今天,技术正迎着发展的浪潮逐步优化,数字(Digital Signal Processing),是以数字运算方法实现信号变换、滤波、检测、估值、调制解调以及快速算法的处理方式,将数字的研究应用到“语音签到”系统,来对签到者的语音信号进行滤波、检测、处理以提取特征值,并建立数据集进行机器学习,通过MATLAB 软件的模块利用不同的模型进行分类,从而达到分辨不同签到者的目的,在建立系统的过程中将展示信号的滤波、检测、处理、分类的过程,本文通过利用MATLAB仿真对信号处理的各个方面进行研究,利用MATLAB仿真的优势来阐述信号处理的整体过程,通过对语音信号特征的提取来体现数字信号处理的各个方面。

本文主要通过研究信号处理的4 个阶段,通过建立“语音签到”系统来展示信号处理的过程,针对签到问题,通过声音采集,滤波处理,特征提取,研究等信息处理,利用MATLAB 软件、Python 软件编程处理使得整个代码准确、简洁,并达到良好的“语音签到”效果。

1

1.1 降噪总体流程规划

噪声在声音的传输过程中是客观存在的,噪声的存在既降低了语音传播信息的准确性,又增加了语音系统不能正常工作运转的风险,为了降低噪音干扰,过程运用数字信号处理的理论知识与MATLAB仿真软件相结合,通过设计低通滤波器的方式对加入高斯白噪声(模拟生活中混入的噪声信号)后的带噪语音信号,先运用IIR(无限单位冲激响应)数字滤波器进行降噪处理,后通过小波阈值降噪进行二次降噪处理,最终调用MATLAB中的绘图命令,展示出其在时域、频域的对比图,并通过audiowrite()函数把降噪后的音频保存进文件夹中,方便后续实验的进行。具体操作流程如图1 所示。

image.png

图1 降噪操作总体流程图

1.2 音频信号的采集、加噪及分析

采集声音签到信号,调用MATLAB 中的audioread函数对准备好的音频信号进行采样并绘制出其时域波形,调用FFT 傅里叶函数对音频信号处理并进行归一化处理最后绘制得出其频谱图。调用MATLAB 仿真中的audioread() 函数对音频信号进行处理并绘制出其时域波形,并调用傅里叶函数处理音频信号并进行归一化处理,通过randn() 函数加入高斯白噪声,进一步绘制出加噪后的语音信号频谱图。通过调用MATLAB 仿真中的sound() 函数可以实现对音频的播放,从而对sound.wav文件进行判别加入噪声前后的差异。

1.3 对加噪语音进行降噪处理

本文是基于数字信号的处理,通过巴特沃斯低通滤波器对音频信号进行降噪处理,并输出其原始信号、加噪信号、降噪后信号的时域波形和频谱图如图 2 所示。

1691378287846702.png

image.png

image.png

image.png

image.png

image.png

image.png

图2 原始、加噪、降噪后信号的时域波形和频谱图

分析仿真结果,对比降噪前后音频信号的时域波形和频谱,可以看出音频信号的大部分高频部分被滤除,此时调用sound 函数进行试听,发现滤波前的“滋啦”声已经基本消失,说明滤波处理的效果不错,在其频域上降噪后高频部分已经消失,但不可否认的是,由于高斯白噪声的宽带特性,致使其在各个频率都有分布,所以传统滤波器无法完全抹除噪声的干扰,降噪后的音频信号与原信号相比依然存在一些噪声未能有效去除,这是由于传统滤波器对于短时瞬态信号、非平稳信号、含有宽带噪声的信号时会有明显的局限性。

为防止上述噪声会对后续的研究造成不利影响,可以利用audiowrite() 函数让其先保存到相应文件夹中,再次进行另外一种滤波操作(小波阈值降噪)来进行二次滤波处理,进一步加深滤波效果,确保信号的准确性。

1.4 小波阈值降噪处理

小波降噪总体流程如图3所示。

1691378548704853.png

图3 小波阈值降噪流程图

MATLAB仿真中提供来各种小波基,针对不同的信号有着不同的效果和优势,本文主要处理对象是人声音频,故选择对于人声效果更好的db4-db10,sym5-sym7小波基。根据小波阈值降噪的基本原理,当分解层数越大时,噪声和原始信号的表现差别越大,更有利于语音和噪声的分离,但不可避免的是,分解层数越多意味着重构层数越多,经重构得到的音频信号与原始信号差距较大,所以通过多次实验选取效果理想的分解层数,能够在实现良好的降噪效果的基础上最大限度的保留原始音频的特征,经过多次测试确定最终确定的分解层数为5。阈值函数的设计通常是使用小波阈值降噪方法的核心关键所在,在小波域中原始信号对应的小波系数很大,噪声对应的小波系数很小。本文中选择适用范围较为广泛的通用阈值(VisuShrink)作为实验阈值,确定合适的阈值函数后对小波系数进行处理,通过选取硬阈值法将小波系数绝对值小于阈值的值都置0,绝对值大于阈值的值予以保留,将处理后获得的小波系数利用逆小波变换法对信号进行重构,从而恢复出原始信号。

1.5 滤波结果及总结

通过调用MATLAB 仿真的绘图指令,将原始信号、加入高斯白噪声的音频信号、通过巴特沃斯低通滤波器后的音频信号以及再次通过小波阈值降噪后信号的时域波形图和频谱图运行出来,如图4、图5 所示。

1691378670916004.png

图4 原始、加噪、初步降噪和小波降噪后信号的时域波形图

1691378713135213.png

图5 原始、加噪、初步降噪和小波降噪后信号的频谱图

通过利用MATLAB 仿真对音频信号进行加噪处理,模拟现实生活中签到时不可避免的噪声加入,再对音频信号进行降噪处理,先经过传统的巴特沃斯低通滤波器去除部分噪声,后经过小波阈值的降噪处理去除低通滤波器无法去除的噪音信号,得到声音签到的音频已经相对清晰且满足后续阶段的需求。

2 信号检测

2.1 的方法与原理

在对信号进行处理前,需对原始信号进行预处理以满足信号处理的需求,预处理过程包括和信号检测,滤波的目的在于去除噪音的干扰,检测到语音信号中的静音片段并去除,避免由于空白信息带来的资源浪费。

image.png

图6 流程图

2.2 端点检测

端点是静音和有效语音信号的变化临界点,确定端点位置是确保信号检测精准度的关键,对语音信号进行有效的预加重和选择窗函数处理就可以进行端点检测,通过采用的双门限比较法利用分步判决的思想来进行端点检测。将由滤波处理后的信号(采集的音频)进行端点检测,为了可以重复使用该模块,首先要设置1 个循环结构,以便循环读取语音和存储语音信号。将端点检测各部分处理分别模块化(便于对各个阶段进行优化)并加入循环结构内,其中包括预加重、分帧加窗、计算过零率、计算短时能量、设置并调整门限阈值、初始化各参量、端点检测算法、获取起止点位置并截取出语音片段(去除静音片段)从而达到去除语音信号首尾静音片段的目的。利用MATLAB 仿真进行运行结果如图7所示。

通过观察图7 可以发现检测的起始点选择在了语音信号的首尾处,从而实现去除语音信号首尾大面积静音片段的目的。但由于此次端点检测所设置的阈值比较低,就使得系统对静音片段的判断标准比较宽松,因而在检测静音片段时只检测到了音频首尾处的较直白的静音片段。

1691378884403922.png

图7 简单去除静音片段

注:左侧竖直实线表示语音起点,左侧竖直虚线表示语音结束点,横坐标表示帧数。

3 信号处理

3.1 信号处理的总体流程

对于语音签到系统来说,如何确认语音信号特征的不同以达到识别不同签到者的目的是整个信号处理过程的关键,对已经进行信号滤波和检测的语音信号进行特征提取便是实现签到目的的必要条件,合理有效的特征提取方式可以提高识别的准确性和真实性。

通过信号滤波和检测的信号已经基本满足信号处理的要求,但依然需要进行数据预处理,确认特征提取的顺利进行,利用语音信号时频域的特征以及梅尔特征对信号进行特征提取,进一步进行归一化处理满足MATLAB仿真矩阵的基本要求,通过PCA 降维对复杂的特征量进行简化获得数据集,并对数据集进行重新构建和划分,满足分类识别的要求,以达到识别签到者的目的,具体操作流程如图8所示。

1691379043683023.png

图8 信号处理流程图

3.2 数据预处理

3.2.1 加窗分帧

对语音信号进行分帧处理,在同一帧中语音信号的特征是稳定的,但由于分帧后每一帧的开始和结束都会出现间断,因此分割的帧越多,与原始信号的误差就越大,使用加窗分帧的方法使成帧后的信号变得连续,并且每一帧都会表现出周期函数的特性。语音信号的表征参数都是短时平稳的,一般为10~30 ms 因而可以视为一个准稳态过程。由于语音信号具有短时平稳性,对语音信号进行分帧加窗处理,截断短时音频片段,通常帧移大小为10~15 ms,要求保证窗长大小为帧移的2~3 倍。加窗分帧的目的是为了使语音信号更连续,避免出现吉布斯效应(又叫吉布斯效应将具有不连续点的周期函数进行傅立叶级数展开后,选取有限项进行合成,当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点)。

3.2.2 数据清洗

为了保证提取到的所有帧都是有效的语音片段,在之前降噪、端点检测的基础上,对数据进行清洗,检查所有帧是否具有有效数据,对每帧的矩阵进行识别,若出现数值全为0 的帧则将其剔除。剔除无效帧,不仅可以提高模型的运行效率,还可以提高后期提取出的特征值的有效性。

3.2.3 有效帧的抽取与保留

由于对信号进行端点检测去除静音片段后音频的时长并不统一,进行分帧时,会导致不同音频分得的帧数并不相同。因此,首先对所有音频进行加窗分帧处理,并且记录从各个音频所得到的帧数,计算出所有音频中最少的帧数,并以最少帧数为标准,对于所有大于该帧数的音频,进行部分帧抽取。抽取的准则是根据各帧音频的能量大小,将所有帧按照低能量、中能量、高能量三个层次进行划分,并且分别对低能量、中能量以及高能量区域中的帧进行等帧数的随机抽取,最后再以原音频各帧位置为基准,对抽取到的帧进行排序。

3.3 特征提取

完成预处理过程后,对信号进行特征提取,利用时域中的短时过零率、短时能量以及频域中频谱质心、频域能量作为特征提取的依据进行特征提取,共提取特征数为4 个,时域特征提取如表1。

表1 时频域提取特征

1691379210816430.png

注:y(n)为音频信号一帧的幅值,p为帧长。Y(n)为一帧内音频信号的离散傅里叶变换。

对音频信号进行预加重处理主要作用是为了平衡频谱、避免在傅里叶变换操作过程中出现数值问题、改善信噪比、补偿语音信号受到发生系统所抑制的高频部分,突出高频共振峰。预加重处理实际意义是让音频信号通过一个高通滤滤波器。通过MATLAB 仿真调取音频信号预加重前后时频域频谱图并观察,与原始音频对比发现经过预加重的信号频谱更加平衡,高频部分更加突出,频谱图如图9 所示。

image.png

图9 预加重前后时频域频谱图

3.4 数据集的构建和划分

为了更好的利用提取到的特征值,需要对特征值的数据集进行构建。本文共采集了30 个人员的样本,每个人进行了10 次重复的语音签到音频录制,共有300个待处理音频。依次对300 个音频按照信号处理流程进行处理,最后将单个音频所计算出来的特征值按行向量保存,最终构建了一个300 行、561 列的特征值矩阵。为了消除各特征量之间的量纲影响、提高后期梯度下降法求解最优解的速度,对特征值矩阵中的数据进行归一化处理。由于在信号分类中会运用到机器学习算法,通过模型进行分类,数据维度过高往往会降低模型的性能和效率,高维数据不仅使模型更复杂,还容易引起维数灾难。为了避免上述问题并提高后期模型的训练速度,使用Visual Studio Code 软件,在Anaconda环境下调用sklearn库对数据集进行PCA 降维。最后在保留95%特征信息量的前提下,将特征值矩阵降维至139 列。首先依照不同的样本音频,对特征值矩阵进行标注,将从第一个样本音频求得的特征值(即特征值矩阵的第1 至10 行)标注为1,从第二个样本音频求得的特征值(即特征值矩阵的第11~20 行)标注为2,以此类推。为了避免出现过拟合的现象,将数据重新打乱并重新分割数据。对数据洗牌过后的数据,使用留出法依照7:3 的比例对数据集进行划分,即最终得到210 行、140 列的训练集,90 行、140 列的测试集。

4 信号分类

对信号处理得到的数据集利用MATLAB 仿真自带的模块进行信号分类处理,是通过训练模型结构,用于以对数据进行分类,是机器学习比较常见的应用,通常包括五个部分,分别是数据导入、数据的探索和特征选择、训练模型、比较模型和输出模型。分类算法使用户可以将一个分类应变量建模为一个或多个预测的函数,其中的模型主要包括有:决策树、逻辑回归(Logic)、神经网络和支持向量机(SVM)、最近邻分类(KNN)、集成分类器等分类模型。将模型训练完毕后,通过观察训练数据的散点图、混淆矩阵、ROC曲线等图像进行数据分析,对测试数据进行预测和实际操作。除此之外,训练好的模型也可以直接导入Matlab的工作空间,便于对新数据进行预测,同时能够直接生成代码方便集成使用。

5 结束语

本文通过对MATLAB 仿真在信号处理多个方面的研究实现了语音签到系统,重点研究了信号滤波、信号检测、信号处理、信号分类四部分。首先收集声音样本信息,使用低通滤波器进行信号滤波,之后利用端点检测去除静音片段,对处理后的音频信号利用时频域和梅尔倒谱系数提取特征值并进行分类以达到语音签到的目的。为了降低噪音干扰,信号滤波过程运用数字信号处理的理论知识与MATLAB 仿真软件相结合通过设计低通滤波器的方式对加入高斯白噪声后的带噪语音信号,先运用IIR(无限单位冲激响应)数字滤波器进行降噪处理,后通过小波阈值降噪进行二次降噪处理。对去噪音频信号利用短时分析法依据短时能量、短时平均幅值、短时过零率等特征对有语音和无语音语段进行判别分析,设置合理的阈值进行区分,并利用端点检测准确的定位出语音的开始点和结束点,去掉静音的部分,从而获得真正有实际意义的语音信号,保证了签到的快速、准确。

参考文献:

[1] 陈建勇,王道阔,邓文锋,等.重构小波阈值函数在信号去噪中的应用与研究[J].CT理论与应用研究,2017,26(1):63-68.

[2] 裴萍.阈值函数的改进在信号去噪中的应用[J].科技视界,2012(28):164-165.

[3] 阿布力米提·肉孜,吐尔洪江·阿布都克力木.改进小波阈值函数信号去噪研究[J].计算机与现代化,2012(3):11-14.

[4] 王玲玲,黄垂桂,赵建杨.基于MATLAB的音频降噪滤波器设计[J].中国新技术新产品,2022(16):15-17.

[5] 朱俊敏,张潇,王旌阳,等.小波域音频信号降噪研究[J].计算机工程与应用,2009,45(6):149-154.

[6] 杨天晴,杨静宗,付蕊,等.基于MATLAB的小波阈值法在信号降噪中的应用研究[J].保山学院学报,2021,40(2):93-101.

[7] 彭仕玉,李宏民,张国云.DFT频谱分析中时域加窗的研究[J].湖南理工学院学报(自然科学版),2010,23(2):26-29.

[8] 吕卫强,黄荔.基于短时能量加过零率的实时语音端点检测方法[J].兵工自动化,2009,28(9):69-70+73.

[9] 孙慧芳,龙华,邵玉斌,等.基于过零率及频谱的语音音乐分类算法[J].云南大学学报(自然科学版),2019,41(5):925-931.

[10] 胡耀文.音频信号特征提取及其分类研究[D].昆明:昆明理工大学,2018.

[11] 宋知用.MATLAB语音信号分析与合成(第2版)[M].北京:北京航空航天大学出版社,2017.

[12] 刘婷,柳钰,薛小庆.MATLAB在语音信号处理中的应用[J].电子测试,2018(23):74-75.

[13] 武同宝,赵旭彤.基于MATLAB的语音信号识别及矢量模式匹配[J].工业控制计算机,2012,25(9):90-92.

(本文来源于《电子产品世界》杂志2023年7月期)



评论


相关推荐

技术专区

关闭