语音信号处理技术.docx

上传人:b****7 文档编号:9942709 上传时间:2023-02-07 格式:DOCX 页数:37 大小:97.25KB
下载 相关 举报
语音信号处理技术.docx_第1页
第1页 / 共37页
语音信号处理技术.docx_第2页
第2页 / 共37页
语音信号处理技术.docx_第3页
第3页 / 共37页
语音信号处理技术.docx_第4页
第4页 / 共37页
语音信号处理技术.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

语音信号处理技术.docx

《语音信号处理技术.docx》由会员分享,可在线阅读,更多相关《语音信号处理技术.docx(37页珍藏版)》请在冰豆网上搜索。

语音信号处理技术.docx

语音信号处理技术

语音信号处理技术

五设计实现

摘要

语音信号处理技术是语音处理领域中新近发展起来的一个学科分支。

Matlab是一个数据分析和处理功能十分强大的工程实用软件,运用它来进行语音信号的采集、分析和处理相当便捷。

本文对话音变换的多种方法和多种音频特效的实现方法进行了讨论,并给出了Matlab语言的描述。

综合话音变换和一部分音频特效技术,设计了一种广泛适合于电影配音、话音安全以及娱乐等多领域的实时变声器,并在短时傅里叶基础上分析了语音信号的频谱。

 

关键词:

话音变换,音频特效,Matlab,短时傅里叶变换

 

Abstract

Thespeechsignalprocessingtechnologyisinthefieldofspeechprocessingnewlydevelopedasubjectbranch.Matlabisadataanalysisandprocessingfunctionsverystrongengineeringpracticalsoftware,theuseofittocarryonthespeechsignalcollection,analysisandprocessingisquiteconvenient.Inthispaper,thevoiceofavarietyofmethodsandavarietyoftransformaudioeffectsmethodofrealizationofthediscussions,andgivestheMatlablanguagedescription.Comprehensivevoicetransformandsomeoftheaudiospecialeffectstechnology,designawidelysuitableforsoundtrack,voicesecurityandentertainmentthefieldsofreal-timevoicechanger,andintheshort-timeFourieranalysisbasedonthespeechsignalspectrum.

 

Keywords:

VoicetransformationSpecialsoundefficiencyMatlabSTFT

前言

(一)课题介绍

随着数字化时代的来临,科学技术的进步而生产发展需求的与日俱增,促进了数字信号处理学科的发展,产生了各种巧妙的信号处理算法;特别是计算机技术的飞速发展,为数字信号处理增添了巨大的生命力。

而语音信号是最常见、应用最广泛的信号之一,研究数字技术在语音信号上的应用具有十分重要的意义。

本文所设计的语音信号短时傅里叶分析和特效处理系统,可以实时录放音,并对声音信号进行延时、频谱搬移。

语音信号的短时傅里叶变换解决了FFT在非平稳随机过程中的应用局限。

在此基础上,对语音信号进行了各种场景的模拟,此技术广泛应用于电影配音、话音安全以及娱乐等多领域。

(二)文献综述//前景与改进。

随着计算机技术和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的前提和基础。

Matlab是美国MathWorks公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算

为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。

同时由于Matlab是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这

些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。

Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种分析图的呈现等。

《数字信号处理》一书中,阐述了离散信号的Z变换,离散傅里叶变换,信号的窗函数处理方法等,这些都是语音信号处理的基础知识。

书中详细介绍了窗函数的工作原理及设计方法,同时给出了多种离散数字信号的傅里叶变换算法。

《数字信号处理实践教程》一书提供了不同层次、不同类型的DSP处理实例,为本设计提供了参考。

《MATLAB基础与应用》介绍了MATLAB的使用方法,操作过程,语言描述,信号处理工具箱的应用方法等。

《通信原理》一书介绍了信号的各种表现形式,不同信号所对应的调制与解调办法,为语音信号的频谱搬移提供了参考。

本设计还参考了《Matlab在数字语音分析中的应用》、《基于Matlab实现对语音信号的频谱分析》、《基于帧的实时话音变换技术与DSP实现》等方面的学术论文,当中讲述了语音信号的特征,如何有效处理语音信号及相关算法等。

一绪论

(一)语音信号处理的研究意义

当今,数字信号处理(DSP:

DigtalSignalProcessing)技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科,它与国民经济息息相关,与国防建设紧密相连,它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注。

数字信号处理主要是研究用数字或符号序列表示和处理信号。

