男声变女声matlab程序

合集下载

matlab男声变女声课程设计

matlab男声变女声课程设计

matlab男声变女声课程设计一、课程目标知识目标:1. 学生能理解声音信号处理的基本原理,掌握声音信号的数字化表示方法。

2. 学生能掌握MATLAB软件中与声音信号处理相关的函数和工具箱的使用方法。

3. 学生能了解声音转换技术的原理,特别是男声变女声的技术实现方法。

技能目标:1. 学生能够运用MATLAB软件进行声音信号的读取、处理和输出。

2. 学生能够独立操作MATLAB软件中的声音信号处理工具箱,实现男声变女声的音效处理。

3. 学生能够通过实践操作,培养解决问题的能力,提高编程技能和动手能力。

情感态度价值观目标:1. 学生在课程学习中,培养对声音信号处理的兴趣,激发探究精神。

2. 学生通过课程实践,学会尊重他人,关注性别平等,培养正确的价值观。

3. 学生在团队合作中,提高沟通与协作能力,培养集体荣誉感和责任感。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术类选修课程,旨在提高学生对声音信号处理的了解,锻炼编程实践能力。

2. 学生特点:学生为高中年级,具备一定的计算机操作基础和编程能力,对新鲜事物充满好奇心。

3. 教学要求:结合学生特点,课程设计注重实践操作,以案例教学为主,使学生在动手实践中掌握知识技能,同时注重培养正确的价值观。

将目标分解为具体的学习成果:1. 学生能够独立完成MATLAB软件的安装与配置,掌握基本操作方法。

2. 学生能够运用所学知识,编写程序实现男声变女声的音效处理,并对处理结果进行评价。

3. 学生能够撰写课程报告,总结学习收获,分享实践经验。

4. 学生在课程结束后,能够主动关注声音信号处理领域的发展动态,提高自身综合素质。

二、教学内容1. 声音信号处理基本原理- 声音信号的数字化表示- 声音信号的时域与频域分析2. MATLAB软件基础操作- MATLAB软件的安装与配置- 基本命令与函数的使用3. 声音信号处理工具箱介绍- MATLAB中声音信号处理工具箱的安装与调用- 常用函数及其功能介绍4. 男声变女声技术实现- 声音转换技术的原理与分类- 男声变女声的算法实现及参数调整5. 实践操作与案例解析- 声音信号的读取、处理和输出- 男声变女声音效处理的实际操作步骤- 案例分析与评价6. 课程总结与拓展- 课程报告撰写与分享- 声音信号处理领域的发展动态- 相关拓展阅读资料推荐教学安排与进度:第一课时:介绍声音信号处理基本原理,学习声音信号的数字化表示方法。

男女声变换报告

男女声变换报告
4.5
1.时域识别的统计平均数是过零点次数,只需简单判别相邻数据符号的正负即可,算法复杂度几乎为0,并且随着统计点数的增多,算法最终会高度收敛到一个小范围内,识别准确度和稳定性都很好,由于无需作FFT,省去了时域变换到频域的时间。
2.频域识别的统计平均数是基频小于187.5的平均次数,女声基频较高,所以统计出的平均数小,男声的统计平均数大,缺点是做1024点FFT,而且要多次循环测试,占用CPU时间很多,但抗干扰能力强于时域识别。
针对不同处理器和相同处理器的不同处理的要求,每个工程在进行编译、汇编和连接之前都需要进行选项设置。
图4-8设置设置数据大小端模式(大端模式)
图4-9设置头文件路径
图4-10添加宏定义
(5)编译与连接
编译选择设置完成后,在“Project”菜单中选择“Rebuild All”命令,对工程进行编译和连接。CCS底部的编译与连接输出窗口显示相关信息。
以DTMF信号自发自收的工程为例。
5.1.1.1.1
首先,点击电脑桌面上的图标进行硬件连接,复位成功后,双击桌面上的Setup CC3.3软件运行CCS设置程序。从Available Configurations列表中,选择C5502 SEEDXDS510PLUS Emulator进行添加,单击save and quit。随后在弹出的界面中打开C5502 SEEDXDS510PLUS Emulator。
3.2
通过对信号作FFT,变换到频域,对整个频谱左移或者右移100Hz,在做IFFT变回时域,也可以实现男声女声基频的变换,从而实现男女声变换的目的。控制左移和右移的程度,实现男女声变换程度可调。
3.3
女声基频大约高于男声基频100Hz,体现在时域上信号震荡比较剧烈,过零点次数较多,通过统计语音信过零点的次数,多者为女声,少者为男声,从而达到识别男女声的目的。

