matlab编写fie滤波器,数字信号处理大作业mdash;mdash;基于matlab R2019a的男声变女声资料汇总与代码...
@数字信号处理大作业——基于matlab R2019a的男声变女声资料汇总与代码
概述
参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多,注释也写的不清楚(也可能也是我太小白了看不懂哈哈哈哈哈)写博客的初心是对自己这三天做的工作给个总结,方便以后的人,自己也感觉非常开心,嘿嘿!
看看我的文件夹
各位小白菜注意,matlab的代码和其他相关文件一定要整整齐齐的放好,否则以后有你的苦吃,嘿嘿嘿;我也是小白嘿嘿,大家要互相学习鸭;第一次写博客,排版丑希望多提建议,小朱给大家鞠躬!
算法原理
查到了几种,以下为小本本记录的:
对语音的采样率进行变化,就能改变声音。比如采样率低于奈奎斯特定理中的2fh,就会丢失高频分量,声音音色自然会变化。但是这种会丢失信息,而且不易用参数控制;
可以通过改变播放的速度实现,快5%就是女声,慢5%就是男声。记得多普勒效应吗?一辆响着汽笛声的车,朝你来时声音尖,离你远去时声音闷,大概有点这意思。但是显然,我们不希望输入输出的声音速度发生变化,这样用户体验也太差了;
所以男女声变调必须是进行频谱搬移。学过通电/信号与系统的同志们都知道,余弦函数乘个余弦函数,积化和差,会有和频差频分量生成,频谱发生了搬移,这种变化称为“调制”。所以我们可以通过这种方法实现吗?不行。通电里可以,是因为两个相乘量的频率大小相差甚远,生成的信号可以方便的滤出来。男声女声距离很近,频带又宽,所以用模拟的方法没法实现。
哈哈哈所以这时候就体现了数字信号处理的优越性,虽然目前我做的效果也不大好,但我相信我能做的更好,之后会更新的!有些代码用cirshift进行搬移,可它就是个让频谱在固定范围转圈的函数,我真不明白用它有何用。所以我最后选择时域乘exp(jwt),可效果也不好,我不明白为啥。这大概就是理想与现实的差距,说明理论落地很难。
try1.m
clc
[y1,Fs] = audioread('source.wav'); %读出信号,采样率和采样位数。 %注意文件格式要求
%source为男声音频
%sound(y1,Fs); %播放文件
%设计巴特沃斯低通滤波器 此处加滤波器会使声音变模糊,似乎很重要的高频分量被丢掉了
%Wc1=2*1000/Fs; %男声截止频率 1000Hz
%[b,a]=butter(4,Wc1);
%y1=filter(b,a,y1);
Y1 = fft(y1);%Fast Fourier transform
sigLength=length(y1);%Length of largest array dimension
f=Fs*(1:sigLength)/sigLength;
absY=abs(Y1);%Absolute value and complex magnitude
figure('Name','Measured Data','NumberTitle','off');
%Create figure window
%Specify the Name property again, but this time, set the NumberTitle property to 'off'.
%The resulting title does not include the figure number.
%绘制男声频域
subplot(2,2,1);plot(f,absY);xlabel('Frequency(Hz)男声频域');grid on
%绘制男声时域
t=(0:sigLength-1)/Fs;%t = 1 / f
subplot(2,2,2);plot(t,y1);xlabel('Time(s)男声时域');grid on
%频谱搬移(时域相移,频域调制)
Y2 = fft(y1 .* exp(1000/(2 * pi) * 1i .* t'));
%绘制女声频域
absY2=abs(Y2);
subplot(2,2,3);plot(f,absY2);xlabel('Frequency(Hz)女声频域');grid on
%绘制女声时域
y2=ifft(Y2);
subplot(2,2,4);plot(t,y2);xlabel('Time(s)女声时域');grid on
y2=abs(y2);%audiowrite必须输入为实数
%失败的滤波器尝试
%BPF = load('LPF_60M.mat');
%y3 = filter(BPF.LPF_60M,1,y2);
%能调通但是效果不好的滤波器尝试
y3=highp(y2,400,500,0.0001,0.02,Fs);
audiowrite('transform30.wav',y3,Fs)
%transform30为生成的文件,它生成的地址不是很确定,会发生变化,
%我还没搞明白,以下是它出现的两个位置:
%C:\Users\honor\Documents\MATLAB\Examples\R2019a\matlab\WriteanAudioFileExample
%E:\…\dsp_greatassignment\try
若不清楚可在电脑“开始”里搜一下具体在哪。
上面用到的highp函数,这段代码很多网页上都有,我是从https://www.cnblogs.com/tkppain/p/6691052.html?utm_source=itdadao&utm_medium=referral 复制粘贴过来并作了一些改动。
function y=highp(x,f1,f2,rp,rs,Fs)
%高通滤波,该代码鲁棒性很差,试试你就晓得了
%也可能是我不会用
%通带或阻带的截止频率的选取范围是不能超过采样率的一半
%即,f1,f3的值都要小于 Fs/2
%x:需要带通滤波的序列
% f 1:通带截止频率
% f 2:阻带截止频率
%rp:边带区衰减DB数设置
%rs:截止区衰减DB数设置
%FS:序列x的采样频率
wp=2*pi*f1/Fs;
ws=2*pi*f2/Fs;
% 设计切比雪夫滤波器;
[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);
[bz1,az1]=cheby1(n,rp,wp/pi,'high');
%查看设计滤波器的曲线
[h,w]=freqz(bz1,az1,256,Fs);
h=20*log10(abs(h));
figure('Name','highpass filter','NumberTitle','off');
plot(w,h);title('所设计滤波器的通带曲线');grid on;
y=filter(bz1,az1,x);
end
%失败的滤波器尝试 使用了通过VIP下载的代码(就是参考代码里的‘filter’),但是不知为何调不通。在MATLAB命令行窗口键入fdatool即可弹出设计滤波器的窗口,但是设计完直接保存后生成的是.fda文件,没法直接用,得变成.mat文件;.mat文件也没法直接用,得在编辑器使用“load(‘BPF_130M.mat’)”或者在文件夹双击它。可是,可能我导出为mat文件的参数没选对,看着和参考代码‘filter’一样,就是调不通。捉急~~
资料
以下为艰难曲折探索过程中路过的有帮助的网页。
https://jingyan.baidu.com/article/3052f5a108e14397f21f8658.html
打开.mat文件
https://wenku.baidu.com/view/cf9f236cbd64783e09122b87.html#
fdatool和FIR MegaCore使用技巧的问题
https://blog.csdn.net/yangming2466/article/details/83548946
七种滤波方法
https://blog.csdn.net/flypassion/article/details/82082543?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160343803219724838551089%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160343803219724838551089&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v28-1-82082543.first_rank_ecpm_v3_pc_rank_v2&utm_term=%E9%AB%98%E9%80%9A%E6%BB%A4%E6%B3%A2%E5%99%A8matlab&spm=1018.2118.3001.4187
滤波器资料
https://www.cnblogs.com/lianjiehere/p/3806964.html
fda文件
https://blog.csdn.net/qq_38559814/article/details/86521602
filter
https://www.cnblogs.com/tkppain/p/6691052.html
滤波
matlab编写fie滤波器,数字信号处理大作业mdash;mdash;基于matlab R2019a的男声变女声资料汇总与代码...相关推荐
- 数字信号处理大作业——基于matlab R2019a的男声变女声资料汇总与代码
@数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...
- 用matlab实现女声变男声步骤,数字信号处理大作业——基于matlab R2019a的男声变女声资料汇总与代码...
@数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...
- matlab编写fie滤波器,使用Matlab和CCS设计FIR滤波器
[实例简介] 详细讲解FIR滤波器的原理,Matlab的实现及导入CCS中的应用全过程. 从 中导出滤波器系数. 在 中,选择 ,如图. 在出现的对话框中选择输出文件类型为 ,输出系数类型为 如图所 ...
- 现代数字信号处理课后作业【第七章】IIR巴特沃兹FIR数字滤波器设计
文章目录 现代数字信号处理课后作业[第七章] 7-1 要求设计一个线性相位数字滤波器(矩形窗).Hd(ejw)={e−jwαw1⩽∣w∣⩽w20其它H_d(e^{jw})=\begin{cases} ...
- 实验一熟悉matlab环境,数字信号处理报告实验一:熟悉MATLAB环境.doc
数字信号处理报告实验一:熟悉MATLAB环境.doc 实验一熟悉MATLAB环境一 实验目的1. 熟悉MATLAB的主要操作命令.2. 学会简单的矩阵输入和数据读写.3. 掌握简单的绘图命令.4. 用 ...
- matlab fft谱分析实验报告,数字信号处理实验报告-FFT算法的MATLAB实现.doc
数字信号处理实验报告-FFT算法的MATLAB实现.doc 数字信号处理 实验报告实验二FFT算法的MATLAB实现一.实验目的通过本实验的学习,掌握离散傅立叶变换的理论,特别是FFT的基本算法以及其 ...
- 数字图像处理——大作业 基于车道信息的违法车辆车牌识别
数字图像处理--大作业 基于车道信息的违法车辆车牌识别 一.车牌识别研究现状与分析 二.车牌识别算法原理 2.1 车牌定位 2.1.1 基于RGB阈值的车牌区域初定位 2.1.2 基于数学形态学的车牌 ...
- Mel滤波器组的设计与实现(基于MATLAB和Python)
Mel滤波器组的设计与实现(基于MATLAB和Python) 1.Mel滤波器组介绍 在语音的频谱范围内设置若干带通滤波器Hm(k),0≤m<MHm(k),0≤m<M{{H}_{m}}\l ...
- 19HTML5期末大作业:动画漫影视网站设计——动画漫展学习资料电影模板(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 课程设计网页规划与设计 计算机毕设网页设计源
HTML5期末大作业:动画漫影视网站设计--动画漫展学习资料电影模板(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常 ...
最新文章
- C++实现求解最大公约数和最小公倍数
- 亚马逊瞄准大数据 欲在汽车行业抢占一席之地
- python怎么捕获mysql报错
- python基础4(来自廖雪峰的官方网站)
- 阿里 双11 同款流控降级组件 Sentinel Go 正式 GA,助力云原生服务稳稳稳
- java----java工具包
- 排列出所有子串暴力递归
- oracle 无法解析指定的连接标识符
- 研发效能提升最佳实践的探索
- 利用栈和队列将队列中的元素逆置☆
- 转(每天淘汰你自己)
- 大麦融入阿里电商平台,杰伦演唱会的票会不会好抢点?
- mysql如何容器化_MySQL容器化详细教程
- ASPNET--Basic Info
- 如何快速获得城市道路智慧照明服务认证
- Python学习手册之数据类型
- pandas读取数据时,报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 0: invalid contin
- 像老熊一样学习oracle
- thunderbird收件箱只显示邮件个数,无法打开邮件
- S32K系列S32K144学习笔记——CAN
热门文章
- 2023-03-05:ffmpeg推送本地视频至lal流媒体服务器(以RTMP为例),请用go语言编写。
- 微信中点击链接或扫描二维码跳转外部浏览器的方法
- python+django+vue消防知识宣传网站
- js字符串截取后4位
- Adobe Photoshop CC 2019 for Mac安装所遇问题
- 苹果天气不显示_今天才知道,简单几步,就能让你的iPhone手机显示锁屏天气
- 计算机原理实验中断计数器加一,数字秒表系统的设计.doc
- python游戏开发引擎_基于Python的网络游戏脚本系统的设计与实现
- 物理引擎学习08-AABB树
- python - .py文件打包成.exe文件, 发送给别人