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

news/2024/10/29 7:22:48/

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

大家好,今天给大家介绍基于matlab的语音信号变声处理系统设计与算法原理(论文+程序源码)。
运用matlab软件实现对声音的变声处理,利用离散付里叶变换进行频谱分析;设计数字滤波器组;通过时域和频域方法做出各种音效效果,实现变速(慢放、快放),变调(频谱左移、右移),低通、高通滤波,还有回音效果。

文章目录:

  • 【老生谈算法】基于matlab时域频域处理的语音信号变声处理系统设计与算法原理(论文+程序源码+GUI图形用户界面)
    • 1、项目简介
    • 2、难度指数
    • 3、运行环境:
    • 4、项目详解:
    • 5、源码下载:

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=2pifp/Fs;
ws=2pifs/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
5BP神经网络的数据分类_语音特征信号分类_matlab
6语音激活检测算法_对基于短时能量和短时过零率双门限法语音激活检测的噪声估计算法_基于最小子带能量的噪声估计方法_matlab
7马丁噪声估计算法_用于谱减法_基于统计模型等语音增强算法_噪音估计_matlab
8旁瓣对消_filter_singnal_滤波语音信号_matlab
9LMS_RLS改进算法_语音增强_MATLAB程序_输入输出序列_读取数据_自适应增强算法
10让语音信号通过低通,高通,带通滤波器使其变声_并且在GUI界面上绘出了个滤波器的频率响应和语音信号的频谱_matlab
11包含语音信号处理中的语音变声代码加音频_matlab

http://www.ppmy.cn/news/700318.html

相关文章

剪辑软件怎么加声音?

每次我们剪辑视频要配音的时候,都在思考一个问题,有没有什么比较简单的配音方式。其实很多剪辑软件都可以直接进行配音,在软件里面就可以进行操作,但是有的软件可以上传语音文件,然后直接合成。 像剪映,可…

unity3D学习之音频播放 、实时变声简化版-audio菜鸟笔记5

这是基于soundtouch写的一个实时变声的C#脚本,因为是调试版,所以可能会有BUG 核心代码: private void OnAudioFilterRead(float[] data, int channels){if (isRecording){//根据data,一段段处理变声soundTouch.PutSamples(data, …

用matlab实现女声变男声步骤,男变女声、女变男声、如何实现变声效果?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在移动直播中, 声音是主播和观众互动的重要途径之一, 为了丰富直播的内容,大家都会想要在声音上做一些文章, 在采集录音的基础上玩一些花样。比如演唱类的直播间中, 主播伴随着背景音乐演唱。这时有些主播就会希望能够给自己声音增…

用MATLAB设计一个超简单的变声GUI界面

由于并非专业变声制作,所以原理上只是进行了对时间轴的压缩或拉伸(浅层的频率变换)和振幅的变化,没有对音频文件进行滤波啊什么的深入处理。只适合娱乐而已。(哈哈~~~) 实现效果: 每种…

Android变声(SoundTouch)

前言:既然说是为变声这个功能而做,就我自己所了解的,原生中应该只有ffmpag,或者soundtouch可以实习,而这两种都涉及到NDK开发,这就有点难受了,当时公司是用的腾讯推广的变声器,后来因为老总发话…

自然语言处理从入门到应用——预训练模型总览:两大任务类型

分类目录:《自然语言处理从入门到应用》总目录 相关文章: 预训练模型总览:从宏观视角了解预训练模型 预训练模型总览:词嵌入的两大范式 预训练模型总览:两大任务类型 预训练模型总览:预训练模型的拓展 …

鲸鱼算法WOA优化VMD参数,最小包络熵、样本熵、信息熵、排列熵(适应度函数可自行选择,一键修改)包含MATLAB源代码...

鲸鱼优化算法(Whale optimization algorithm, WOA)是Mirjalili根据座头鲸的捕食行为而提出来的,算法对座头鲸的狩猎行为进行模仿,通过对猎物的寻找,然后攻击进行觅食,以此来达到优化的目的,已有很多学者将算法用于实际…

探索iPadOS 17的亮点特性:值得关注的新功能揭秘

探索iPadOS 17的亮点特性:值得关注的新功能揭秘 看完在WWDC23上作为久违的“OneMoreThing”亮相的令人兴奋的AppleVisionPro后,是时候看看同样作为重要角色出现在发布会上的iPadOS了。与iOS一样,iPadOS也来到了17时代。除了一年后同步iOS16的…