基于matlab时域频域处理的语音信号变声处理系统设计与算法原理(论文+程序源码+GUI图形用户界面)——变声算法

基于matlab时域频域处理的语音信号变声处理系统设计与算法原理(论文+程序源码+GUI图形用户界面)

大家好,今天给大家介绍基于matlab的语音信号变声处理系统设计与算法原理(论文+程序源码)。

运用matlab软件实现对声音的变声处理,利用离散付里叶变换进行频谱分析;设计数字滤波器组;通过时域和频域方法做出各种音效效果,实现变速(慢放、快放),变调(频谱左移、右移),低通、高通滤波,还有回音效果。

文章目录:

1、项目简介

  1. 系统设计

    1)语音信号的采集

    2)语音信号的频谱分析

    3)设计高通、低通数字滤波器和画出其频率响应

    4)用滤波器对信号进行滤波

    5)比较滤波前后语音信号的波形及频谱

    6)播放原始语音信号

    7)实现快放、慢放功能

    8)实现回音音效效果

    9)实现变高音、低音效果

    10)设计GUI系统界面

  2. 语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。


2、难度指数

本项目难度:中等难度
适用场景:相关题目的毕业设计及相关领域的应用研究


3、运行环境:

环境配置:
本项目所使用的MATLAB版本为MATLAB 7.8.0(R2016a)
注:可适配绝大部分matlab版本
项目技术:
离散付里叶变换+频谱分析+声音处理+滤波器算法+变声算法等等


4、项目详解:

提示:以下为项目的详细介绍,项目源码及项目设计文档下载地址见文末。

4.1课程设计摘要

Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。信号处理是Matlab重要应用的领域之一。

本设计针对现在大部分语音处理软件内容繁多、操作不便等问题,采用MATLAB7.0综合运用GUI界面设计、各种函数调用等来实现语音信号的变频、变幅、傅里叶变换及滤波,程序界面简练,操作简便,具有一定的实际应用意义。

本次实例是利用MATLAB对语音信号进行时域和频域分析,通过MATLAB对语音进行数字处理。

4.1.1课题背景及意义

语音信号处理是一门比较实用的电子信息工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段。通过语言相互传递信息是人类最重要的基本功能之一。语言是人类特有的功能,踏实创造和记载几千年人类文明史的根本手段,没有语言就没有几天的人类文明。语音是演的升学表现,是相互传递信息的最重要的手段,是人类最重要,最有效,最常用和最方便的交换信息的形式。

4.1.2国内外研究现状

20世纪60年代中期形成的一系列数字信号处理的理论和算法,如熟悉滤波去、快速傅里叶变换(FFT)等是语音信号数字处理的理论和技术基础。随着信息科学技术的飞速发展,语音新海处理取得了重大的进展;进入70年代之后,提供了用于语音信号的信息压缩和特征提取的线性预测技术(LPC),并已成为语音信号处理最强有力的工具,

广泛应用于语音信号的分心、合成及各个应用领域,以及用于输入语音与参考样本之间时间匹配的动态规划方法;80年代初一种新的基于聚类分析的高效数据压缩技术------矢量量化(VQ)应用于语音信号处理中;近年来人工神经网络(ANN)的研究取得了迅速发展,语音信号的各项课题是促进其发展的重要动力之一,同时,他的许多成果也体现在有关语音信号处理的各项技术之中。

4.2设计原理

4.2.1数字滤波器设计原理

熟悉滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对新哈处理进行变换。

数字滤波器可以理解为是一个计算程序或算法,将代表输入的信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的阶数获得高的选择性,所用的存贮单元少,所以经济而效率高。但是这个高效率是以相位的非线性为代价的。选择性越好,则相位非线性越严重。相反,FIR滤波器却可以得到严格的线性相位,然而由于FIR滤波器传输函数的极点固定在原点,所以只能用较高的阶数达到高的选择性;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍,结果,成本较高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则IIR滤波器就必须加全通网络进行相位较正,同样要大增加滤波器的节数和复杂性。

整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。

4.2.2语音变调原理

读入的一段语音信号,通过改变语音信号的频率即实现了快放、慢放的目的;设计低通、高通滤波器对语音信号进行滤波,即可实现既定频域的语音信号播放;

除此,对频域波形进行频谱搬移,即向左移、向右移,即可实现高音、低音的语音信号播放。

4.3设计思路原理

4.3.1主体设计思想