处理的目的可以是削弱信号中的多余内容,滤除混杂的噪声和干扰,或者是将信号变换为容易分析和识别的形式,便于估计和选择它的特征参数。

声音信号是一维连续信号,而计算机只能处理离散信号。

为了从离散信号还原连续信号,根据采样定理,可以确定采样频率的最小值。

wav文件是一种数字声音文件格式,本课程设计基于Matlab分析了wav声音文件频谱与声音的关系。

通过采集个人的一段声音进行频谱分析等处理,然后进行频谱分析和各种声音特效处理。

//

(二)国内外数字滤波器的研究背景和现状

(三)本设计的主要研究内容

本论文主要讨论了语音信号的分析及处理问题,分为七章:

第一章为绪论,主要介绍了课题设计的背景、目的和意义。

第二章介绍了语音信号的特点、分析的基本原理及相关Matlab的基础知识。

第三章介绍了基于MATLAB的语音信号短时傅里叶变换的原理及理论基础。

第四章介绍了常见的语音特效及其处理办法。

第五章介绍了整个系统的设计流程、系统设计框图。

详细介绍了各部分模块电路的设计,并对最终效果进行调试。

第六章总结了本次语音信号处理的设计工作。

第七章致谢词,感谢论文期间给与我帮助的老师同学。

 

二语音信号概述

语音信号处理技术是语音处理领域中新近发展起来的一个学科分支,MATLAB是一个数据分析和处理功能十分强大的工程实用软件,运用它来进行语音信号的采集、分析和处理相当便捷。

文章介绍了在Matlab环境中如何采集语音信号和语音信号采集后的频谱分析处理,并通过实例分析了语音信号处理的Matlab。

随着计算机技术和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的前提和基础。

(一)语音信号的特点

语音转换(VC,voiceconversion或VT,voicetransformation)是指改变一个说话人(源说话人,sourcespeaker)的语音个性特征,使之具有另外一个说话人(目标说话人,targetspeaker)的语音个性特征。

语音转换拥有很广泛的应用空间,例如:

(1)在文语转换(TTS,text-to-speech)系统中应用。

(2)可以在电影配音中应用。

(3)语音转换的思想可以用于恢复受损语音,帮助声道受损的说话人的语音提高可懂度。

(4)可用于在保密通信中进行语音个性化的伪装。

(5)作为语音识别的前端预处理,减少说话人差异的影响。

语音的个性化特征可以分为以下三类:

●音段特征:

描述的是语音的音色特征。

特征参数主要包括基音频率、共振峰位置、共振峰带宽、基音频率、能量等。

●超音段特征:

描述的是语音的韵律特征。

特征参数主要包括因素的时长、基音频率的变化(音调)、能量等。

●语言特征:

包括习惯用语、方言、口音等。

(二)语音信号处理的理论基础

进行频谱分析时,在时域数据进行短时FFT处理之前都要进行加窗处理。

在FFT处理之后,普通频谱分析可以进行频域上的滤波处理,从而使频谱更加平滑。

为了得到各种音频信号的特技效果,也需要对各种变声算法进行研究。

1.窗的选择

一般来讲,一个好的窗函数的标准是:

在时域因为是语音波形乘以窗函数,所以要减小时间窗两端的坡度,使窗口边缘两端不引起急剧变化而平滑过渡到零,这样可以使截出的语音波形缓慢降为零,减小语音帧的阶段效应;在频域要有较宽的3dB带宽以及较小的边带最大值。

另外一方面,不同人的基音周期变化很大,主要集中在70Hz~1000Hz。

所以窗一般选择在10ms~20ms之间。

此外,为了避免在加窗时加入多余的高频信号,应该使用平滑窗,例如汉明窗。

2、变声算法的讨论

语声可以分为声带振动的浊音部分、声带不振动的清音部分以及静音部分。

在这里,我们主要是改变原始话音的基音频率,以达到变声的目的。

第一种方法是不修改采样数据,仅改变Fs。

这种方法操作非常简便。

第二种方法是直接乘以一个余弦函数,把语音信号频段搬移到较高频段,以达到变声的目的。

第三种方法是插值以后重新抽样。

基本过程是这样的:

已知当前帧帧长FL(采样)点,采样频率Fs,目标变换帧频率Fs’,则目标变换帧帧长FL’=FL*Fs’/Fs。