音频信号的滤波

音频信号的滤波

Matlab实验八:音频信号的滤波实验夏心怡(06010136)(东南大学,南京 210000)摘要:编写matlab程序分别录制一段男声,女声和童声,将录制的声音信号分别通过5kHz,3kHz,2kHz,1kHz,500Hz 的四阶巴特沃斯低通和高通滤波器后与原声音信号进行比较,观察信号发生的变化,注意讲话的内容是否可以听清,总结出传输接收端的听众能听清谈话者内容的语音信号带宽以及不同频率的声音通过滤波器后产生的不同的变化。

关键词:matlab 音频滤波带宽变化实验原理及简介夏心怡,1993,女,湖北,电子科学与工程专业,506493537@ 1.1设计原理Matlab可以驱动计算机上的多媒体卡外接的麦克风来实现声音信号的采集,并经过处理后通过多媒体卡上的喇叭播放出来,我们可以利用这个功能通过多媒体卡完成声音信号的采集和处理。

1.2 实验程序简介在matlab中声音的采集过程首先需要定义一个录音的对象,例如本次试验中,录音函数rec_sound中就定义了一个名为R的录音对象R=audiorecorder(Fs,16,1),其中Fs是设定的取样率,16代表取样的位数,1代表是单声道取样;其次要使用record命令对建立的录音对象R进行录音record(R);由于录音结果存放在录音对象中,并不能直接当成matlab的数据变量进行处理,所以采用x=getaudiodata(R)命令将录音对象r中的数据导出到变量x中;最后用stop命令结束录音过程stop(R)。

具体的录音函数rec_sound代码如下:function x=rec_sound(time,Fs) R=audiorecorder(Fs,16,1);record(R);pause(time);pause(R);x=getaudiodata(R);stop(R);声音信号的播放部分与采集过程大致类似,只是所用命令有所不同,这里不再赘述。

具体的播放函数play_sound代码如下:function y=play_sound(x,Fs)P=audioplayer(x,Fs);[M,N]=size(x);T=max(M,N)/Fs;play(P)pause(T);有了这两个函数,就可以实现声音信号的录制和播放了。

实验三 语音信号的滤波处理

实验三  语音信号的滤波处理

实验三 语音信号的滤波处理一、实验目的通过对语音信号的滤波处理,掌握信号频谱的计算、滤波方法,实现从频域上分离不同特点的信号,从而达到滤除信号中的干扰、降低噪声、以及分离男声和女声的目的。

二、实验原理1. 信号的和、积运算信号和与积运算是指信号相加与相乘。

这类运算较为简单。

需要注意的是,必须将同一瞬间的两个函数值相加或相乘。

在图1中,将()x t 视为缓慢波动的信道噪声,()g t 视为要传输的数字信号,则()()x t g t +表示了实际发送的数字信号,()()x t g t ⋅表示了信道噪声()x t 的取样输出信号。

tttt图1 信号的相乘与相加 图2 正弦信号与噪声相加 在实际应用中,最常见的是有用信号与噪声相加,这样的信号中,信号功率与噪声功率之比称为信噪比。

如图2所示是正弦信号、噪声信号的波形及两种信噪比下正弦信号与噪声相加的波形图。