首先用matlab读取一段提前录得的WAV语音信号,然后对其进行各种处理,之后产生对应于设计要求的WAV语音信号,最后再设计DUI系统界面后直接调用生成的WAV语音信号,进行播放。

4.3.2语音信号的提取

wavread函数调用格式:

y=wavread(file),读取file所规定的wav文件,返回采样值放在响亮y中。

y,fs,nbits=wavread(file),采样值放在向y中,表示采样频率(),nbits表示采样位数。

y=wavread(file,N),读取钱N点的采样值放在向量y中。

y=wavread(file,,),读取从到点的采样值放在向量y中。

在Matlab中使用Wavread函数,可得出信号的采样频率为8192双声道的。利用Sound函数可以清晰的听到"语音信号处理"或"ne two three"

部分程序如下:

%y=wavread('v016');

x,Ft,bits=wavread('v017');%采样值放在向x中,Fs表示采样频率(),bits表示采样位数。

sound(x,8129,bits)%以原来频率进行发声

%sound(y);

tend=length(y)/8192;

t=linspace(0,tend,length(y));%等间隔划分

subplot(2,2,1);plot(t,y);grid

title('语音信号y');xlabel('t(s)');ylabel('y');

Y=fft(y);

Ts=t(2)-t(1);

ws=1/Ts;

wn=ws/2;

w=linspace(0,wn,length(t)/2);

if mod(length(t),2)==0

tnum=length(t)/2;

else

tnum=(length(t)-1)/2;

end

Y=abs(Y(1:1:tnum));

subplot(2,2,2);plot(w,Y);axis(0 2000 0 500);grid;

title('语音信号y的频谱');xlabel('f(Hz)');ylabel('Y');

4.3.3对语音信号进行变声处理

4.3.3.1对语音信号进行低通、高通滤波

低通取通带截止频谱为600,阻带截止频谱为700,(高通通带截止频谱为600,阻带截止频谱为700)采样频谱为8000,对原始语音信号加窗(汉明窗)实现低通滤波。

程序如下:

fp=600; %取通带截止频谱为600

fs=700; % 阻带截止频谱为700

Fs=8000;

wp=2pi fp/Fs;

ws=2pi fs/Fs;

wdelta=ws-wp;

N=ceil(6.6pi/wdelta);
Wn=(wp+ws)/2;
b=fir1(N,Wn/pi,hamming(N+1));%加窗滤波
H,W=freqz(b,1,512);
t=0:1/Fs:0.2;
x=wavread('v017');
figure
plot(x)
y=3
filter(b,1,x); %乘以系数3来增大幅值音量

figure

plot(y);

sound(y)

wavwrite(y,Fs,'v017_low_pass');产生WAV语音文件,然后保存

grid on

4.3.3.2频域右移

原始语音信号的频域分析,对频谱进行整体右移,实现高音播放

程序如下:

y=wavread('v017');% save Y1 %luyin

Fs=8192;%wavplay(Y1,Fs);

pinyi=fft(y);

size(pinyi);

f=8192*0:22000/22001;

figure(1)

plot(f,2abs(pinyi));
axis(1,10000,0,250);
f=8192
0:24000/24001;

hang=pinyi';

N=1000;

pujialing=zeros(1,N),hang(1:22001),zeros(1,N);

pu=pujialing';

figure(2)

plot(f,abs(pu));

axis(1,10000,0,250);

Y1=3*real(ifft(pu));

wavwrite(Y1,Fs,'v017_pinyi_right');

wavplay(Y1,Fs);

4.3.3.3频域左移

y=wavread('v017');% save Y1 %luyin

Fs=8192;%wavplay(Y1,Fs);

pinyi=fft(y);

size(pinyi);

f=8192*0:22000/22001;

figure(1)

plot(f,abs(pinyi));

grid on

axis(1,10000,0,250);

%f=8192*0:22000/22001;

hang=pinyi';

N=1000;

pujialing=hang(N:22001),zeros(1,(N-1));

pu=pujialing';

figure(2)

plot(f,2abs(pu));
grid on
axis(1,10000,0,250);
Y1=3
real(ifft(pu));

wavwrite(Y1,Fs,'v017_pinyi_left');

wavplay(Y1,Fs);

4.3.3.4快放、慢放播放

实现快放、慢放根本原理就是改变其播放频率。

程序如下:

Fs=16384;

Y,w,t=voice_spectrum(y,Fs);

sound(y,Fs);