记Rate=Fs’/Fs,那么FL’=FL*Rate,其中Rate为基频变化率。

变换开始时,先求得FL和FL’的最小公倍数AL,再将原音频帧插值为AL点,最后将插值后的语音段重新抽样,得到长FL’点的变声后的数据。

三种方法操作起来都还比较简单,但为了便于分析时域、频域特效,本设计选择了通信中常用的调制方法,即方案二。

(三)Matlab基础

MATLAB是MatrixLaboratory的缩写,由MathWorks公司于1984年正式推出,内核采用C语言编写。

MATLAB是一个包括数值计算,高级图形和可视化的集成科技计算环境,也是一种高级程序设计语言。

灵活的MATLAB语言可使工程师和科学家简练地表达他们的思想,其强有力的数值计算方法和图形便于测试和探索新的思想,而集成的计算环境便于产生快速的实时结果。

MATLAB得到了各个领域专家学者的广泛关注,其强大的扩展功能为用户提供了强有力的支持;它集数学计算、图形计算、语言设计和神经网络等30多个工具箱于一体,具有极高的编程效率[1],极大地方便了科学研究和工程应用。

语音处理中往往把数字化的语音信号表示为一维或二维(对应于双声道立体声数据)矩阵,因此基于矩阵运算的MATLAB就很自然地应用到语音处理领域。

MATLAB提供了语音文件的读写函数以及录音和放音功能,如表1所示,使用时只需按照函数的语法规则正确输入参数即可。

通过这些函数可以得到语音的采样频率、量化精度和通道数等参数。

同时,MATLAB提供了语音的和、差等线性运算,以及卷积、相关等非线性运算。

对于语音处理中常用到的各种窗函数,MATLAB也都提供了相应的函数,比如hamming(n)即长度为n点的汉明窗。

MATLAB一个重要的特点是易扩展性。

近几年来,有许多科学家、数学家、工程师等开发了一些新的、有价值的应用程序,这些应用程序都可以被纳入MATLAB工具箱。

比如voicebox工具箱,其中包含了很多与语音信号处理相关的函数,可以在有关网站上下载,将其加入到MATLAB的搜索路径,就可以作为MATLAB的库函数来方便地调用了。

使用MATLAB编程与人们进行科学计算的思路和表达方式相近,不需要大量原始而传统的编程过程,要解决很多复杂的问题只需要短短的几条命令就能实现;研究人员可直观、方便地进行分析、计算及设计工作,从而能节省大量时间。

表1与语音输入输出相关的函数

函数名

功能描述

wavreadauread

读语音文件

wavwriteauwrite

写语音文件

soundwavplay

放音

soundsc

归一化放音

soundview

可视化语音输出

wavrecord

录音

 

三基于MATLAB的语音信号短时傅里叶变换

时域上的原函数中含有包含全部信息量的频谱函数,而频谱函数中也含有原函数,我们可以在时域与频域之间对信号进行相互变换,这种变换通过称之为傅立叶变换。

傅立叶变换可将时域上较复杂的运算简化为相对简单的频域运算,因而在信号处理中具有十分重要的作用,例如通过傅立叶变换可以使信号的某些感兴趣的特性变得明显,而在原始信号中这些感兴趣的特性可能含糊不清或甚至不明显。

在传统的语音信号的处理中,傅立叶变换也一直起主要作用。

语音信号是一个非平稳过程,而标准傅立叶变换仅适用于周期信号、瞬变信号或平稳随机信号,因此标准傅立叶变换不能用来直接表示语音信号。

然而,对语音处理来说,短时分析的方法是一个比较有效的解决途径,因为语音信号的特性是随时间缓慢变化的,因而可以假设它在一个短的段时间内保持不变。

将短时分析应用于频域分析即是傅立叶变换,相应的频谱称为“短时谱”,即有限长度的傅立叶变换。

(一)语音信号频谱分析理论基础

进行频谱分析时,在时域数据进行短时FFT处理之前都要进行加窗处理。

在FFT处理之后,普通频谱分析可以进行频域上的滤波处理,从而使频谱更加平滑。

最后IFFT观察恢复后的时域信号图形,频谱分析过程(如图1所示)。

原始信号

时域信号

频域信号

恢复后的时域信号

图1频谱分析过程

(二)短时傅里叶变换原理

传统的傅立叶变换是一种纯频域分析,它可将一般函数f(x)表示为一簇标准函数的加权求和,而权函数亦即f的傅立叶变换。