然而有用信号是相对的,例如在语音信号中,正弦信号则是干扰信号,它同噪声一起,都是需要设法去掉的信号。

2. 信号的频谱计算实际应用中的信号绝大多数表现为振荡形式。

如图3所示是语音信号及其一个局部的波形图,可见该信号是一种振荡形式。

语音信号语音信号局部图3 语音信号的波形将复杂振荡分解为振幅不同和频率不同的正(余)弦振荡,这些谐振荡的幅值按频率排列的图形叫做频谱(幅度谱)。

广泛应用在声学、光学和无线电技术等方面。

它将对信号的研究从时域引到频域,从而带来更直观的认识。

在信号与系统中,采用FS、FT、DFS、DTFT等工具来计算信号的频谱。

实际信号的频谱往往比教材中的例子要复杂得多。

例如图4是图3所示语音信号的幅度谱,其中上图是fft()输出的结果,其表示的频率范围为0~f,下图s是中心频率在零频率处的幅度谱,它与教材中的表示方式一致。

应用FFT计算的幅度谱中心在零频率的幅度谱图4 语音信号的频谱3. 信号的理解本课程的教材中讲到了“信号的分类”、“典型信号(或常用信号)”等内容,这对于理解信号还远远不够。

MATLAB语音信号采集与处理

MATLAB语音信号采集与处理

MATLAB课程设计报告课题:语音信号采集与处理目录一、实践目的 (3)二、实践原理: (3)三、课题要求: (3)四、MATLAB仿真 (4)1、频谱分析: (4)2、调制与解调: (5)3、信号变化: (8)快放: (8)慢放: (8)倒放: (8)回声: (8)男女变声: (9)4、信号加噪 (10)5、用窗函数法设计FIR滤波器 (11)FIR低通滤波器: (12)FIR高通滤波器: (13)FIR带通滤波: (14)一、实践目的本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。

此次实习课程主要是为了进一步熟悉对matlab软件的使用,以及学会利用matlab对声音信号这种实际问题进行处理,将理论应用于实际,加深对它的理解。

二、实践原理:利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。

语音信号的“短时谱”对于非平稳信号, 它是非周期的, 频谱随时间连续变化, 因此由傅里叶变换得到的频谱无法获知其在各个时刻的频谱特性。

如果利用加窗的方法从语音流中取出其中一个短断, 再进行傅里叶变换, 就可以得到该语音的短时谱。

三、课题要求:○1利用windows 自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音,要有男声、女声)。

○2对录制的语音信号进行频谱分析,确定该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉or 尖锐)。

○3利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临界采样)对信号的影响。

Matlab技术在声音处理中的应用

Matlab技术在声音处理中的应用

Matlab技术在声音处理中的应用引言:声音处理是一门利用计算机技术对声音信号进行分析、处理和增强的学科,具有广泛的应用领域,例如语音识别、音频编解码和音乐合成等。

为了实现高质量的声音处理,研究人员采用了各种不同的方法和工具。

而Matlab作为一种强大的数值计算工具,为声音处理的研究提供了许多有力的支持。

本文将介绍Matlab技术在声音处理中的应用,并探讨其对声音信号分析和改善的贡献。

一、声音信号的数学表示声音信号可以被看作是一种连续的波动,具有时间和频率两个维度上的变化。

为了方便分析和处理声音信号,需要将其转化为数学表示形式。

常用的方法是使用数字信号处理技术,将连续的声音信号采样并离散化,得到离散时间序列,即数字化的声音信号。

Matlab提供了丰富的工具和函数,可以方便地进行声音信号的采样、量化和数字化处理。

二、声音信号分析1. 频谱分析频谱分析是声音信号处理的基本技术之一,用于确定声音信号的频谱特征。

在Matlab中,可以使用快速傅里叶变换(FFT)函数对声音信号进行频域分析,得到信号的频谱图。

