基于Matlab的语音信号特征提取系统的设计

2018-11-15 01:33董梅廖云霞刘海山吴鹏
电脑知识与技术 2018年20期
关键词:语音识别

董梅 廖云霞 刘海山 吴鹏

摘要:语音识别是处理语音信号的重要问题,当今社会,人工智能技术发展迅速,语音识别技术已经发展成为行业领域前列的先进技术。在以后的发展过程语音识别技术仍将发挥重大作用。语音信号是一种冗余度较高的非平稳随机信号,只有在短时间内才认为变化时缓慢的,在这个短的时间区间内语音信号特征保持稳定。因此,本课题将对语音信号特征利用LPC技术和MFCC原理进行提取,利用MATLAB GUI界面设计系统,使之能在行业领域发展,同时验证理论知识。

关键词:语音信号;语音识别;LPC算法;MFCC算法;MATLAB GUI

中图分类号:TP368.1 文献标识码:A 文章编号:1009-3044(2018)20-0271-04

Design of Speech Signal Feature Extraction System based on Speech Matlab

DONG Mei, LIAO Yun-xia, LIU Hai-shan, WU Peng

(College of Information Science and Technology, Gansu Agricultural University, Lanzhou 730070, China)

Abstract: speech recognition is an important problem in dealing with speech signal. Nowadays, artificial intelligence technology has developed rapidly, and speech recognition technology has developed into the advanced technology in the field of industry. Speech recognition technology will still play an important role in the future development process. Speech signal is a kind of non-stationary random signal with high redundancy. It is considered that the change is slow in a short period of time, and the feature of speech signal remains stable in this short time range. Therefore, this subject will use LPC technology and MFCC principle to extract the feature of speech signal, and use MATLAB GUI interface design system to make it in the industry. Development in the field , while validating the theoretical knowledge.

Key words: speech signal; speech recognition; LPC algorithm; MFCC algorithm; MATLAB GUI

1 引言

语言是人类信息交流的主要工具,在人类的生活中,语音信号无处不在语音信号特征的提取与保存对人类来说是一个巨大的进步。语音信号是一种冗余度较高的非平稳随机信号,只有在短时间内才认为变化时缓慢的,在这个短的时间区间内语音信号特征保持稳定。[1]正常情况下,我们人的耳朵可以接受道德音频频率范围最大不超过20KHZ,最低不低于60Hz,一般人正常范围在300Hz—4KHZ[2]。从本质上来说,语音是一种模拟信号,在分析和处理的过程中,我们常常需要把模拟信号转换为数字信号[3]。这样做的好处是因为数字语音信号的采集和处理方式比模拟信号更加灵活方便。语音信号的短时平稳性和间歇性等这些重要特性[4],为了更加直观科学的认识语音信号的波形和频谱,我们可以对语音信号的特征参数进行客观分析,同时可以观察频谱波形。如果我们需要较为精确的估计语音参数,我们应该充分利用线性预测编码技术(LPC)。在语音信号中,预测系数是非常重要的信息来源,基于人耳听觉模型的语音特征参数是倒谱,在语音系统和说话人识别系统中,基于听觉特性的美尔倒谱系数(MFCC)是重要参数之一[,现在被广泛采用][5]。

信息技术飞速发展,语音识别技术在各个领域渗透于人类社会生活中,而在未来的发展中,语音识别系统的作用将被更大化地发挥出来。在建立语音识别系统的过程中,语音信号特征提取将显得尤为重要[6]。本文主要介绍如何利用MATLAB GUI界面实现语音信号特征提取。

2 语音信号的典型特征和分析技术

语音信号处理的两种典型方式是波形显示和参数显示。波形显示可以直观的认识语音信号;而参数显示则可对语音信号进行深入分析以及匹配语音识别系统和说话人识别的特征。

2.1 LPC算法原理[7]

LPC是线性预测编码(linear predictive coding,LPC)的缩写,是常用的且很重要的一种编码方法。从原理上来看,通过分析话音波形来产生声道激励和转移函数的参数是LPC,实际上是把对声音波形的编码转化成了对这些参数的编码,从而使声音的数据量大大地减少。使用LPC分析在接收端得到的参数,将话音通过话音合成器重构。实际上,合成器是一个离散的时变线性滤波器,随着时间逐渐变化,代表着人的话音生成系统模型。时变线性滤波器不仅可以当作预测器使用,也可以当作合成器使用。但在分析话音波形时,我们主要还是将它当作预测器使用,而在合成话音的时候,我们就将它当作话音生成模型使用。模型的參数和激励条件可以随着话音波形的变化,周期性地适合新的需要。

2.2 MFCC算法原理[8]