设f是R上的实值或复值函数,则f为一能量有限的模拟信号。

在任意的有限区间上任意信号定义的任意函数都可以转化成单纯的正弦与余弦的和。

傅立叶变换的定义如公式

(1)所示:

(1)

由于可以认为语音信号是局部平稳的,所以可以对某一帧语音进行傅立叶变换,即短时傅立叶变换。

其定义如下:

(2)

由公式

(2)可以看到,短时傅立叶变换所选取的窗是音信号的标准傅立叶变换。

在这里我们用下标n以区别于标准的傅立叶变换,w(n-m)是窗口函数序列。

针对不同的窗口函数序列,我们可以将得到不同的傅立叶变换的结果。

由公式

(2)知,短时傅立叶变换有两个自变量n和w,所以它既是关于时间n的离散函数,又是关于角频率w的连续函数。

当n固定不变时,它们是序列w(n-m)x(n)的标准傅立叶变换或标准的离散傅立叶变换。

可以从两个角度理解函数X(

)的物理意义:

第一种解释是,当n固定时,如n=n0,则X(

)是将窗函数的起点移至n0处截取信号x(n),再做傅里叶变换而得到的一个频谱函数。

这是直接将频率轴方向来理解的。

另一种解释是从时间轴方向来理解,当频率固定时,例如

,则X(

)可以看作是信号经过一个中心频率为的带通滤波器产生的输出。

这是因为窗口函数w(n)通常具有低通频率响应,而指数

对语音信号x(n)有调制的作用,使频谱产生移位,即将x(n)频谱中对应于频率的分量平移到零频。

 

四基于MATLAB的语音信号特效处理

基音是指发浊音时声带振动所引起的周期性,而基音周期是指声带振动频率的倒数。

基音周期是语音信号最重要的参数之一,它描述了语音激励源的一个重要特征。

不同的人以及同一个人在不同的年龄时期有不同的基音周期。

人唱歌时,其基音频率范围大约是:

童声高音频率范围为260-880Hz,低音频率范围为196-700Hz,女声高音频率范围为220-1.1KHz,低音频率范围为200-700Hz,男声高音频率范围为160-523Hz低音频率范围为80-358Hz。

此外,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息。

(一)语音信号常见的特效

1、音量调节

可改变文件的音量大小,存放为另一音量不同的文件。

2、回声

模拟产生出不同的听音环境(峡谷,大厅,小厅,太空)。

3、回响

多重的回声,模拟产生出不同的听音环境(峡谷,大厅,小厅,太空)。

4、左右移动

使声音动态地从一边移到另一边。

5、相位变化

左右声道的声音不同步,有延时。

6、淡入淡出

声音由小变大,或由大变小。

(二)语音信号特效处理的原理

1、音量调节

直接将PCM采样数据点乘以调节系数就可以改变音量。

2、回声

不同的听音环境中有不同的吸声与反射系数的材料,所以反射回来的音量大小与延时是不同的。

通过调整回声处理单元中的延迟音量与延迟时间两个参数,

就可以模拟产生出不同的听音环境。

根据研究,这两个参数可以确定如表2:

表2回声效果参数

参数

峡谷

大厅

小厅

太空

延迟音量

0.45

0.4

0.4

0.65

延迟时间

500ms

100ms

60ms

180ms

3、回响

在房间中,由于房间四壁对声音的反射,造成多个声音的混合而形成的特殊声音效果称为回响。

回响的效果需要的参数与回声的相同,见表2。

回响与回声不同的地方是,有放亏,所以听起来有多个回声,而回声是无反馈的。

回声是回响的特殊表现。

4、左右移动

感觉声音从一边移到另一边,即声音从左到右,或从右到左(只针对立体声)。

实现的时候可以对左声道音量线性增加的同时对右声道的音量线性降低(从右

到左);或者是左声道的音量线性降低的同时对右声道的音量线性增加(从左

到右)。

5、相位变化

实现方法:

将左(或者右)声道前一段添0,文件在播放的时候左右声道就会不同步右(左)声道的数据会超前。

6、淡入淡出

声音由小变大,由大变小,模拟音源由远到近,由近到远的变化。

实现时,只需要线性改变音量即可。

 

五设计实现

(1)

提前录制一段语音文件,时间10s以内

直接调用wavrecord函数实时录音

语音信号的频谱分析:

画出采样后语音信号的时域波形和短时傅里叶变换后的频谱图