通过分析频谱图,我们可以了解到声音信号的主要频率成分和能量分布情况,为后续的声音处理提供了重要参考。

2. 声音信号的滤波在声音处理中,滤波是一项重要的技术,用于抑制或增强声音信号的特定频率或频带。

Matlab提供了丰富的滤波函数和工具箱,例如FIR滤波器和IIR滤波器等,可以方便地对声音信号进行低通滤波、高通滤波和带通滤波等操作。

这些滤波技术可以有效地改善声音信号的质量,消除噪音和干扰。

3. 声音信号的降噪噪音是声音处理中常见的问题之一,它会降低声音信号的质量和清晰度。

为了提高声音信号的品质,需要对噪音进行有效降低。

Matlab提供了多种降噪算法和函数,例如基于小波变换的降噪方法和自适应滤波方法等,可以准确地分离和消除噪音成分,提取出原始声音信号。

三、声音信号改善1. 语音识别语音识别是声音处理的重要应用之一,用于将人类的语音信息转化为机器可识别的数字信号。

生物医学信号处理大作业

生物医学信号处理大作业题目:基于matlab的语音信号处理学生姓名:学号:专业:学院:精密仪器与光电子工程学院作业要求录制自己的一段语音:“天津大学精密仪器与光电子工程学院, College of precision instrument and opto-electronics engineering, biomedical engineering”,时间控制在15秒到30秒左右;利用wavread函数对自己的语音进行采样,记住采样频率。

(1)求原始语音信号的特征频带(比如谱峰位置):可以分别对一定时间间隔内,求功率谱(傅里叶变换结果取模的平方)并画出功率谱。

(2)根据语音信号频谱特点,设计FIR或IIR滤波器,分别画出滤波器幅频和相频特性曲线。

说明滤波器特性参数。

用设计的滤波器对信号滤波,画出滤波前后信号的频谱图。

用sound函数回放语音信号,说明利用高通/低通/带通滤波后的效果,不同特征频带被滤除后分别有什么效果。

(3)求出特征频段语音信号随时间变化的曲线(每隔一定时间求一次功率谱,连接成曲线,即短时 FFT)。

(4)选做:语谱图:横轴为时间,纵轴为频率,灰度值大小表示功率谱值的大小。

(提示,可以采用spectrogram函数)(5) 选做:分析自己的语音频谱特点,比如中英文发音的区别。

基于matlab的语音信号处理摘要:对录制的语音信号进行采样,分析其时域波形和频谱图。

给定数字滤波器的性能指标,采用窗函数法和双线性变换法设计数字滤波器,并对语音信号进行滤波,得到滤波前后的信号幅频响应。

通过对比高通、低通两种滤波处理结果,简单而有效地论证了两种数字滤波器在语音信号处理上的异同。

并进一步求出特征频段语音信号随时间变化的曲线,分析自身语音信号的特点。

关键词: MATLAB 数字滤波器语音信号Speech Signal Processing by Digital Filter Based on MA TLABAbstract :Time-domain waveform and frequency spectrum of the recorded speech signals are analyzed by sampling. The performance indexes of digital filters are given. Two methods of window function and bilinear transformation are used to design the digital filters. The speech signal is filtered by the filters, and then magnitude-frequency responses of the signal before and after filtering are received. The advantages of two digital filters(filter low pass and filter high pass)in speech signal processing are demonstrated by comparing different methods for filtering simply and effectively. For more, we are able to figure out the time curves of characteristic bands of speech signal and then analyses the character of our own speech signals.Key words: MATLAB, digital filter, speech signal为了进一步观察和确定语音信号的频谱特征,首先分别画出每秒的频带特征。

数字变声器设计方案

基于FFT算法的数字变声器201242216河北北方学院宣化教学部河北宣化 075100【摘要】本数字变声器是实现男声变女声和女声变男声以及变成童声的系统。

设计本数字变声器的目的是锻炼自己的学习实践能力。