axes(handles.axes1);

cla;

plot(t,y);grid;title('语音信号y,采样频率=16384');xlabel('t(s)');ylabel('y');

axes(handles.axes2);

cla;

plot(w,Y);axis(0 2800 0 500);grid;

title('语音信号y的频谱,采样频率=16384');xlabel('f (Hz)');ylabel('Y');

4.3.3.4 回音播放

回音播放就是在原始信号的基础上加上一点延迟时间。

程序如下:

y=wavread('v017');

%load handel;

delay=900;

tend=length(y)/8192;

t=linspace(0,tend,length(y));

yd=zeros(1,delay) y(1:(length(y)-delay))';

yecho=y+0.4*yd';

sound(yecho);

figure(2);subplot(3,1,1);plot(t,y);grid;title('原始语音信号y');

subplot(3,1,2);plot(t,yd);grid;title('延迟时间yd');

subplot(3,1,3);plot(t,yecho);grid;title('有回音效果的语音信号yecho')

4.4相应实验数据或分析

4.4.1实验结果图

4.4.1.1原始语音信号

时域波形和频谱图如下:

4.4.1.2经过低通滤波处理后的波形图

4.4.1.3经过高通滤波处理后的波形图

4.4.1.4频域右移

原始信号

经过右移后

时域波形和频谱图如下:

4.4.1.5频域左移

经过左移后

时域波形和频谱图如下:

4.4.1.6快放、慢放

4.4.1.7回音播放

4.4.2 GUI系统界面

4.5 总结

本文对语音信号处理系统的设计作了详细的介绍,采用一系列图像分析和处理技术,实现了语音信号的基本处理的功能,经过测试运行,本设计圆满的完成了对语音信号的读取与打开;较好的完成了对语音信号的频谱分析,通过fft变换,得出了语音信号的频谱图;在滤波这一块,主要是从数字滤波器入手来设计滤波器,基本实现了滤波,完成了各种滤波器的滤波效果比较。


5、源码下载:

本项目及一些精选的matlab人脸识别项目源码如下,有需要的朋友可以点击进行下载

序号 matlab人脸识别项目(点击下载)
1 (本项目源码) 基于matlab时域频域处理的语音处理系统源码+项目设计文档+GUI图形用户界面_声音处理_时域频域变频_频谱分析_matlab
2 自行利用matlab设计的过滤掉一定频率后的将原始声音改变的滤波器
3 基于带动量项的BP神经网络语音识别_BPDLX_matlab
4 基于matlab语音处理.zip
5 BP神经网络的数据分类_语音特征信号分类_matlab
6 语音激活检测算法_对基于短时能量和短时过零率双门限法语音激活检测的噪声估计算法_基于最小子带能量的噪声估计方法_matlab
7 马丁噪声估计算法_用于谱减法_基于统计模型等语音增强算法_噪音估计_matlab
8 旁瓣对消_filter_singnal_滤波语音信号_matlab
9 LMS_RLS改进算法_语音增强_MATLAB程序_输入输出序列_读取数据_自适应增强算法
10 让语音信号通过低通,高通,带通滤波器使其变声_并且在GUI界面上绘出了个滤波器的频率响应和语音信号的频谱_matlab
11 包含语音信号处理中的语音变声代码加音频_matlab
相关推荐
IMPYLH1 小时前
HTML 的 <abbr> 元素
前端·算法·html
简简单单做算法1 小时前
基于OFDM的车联网雷达通信一体化感知算法matlab性能仿真
matlab·ofdm·车联网·雷达通信一体化
leo__5202 小时前
小波特征与模糊支持向量机(FSVM)的脑电信号分类方法
算法·支持向量机·分类
wabs6662 小时前
关于动态规划【纯粹的0-1背包需要思考的问题】
算法·动态规划
小小编程路2 小时前
字符串转数字时,可能会遇到哪些问题?
java·开发语言·算法
rit84324992 小时前
MATLAB近红外光谱预处理:平滑与求导(MSV方法)
数据结构·算法·matlab
神仙别闹2 小时前
基于 MATLAB SVM 方法对数字进行分类训练和预测
支持向量机·matlab·分类
蚂蚁数据AntData2 小时前
从ChatBI到业务记忆:重新定义数据智能的生产力边界
大数据·网络·数据库·人工智能·算法
_日拱一卒2 小时前
LeetCode:22括号生成
算法·leetcode·职场和发展