将信号加入延时,再分析其时域波形与频谱,并分别与原始信号进行比较

对原始语音信号进行音量变换、回声、回响、相位移动、淡入淡出等特效处理

回放语音信号

系统设计流程图//miaoshu

图2系统设计流程图

(2)实时录放音实现方法

MATLAB拥有非常强大的函数库,直接调用函数wavrecord即可实现实时录音。

具体程序如下;

fs=11025;%取样频率

duration=3;%录音时间

fprintf('Pressanykeytostart%gsecondsofrecording...\n',duration);

pause;

fprintf('Recording...\n');

y=wavrecord(duration*fs,fs);%duration*fs是总的采样点数

fprintf('Finishedrecording.\n');

fprintf('Pressanykeytoplaytherecording...\n');

pause;

 

(3)信号延时的设计

信号延时通常有以下方法:

方法一:

构造一个增益为1,相位与时间成正比变化的滤波器,让语音信号通过该延时网络,即可实现延时。

方法二:

原语音信号经采样后以离散数据形式存储在数组中,构造一个新的数组,数组前一段置零,后一段放置经采用后的语音数据。

经比较,方法2简单易实现,故本设计采用方法二,。

具体实现如下:

z=[zeros(1500,1);y];%对语音信号进行延时

 

(4)频谱搬移的设计

语音信号的频率一般比较低,把频率搬移到较高频段是实现变声常采用的一种方法。

实际应用中常采用的频谱搬移有如下方法:

方法一:

插值以后重新抽样。

基本过程是这样的:

已知当前帧帧长FL(采样)点,采样频率Fs,目标变换帧频率Fs’,则目标变换帧帧长FL’=FL*Fs’/Fs。

记Rate=Fs’/Fs,那么FL’=FL*Rate,其中Rate为基频变化率。

变换开始时,先求得FL和FL’的最小公倍数AL,再将原音频帧插值为AL点,最后将插值后的语音段重新抽样,得到长FL’点的变声后的数据。

方法二:

直接乘以一个余弦函数,把语音信号频段搬移到较高频段,以达到变声的目的。

两种方法操作起来都还比较简单,但为了便于分析时域、频域特效,本设计选择了通信中常用的调制方法,即方法二。

具体程序如下:

n7=length(y);

t3=linspace(0,1,n7);%0-1之间有n7个点,保证截取的语音信号和载波信号所取点数相同

y3=cos(2*2000*pi*t3);%f0=2000hz

sm=y'.*y3;%矩阵乘:

(m*n).*(m*n)

sm1=sm';

 

(5)短时傅里叶变换的设计

语音信号是一个非平稳过程,而标准傅立叶变换仅适用于周期信号、瞬变信号或平稳随机信号,因此标准傅立叶变换不能用来直接表示语音信号。

然而,对语音处理来说,短时分析的方法是一个比较有效的解决途径,因为语音信号的特性是随时间缓慢变化的,因而可以假设它在一个短的段时间内保持不变。

短时分析应用于频域分析即是傅立叶变换,相应的频谱称为“短时谱”,即有限长度的傅立叶变换。

基于短时傅里叶变换的频谱分析具体程序如下:

NW=512;

d=100;%连续段之间的重叠长度

L=512;%每段长为512

k=NW-d;

Ts=fix(ns/k);%每段实际取的点数

nfft=512;

TF=zeros(Ts,nfft);%将存放三维谱图,先清零

fori=1:

Ts

n1=(L-d)*(i-1)+1;

n2=(L-d)*(i-1)+NW;

xw=sm1(n1:

n2);

temp=fft(xw,nfft);%FFT变换

temp=fftshift(temp);%频谱以0频为中心,保证所有频谱的坐标值一样

TF(i,:

)=temp;%把谱图存放在TF中

end

subplot(2,2,2)

mesh(abs(TF));%三维绘图

title('STFT-Move');

xlabel('时间');%量化间隔,det

ylabel('频率f/hz');

grid;

subplot(2,2,3);

contour(abs(TF));%绘等高线图

title('等高图-Move');

xlabel('时间');

ylabel('频率');

axisequal;%纵、横坐标轴采用等长刻度settheaxesaspectratio

grid;

 

(6)信号特效处理的设计

语音信号的常见特效有:

音量调节、回声、回响、左右移动、相位变化、淡入淡出。

具体实现程序如下:

音量调节:

fprintf('音

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1