通过matlab编写程序修改语音参数来实现男声女声之间的变换。

【关键词】变音算法数字滤波器语音信号数字滤波器频谱分析 MATLAB1 引言变声器在现实生活中应用广泛,变声器是通过改变输入音频的音色、音调,并将变声后的音频输出的工具。

根据变声器材质不同,变声器分为变声器硬件和变声器软件。

变声器硬件,即通过硬件实现变声的工具;变声器软件,即通过软件实现变声的工具,软件类变声器,运行平台皆为电脑系统。

无论是硬件变声器,还是软件变声器,其原理都是,通过改变输入声音频率,进而改变声音的音色、音调,使输出声音在感官上与原声音不同。

我们每个人的声音不同,源于我们的每个人的音色和音调不同,我们所说的男中音、男高音,就是音调的不同,而即便音调一致,我们依然能区分出两个不同人的声音,或不同乐器的声音,这就是音色的不同。

变声器,正是借助对声音音色和音调的双重复合改变,实现输出声音的改变。

我们这里的变声器就是matlab来实现变声。

2 数字变声器的原理和算法发音方法,发音时,喉头、口腔、鼻腔节制气流的方式和状态,包括发音时构成阻碍和克服阻碍的方式,气流强弱的情况及声带是否振动等几个方面。

人类语音可分为有380声语音和无声语音,前者是由声带振动激励的脉冲信号经声腔调制变成不同的音,它是人类语言中元音的基础,声带振动的频率称为基频。

无声语音则是声带保持开启状态,禁止振动引发的。

一般来说,由声门振动决定的基频跟说话人的性别特征有关,如下表,而无声语音则没有体现这个特征。

说话人的个性化音色和语音的另外一个声学参数——共振峰频率的分布有关。

儿童由于声道短,其共振峰频率高于成年人,成年女性的声道一般短于成年男性,所以女性的共振峰频率一般高于男性。

MATLAB语音信号处理

MATLAB语⾳信号处理数字信号处理课设,我们使⽤MATLAB对语⾳信号进⾏了⼀系列处理,并将其所有功能集中于下图界⾯中:这个界⾯涉及功能众多,其中包括语⾳信号的观察分析、⾳⾊变换、AM调制解调、减抽样、加噪去噪、相频分析和幅频滤波等,最重要的是对MATLAB中函数的掌握,通过不同函数的组合实现你想要实现的功能。

本篇不会给出整个界⾯的程序,下⾯会分块给出每个功能的程序,整个界⾯只需GUI设计界⾯⽂件、定义结构体并把对应键程序打进去即可。

1、语⾳信号的采集1.1题⽬要求使⽤windows下的录⾳机录制⼀段语⾳信号、⾳乐信号或者采⽤其他软件截取⼀段⾳乐信号(要求:时间不超过5s,⽂件格式为WAV。

)①请每位同学都参与录⾳,内容⾃定。

②使⽤wavread语句读取语⾳/⾳乐信号获取抽样率;(注意:读取的信号是双声道信号,即为双列向量,需要分列处理);③输出时域语⾳/⾳乐信号的波形。

④实现对录⾳信号的声⾳⼤⼩的调节。

⑤实现对两种语⾳/⾳乐信号的混⾳⾳效。

⑥实现⾳乐信号的回⾳⾳效。

1.2设计内容及⽅案①读取⾳频信号:我是通过wavread函数读取.wav⽂件的⽅式来获得,当然⾸先要⾃⼰创建⼀个.wav⾳频,我是通过电脑录⾳⽣成.mp3然后格式⼯⼚转成.wav的,需保存到同⼀⽂件夹下。

②分声道处理:⼀般⾳乐和语⾳信号都是双声道信号,时域和频谱图会有两个颜⾊,所以要取单列来分析,通过x1=x(:,1)语句来实现。

③画时域波形图:⽤plot函数来画图,注意横坐标为时间t。