MFCC(Mel倒谱系数)很形象地模拟了人的听觉特性,是一种符合人类听觉特性的语音特征参数。在对语音信号的预处理之后,我们将提取语音信号的特征参数,一般情况下,我们将语音信号的特征参数分为两类:第一类是时域特征参数,通常情况下,一帧语音信号中的各个时域采样将直接构成一个参数矢量,第二类是变化域特征参数 , 目前,最常用的特征参数是为频域。

3软件总体设计

MATLAB GUI [9]是一种图形用户界面,它是由各种图形对象(如图像窗口、图轴、菜单、按钮、文本框)等构建的,为人机交流信息提供工具和方法.它有两个方便操作的优点,不仅可以把已有的仿真程序潜入进去,而且可以以人机交互的动态方式把仿真后的图形化结果直观呈现,使用者只需要知道操作的步骤,不需要知道代码的具体内容,就可以非常方便的操作界面了。[10]在设计MATLAB GUI界面的时候,我们可以有两种方法:第一种是通过编写m文件,直接可以开发GUI;第二种是通过利用MATLAB 图形用户界面开发环境GUIDE 来形成相应m文件.在GUIDE界面中,分为菜单栏和工具栏、用户控件集、用户界面编辑窗口等3个部分,它向用户提供了一个高度有效的集成开发环境。

3.1 系统界面的规划

要使得该系统能实现对语音信号的波形和典型参数特征的实时显示,我们将以下面图3的原理框图为主,设计规划我们的GUI界面:

系统功能的主要模块主要有四部分:时域波形、频谱分析、倒谱分析、功率谱分析等四个模块。我们将分别以屏幕、文件以及提示等进行显示或保存系统理操作的结果,同时我们将提供统一的输入输出操作接口, 而不同算法计算的结果可在不同目录下进行保存.该系统的界面模块将以下图所示框图为主来设计,如图3:

3.2系统的界面设计

各界面的设计主要采用了静态文本框、列表框、可编辑文本框、触控钮、面板和坐标轴等控件来实现一些功能。各个控件的功能通过编写其相应的回调函数[11]来实现。

3.2.1系统的开始界面

开始界面是软件开始运行时的主要界面,也是进入语音信号特征提取系统[8]的各个子界面的接口,具有提示用户操作的作用,主要按钮是进入系统。如下图所示:

3.2.2 系统的子界面

在系统的子界面中,我们将对语音进行信号特征提取,在子界面下,有四个主要按钮(时域波形、频谱分析、倒谱分析、功率谱分析);以及四个属性菜单栏(打开、数据分析与处理、结果图像保存、帮助)。如下图所示:

3.2.3 语音信号特征提取的具体步骤及分析

1)MALTAB对语音信号的提取

当我们进入到系统界面的时候,我们首先要调取一段音频,所以,在调取音频之前,我们要将系统界面进行初始化,然后点击菜单栏下的调取音频按钮,调取一段文件大小小于8K的音频文件,调取的音频文件格式必须为*wav格式的[12]。我们可以利用wavread函数对语音信号进行采样,然后直接设置采样频率和采样点数。Matlab程序源代码如下所示:

[FileName,PathName]= uigetfile('*.wav'); %打开对话框

if ~isequal(FileName, 0) % open(file);

[y, fs]=audioread([PathName FileName]);%x是音频的数据向量,fs是采样频率(单位Hz),bits是每一个采样点的数据深度(即比特数)

end

handles.data=y; %x是向量含有的所有数字的个数,与数据的大小有关

handles.sample=fs; %采样的频率 一般为8k

t=length(handles.data)/fs; %采样的总时间

tt=0:t/length(handles.data):t; %中间计算出来的采样周期

handles.t=tt(1:length(tt)-1); %作为要显示图形的横坐标

guidata(hObject, handles); %保存更新

axes(handles.axes1); %打开的文件显示在第二个里

plot(handles.t,y);

ylabel('signal Magnitude ');

xlabel('time(s)');

title('时域波形');

2)语音信号特征波形分析与结果显示

语音信号特征提取系统在各个子模块间的内容和分析过程有不同,但其主要的设计思想理念是一样的。下面将对语音的信号特征逐一展开论述:

(1)频谱分析

将时域信号变换至频域加以分析的方法称为频谱分析[13]。频谱分析的目的是把复杂的时间历程波形,通过傅里叶变换,将其分解为若干单一的谐波分量来进行研究,从而获得信号的频率结构以及各谐波和相位信息。

对于模拟信号来说,进行频谱分析时,首先,我们要对其进行抽样,使其离散化,然后我们可以利用离散傅里叶变换(DFT)或者快速傅里叶变换(FFT),分析其幅度(ABS)和相位(ANGLE)的图像,而对于数字信号来说,我们则可直接利用离散傅里叶变换或快速傅里叶变换进行分析。其matlab源程序代码如下:

Fs=handles.sample;

Fs=100;N=256; %采样频率和数据点数

n=0:N-1;t=n/Fs; %时间序列

x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信號

y=fft(x,N); %对信号进行快速Fourier变换

mag=abs(y); %求得Fourier变换后的振幅

f=n*Fs/N; %频率序列

plot(f,mag); %绘出随频率变化的振幅

xlabel('频率/Hz');

ylabel('振幅');

title('N=128');

grid on;

显示结果如下:

(2) 倒谱分析

倒谱参数是重要的语音特征参数,它是对语音进行同态处理的产物,同态处理也称为同态滤波,实现将卷积关系变换为求和关系的分离处理,即解卷。对于语音信号进行解卷,可将语音信号的声门激励信息及声道响应信息分离开来,从而求得声道共振特性和基音周期,用于语音编码、合成和识别。其matlab源程序代码如下:

c=fft(log(abs(handles.data)+eps)); % ×

ms1=handles.sample/1000;

ms20=handles.sample/50;

q=(ms1:ms20)/handles.sample;

axes(handles.axes1);

plot(q,abs(c(ms1:ms20)));

xlabel('倒角');

ylabel('倒谱幅度');

title('倒谱图');

其结果显示如下:

(3)功率谱分析

功率谱是数字信号处理的主要内容之一,主要研究在频域中,信号的各种特征,这样做的目的是使被淹没在噪声中的有用信号根据有限数据在频域内将其进行提取[14]。离散的非周期序列Xn可以用周期性连续信号x(t)的频谱表示,它的幅度频谱的平方│Xn│2所排成的序列,所以被称之为该周期信号的“功率谱”。其matlab源程序代码如下:

fs=handles.sample; %ù

N=1024;

fs=randn(1,N);

Pxx=10*log10(abs(fft(fs).^2)/N);

f=(0:length(Pxx)-1)/length(Pxx);

axes(handles.axes1);

plot(f,Pxx);

xlabel('频率');

ylabel('功率(dB)');

title('周期图法N=256')

grid on;

结果显示如下:

4 结语

本文较为简单的阐述了语音信号特征提取的过程以及系统设计的原理。基于MATLAB GUI技术,较为直观地完成了语音信号特征提取系统的界面设计和算法设计,通过系统界面,用户可以直接上传和试听在语音库中的音频,然后通过调取,提取参数,显示其音频的波形。MATLAB GUI界面简单直观,良好的人机交互功能使操作方便可行。通过该界面可以非常方便地分析语音信号的典型特征,提取语音信号的相关参数和信号特征,验证理论知识。

参考文献:

[1] 孙尚宏,白珍.MATLAB的语音信号频谱分析[J].河套学院学报,2016,13(01):72-75.

[2]王光艳,赵晓群,王霞.基于MATLAB GUI的语音信号特征提取系统设计[J].河北工业大学学报,2010,39(04):14-18.

[3] 李静.基于MATLAB的语音信号采集和处理系统的设计[J].山西大同大学学报(自然科学版),2016,32(02):30-33.

[4]李静.基于MATLAB的语音信号采集和处理系统的设计[J].山西大同大学学报(自然科学版),2016,32(02):30-33.

[5] 刘卫东,孟晓静,王艳芬.语音信号处理实验教学研究探索[J].实验室研究与探索,2008(04):72-74.

[6]李向吉,刘承玺,王秉均.语音识别中的语音信号特征提取及分析[J].天津通信技术,1996(02):2-7.

[7] 高惠琴,吴阿华.LPC技术的原理及其在语音信号处理中的应用[J].电声技术,1985(06):1-6.

[8] 熊伟,罗云贵.语音识别的MFCC算法研究[J].现代商贸工业,2010,22(03):291-292.

[9]方倪,李丹凤,胡安正.基于MATLAB的音频信号处理[J].物理通报,2017(10):94-95.

[10]陈璇,李启海,朱万彬,张继勇,鲁秀娥.基于声卡和MATLAB的音频信号的采集和处理[J].长春理工大学学报(自然科学版),2010,33(03):71-74.

[11] 王玉林,葛蕾,李艳斌.新型界面开发工具:MATLAB/GUI[J].无线电通信技术,2008,34(06):50-52.

[12]张节.语音信号的预处理和特征提取技术[J].电脑知识与技术,2009,5(22):6280-6282.

[13] 张节.语音信号的预处理和特征提取技术[J].电脑知识与技术,2009,5(22):6280-6282.

[14]潘涛.基于Matlab实现情绪语音功率谱估计的几种方法运用[J].自動化与仪器仪表,2015(04):184-185+188.

猜你喜欢
语音识别
通话中的语音识别技术
基于LD3320的非特定人识别声控灯系统设计