④⾳量⼤⼩调节:通过将⾳频直接乘⼀个系数来实现调⾳量。

⑤混⾳和回声:混⾳即将两个⾳频相加,要相加就得保证矩阵⼀样,所以要通过截取并补零矩阵来实现;回声是把三个信号叠加,这三个信号在不同位置补零⾳量也逐渐变⼩,就可以实现回声。

⑥播放声⾳:本题我使⽤wavplay来播放声⾳,会有警告,后⾯的题我⽤sound⽐较好。

1.3程序源码及注释clear[x,fs] = wavread('beautiful.wav');%⾳乐信号[y,fs1]= wavread('1.wav');%⼥⽣声⾳[z,fs2]= wavread('2.wav');%男⽣声⾳%输出频率fsfs1fs2%⾳乐语⾳信号分声道处理x1=x(:,1);y1=y(:,1);z1=z(:,1);%画⾳乐信号时域图n1=length(x1);%length取数列长度即元素个数figure(1)t1=(0:(n1-1))/fs;plot(t1,x1);axis([0,5,-1,1]);xlabel('时间t');title('⾳乐信号时域波形');%画语⾳信号时域图n2=length(y1);figure(2)subplot(2,1,1);t2=(0:(n2-1))/fs1;plot(t2,y1);%⼥⽣axis([0,4,-0.5,0.5]);xlabel('时间t');ylabel('幅度');title('⼥⽣语⾳信号时域波形');n3=length(z1);subplot(2,1,2);t3=(0:(n3-1))/fs2;plot(t3,z1);%男⽣axis([0,4,-0.5,0.5]);xlabel('时间t');ylabel('幅度');title('男⽣语⾳信号时域波形');%对语⾳信号声⾳⼤⼩调节wavplay(y,fs1); %播放原语⾳y11=10*y;wavplay(y11,fs1); %加⼤⾳量播放y22=0.5*y;wavplay(y22,fs1); %减⼩⾳量播放%两种语⾳信号的混⾳[m,n]=size(y1);%size取矩阵的⾏列数[m0,n0]=size(z1);a=zeros(abs(m-m0),n);%两矩阵⾏数差为零矩阵⾏数if length(y1)<length(z1)y2=[y1;a];y3=y2+z1;%两个矩阵⾏数⼀样才能相加,所以要补零elsey2=[z1;a];y3=y2+y1;%y1和z1中长的那个不变,短的那个补零end;wavplay(y3,fs1) ;%播放混⾳语⾳%画混⾳波形figure(3)subplot(2,1,1);t4=(0:(max(n2,n3)-1))/fs1;plot(t4,y3);axis([0,4.5,-0.5,0.5]);xlabel('时间');ylabel('幅度');title('两语⾳信号叠加后时域波形');%⾳乐信号的回⾳x11=x1(1:200000);%截取部分x11=x11';%因为输出为⼀列所以要转置成⼀⾏int0=zeros(1,20000);%1⾏2000列的零矩阵temp1=[x11,int0,int0];temp2=[int0,0.6*x11,int0];temp3=[int0,int0,0.3*x11];%通过补零实现延时,同时声⾳⼀个⽐⼀个⼩hui=temp1+temp2+temp3;%三重声⾳相加实现回声N=length(hui);wavplay(hui,fs1);%播放回⾳⾳乐%画回声波形subplot(2,1,2);t1=(0:(N-1))/fs;plot(t1,hui);axis([0,4.5,-1,1]);xlabel('时间');ylabel('幅度');title('回声时域波形');1.4运⾏结果仿真结果分析:我听到了原声和⾳量放⼤减⼩的声⾳,也听到了混⾳和回声的效果,变化明显;本题我画了⾳乐和两个语⾳信号的时域波形以及混⾳回声的时域波形,⾳乐信号幅度⽐语⾳信号⾼且连贯性⾼,混⾳之后幅度叠加,回声之后幅度也增⼤,波形有很明显的变化。

MATLAB 变音文档

《数字信号处理B》课程项目实施报告题目:数字音效处理器组号: 91任课教师: 方勇组长: 11123701 马骁成员:11123802 梅烜玮成员: 11120989 毛顺亿成员: 11120991 程佳静成员: 11123627 肖淞联系方式:二零一三年10月19日摘要:本论文介绍了在matlab平台下的数字音效处理的实现。

主要使用了matlab中的GUI、FDAtools、audio函数、fft函数、filter函数等制作了图形用户界面、声音的采集和播放、信号在时域和频率的多种处理、滤波器的制作和应用。

通过对声音的时域和频域分析,利用梳状滤波器、IIR2阶滤波器、信号加权线性叠加算法、频域差值算法等理论工具最后实现出对声音的均衡、变声、回声和混音的音效处理。

关键字:数字音效处理、滤波器、matlab目录项目分工 (2)摘要 (3)目录 (4)一、课程项目实施方案 (5)数字音效处理器概述 (5)1.2 设计平台Matlab简介 (5)设计思想 (5)功能指标 (5)1.5 功能原理概述 (5)回声简介 (5)1.5.2 混音音效简介 (6)1.5.3 男女变声简介 (6)1.5.4 均衡器简介 (7)二、系统设计及可行性分析 (7)2.1 系统综述 (7)音频的采集与播放 (8)去噪数字滤波器的设计 (8)音效算法以及理论分析 (11)2.4.1 回音的实现方法和理论分析 (11)混音实现方法和理论分析 (13)2.4.3 男女变声实现方法和理论分析 (13)均衡器 (20)2.4.5 GUI设计 (21)三、系统性能与结果分析 (22)3.1 算法性能和结果分析 (22)3.1.1 回音音效处理 (22)3.1.2 混音音效处理 (25)3.1.3男女变声 (25)3.1.4均衡器 (27)对项目进行所遇到的问题的分析和解决 (30)问题 (30)3.2.2 理论分析问题 (30)参考文献 (32)附录1 组员心得 (33)附录2源程序 (35)一、课程项目实施方案数字音效处理器概述数字音效处理器,是用数字音频信号处理技术来提升和达到各种声音效果的电子装置或者音频变换系统,包括均衡器(EQ)、数字混响器、立体声、特殊音效器等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

% 载入声音
[s,fs,nbits] = wavread('222');
%播放原始声音
sound(s,fs,nbits);
FL = 80; % 帧长
WL = 240; % 窗长
P = 10; % 预测系数个数
s = s/max(s); % 归一化
L = length(s); % 读入语音长度
FN = floor(L/FL)-2; % 计算帧数
% 预测和重建滤波器
exc = zeros(L,1); % 激励信号(预测误差)
zi_pre = zeros(P,1); % 预测滤波器的状态
s_rec = zeros(L,1); % 重建语音
zi_rec = zeros(P,1);
% 合成滤波器
exc_syn = zeros(L,1); % 合成的激励信号(脉冲串)
s_syn = zeros(L,1); % 合成语音
last_syn = 0; % 存储上一个(或多个)段的最后一个脉冲的下标
zi_syn = zeros(P,1); % 合成滤波器的状态
% 变调不变速滤波器
exc_syn_t = zeros(L,1); % 合成的激励信号(脉冲串)
s_syn_t = zeros(L,1); % 合成语音
last_syn_t = 0; % 存储上一个(或多个)段的最后一个脉冲的下标
zi_syn_t = zeros(P,1); % 合成滤波器的状态
% 变速不变调滤波器(假设速度减慢一倍)
hw = hamming(WL); % 汉明窗
% 依次处理每帧语音
for n = 3:FN
% 计算预测系数
s_w = s(n*FL-WL+1:n*FL).*hw; % 汉明窗加权后的语音
[A E] = lpc(s_w, P); % 用线性预测法计算P个预测系数
% A是预测系数,E会被用来计算合成激励的能量
s_f = s((n-1)*FL+1:n*FL); % 本帧语音,下面就要对它做处理
%用filter函数s_f计算激励
[exc1,zi_pre] = filter(A,1,s_f,zi_pre);
exc((n-1)*FL+1:n*FL) = exc1; %计算得到的激励
%用filter函数和exc重建语音
[s_rec1,zi_rec] = filter(1,A,exc1,zi_rec);
s_rec((n-1)*FL+1:n*FL) = s_rec1; %计算得到的重建语音
s_Pitch = exc(n*FL-222:n*FL);
PT = findpitch(s_Pitch); % 计算基音周期PT
G = sqrt(E*PT); % 计算合成激励的能量G
tempn_syn = [1:n*FL-last_syn]';
exc_syn1 = zeros(length(tempn_syn),1);
exc_syn1(mod(tempn_syn,PT)==0) = G; %某一段算出的脉冲
exc_syn1 = exc_syn1((n-1)*FL-last_syn+1:n*FL-last_syn);
[s_syn1,zi_syn] = filter(1,A,exc_syn1,zi_syn);
exc_syn((n-1)*FL+1:n*FL) = exc_syn1; %计算得到的合成激励
s_syn((n-1)*FL+1:n*FL) = s_syn1; %计算得到的合成语音
last_syn = last_syn+PT*floor((n*FL-last_syn)/PT);
%男声变女声
PT1 =floor(PT/2); %减小基音周期
poles = roots(A);
deltaOMG =150*2*pi/fs;
for p=1:10 %增加共振峰频率,实轴上方的极点逆时针转,下方顺时针转if imag(poles(p))>0 poles(p) = poles(p)*exp(j*deltaOMG);
elseif imag(poles(p))<0 poles(p) = poles(p)*exp(-j*deltaOMG);
end
end
A1=poly(poles);
tempn_syn_t = [1:n*FL-last_syn_t]';
exc_syn1_t = zeros(length(tempn_syn_t),1);
exc_syn1_t(mod(tempn_syn_t,PT1)==0) = G; %某一段算出的脉冲
exc_syn1_t = exc_syn1_t((n-1)*FL-last_syn_t+1:n*FL-last_syn_t);
[s_syn1_t,zi_syn_t] = filter(1,A1,exc_syn1_t,zi_syn_t);
exc_syn_t((n-1)*FL+1:n*FL) = exc_syn1_t; %计算得到的合成激励
s_syn_t((n-1)*FL+1:n*FL) = s_syn1_t; %计算得到的合成语音
last_syn_t = last_syn_t+PT1*floor((n*FL-last_syn_t)/PT1);
end
%绘图
plot(s_syn_t),
xlabel('n (samples)'), ...
ylabel('Amplitude'), title('变换后语音信号'),...
xlim([0,length(s_syn_t)]);
%播放改变后的声音
sound(2*s_syn_t);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% findpitch函数
% 计算一段语音的基音周期
function PT = findpitch(s)
[B, A] = butter(5, 700/4000);
s = filter(B,A,s);
R = zeros(143,1);
for k=1:143
R(k) = s(144:223)'*s(144-k:223-k);
end
[R1,T1] = max(R(80:143));
T1 = T1 + 79;
R1 = R1/(norm(s(144-T1:223-T1))+1);
[R2,T2] = max(R(40:79));
T2 = T2 + 39;
R2 = R2/(norm(s(144-T2:223-T2))+1);
[R3,T3] = max(R(20:39));
T3 = T3 + 19;
R3 = R3/(norm(s(144-T3:223-T3))+1);
Top = T1;
Rop = R1;
if R2 >= 0.85*Rop
Rop = R2;
Top = T2; end
if R3 > 0.85*Rop
Rop = R3;
Top = T3; end
PT = Top;
return。

相关文档
最新文档