%**************************************************************************
%逐浈帧求取语音信号的共振峰
%所得s为一个矩阵,存储了每帧语音信号所对应的共振峰值
%**************************************************************************
function [s,s_bw,s_amp]=pick_peak(sound,samplerate)
%sex:1--男声,2--女声
% sex=1;
%对语音信号进行预处理,得到分帧后的信号
Sw=pre(sound,samplerate);
[frame_number,point]=size(Sw);
%逐帧修正,EST的初始值为每帧初始值的平均
for t=1:1:frame_number
[ppp,bw,amp]=find_peak(Sw(t,:),samplerate,1);
pp(t,:)=[ppp,zeros(1,4-length(ppp))];
end
for t=1:1:4
a=find(pp(:,t)==0);
if isempty(a)
l=0;
else
l=length(a);
end
EST(t)=sum(pp(:,t)/(frame_number-l));
end
% if sex==1
% EST(1)=320;
% EST(2)=1440;
% EST(3)=2760;
% EST(4)=3200;
% elseif sex==2
% EST(1)=480;
% EST(2)=1760;
% EST(3)=3200;
% EST(4)=3520;
% end
% EST=mean(p,1);
%s用来记录当前帧的共振峰估计值
s=zeros(frame_number,4);
s_bw=zeros(frame_number,4);
s_amp=zeros(frame_number,4);
%开始逐帧处理
for t=1:1:frame_number
r=1;
while(s(t,1)==0 || s(t,2)==0 || s(t,3)==0)
[p,bw,amp]=find_peak(Sw(t,:),samplerate,r);
if r>0.88
r=r-0.02;
else
break;
end
peak_number=length(p);
%p_mark用来标注被分配的峰值,已经分配的为0,未被分配的为1;
p_mark=ones(1,peak_number);
%e用来存放峰值与预测值的差
e=zeros(1,peak_number);
%将提取出的峰值对应的填到每个共振峰的位置上,要使得对应的共振峰值与EST值最为接近
for x=1:1:4
for y=1:1:peak_number
e(y)=abs(p(y)-EST(x));
end
[a,b]=min(e);
s(t,x)=p(b);
s_bw(t,x)=bw(b);
s_amp(t,x)=amp(b);
p_mark(b)=0;
end
%如果两个共振峰填入的峰值相同,则将该值保留在与EST值差距最小的位置,而将另外一个共振峰值除去
for x=1:1:3
for y=(x+1):1:4
if s(t,x)==s(t,y)
e(x)=abs(s(t,x)-EST(x));
e(y)=abs(s(t,y)-EST(y));
if e(x)>e(y)
s(t,x)=0;
else
s(t,y)=0;
end
end
end
end
%处理没有分配的峰值
for k=1:1:peak_number
if p_mark(k)~=0
if s(t,k)==0
s(t,k)=p(k);
p_mark(k)=0;
elseif ((amp(k)>=s_amp(t,k)*0.5) && k~=4)
if (s(t,k+1)==0)
s(t,k+1)=s(t,k);
s_bw(t,k+1)=s_bw(t,k);
s_amp(t,k+1)=s_amp(t,k);
s(t,k)=p(k);
s_bw(t,k)=bw(k);
s_amp(t,k)=amp(k);
p_mark(k)=0;
end
elseif (amp(k)>=s_amp(t,k)*0.5) && (k~=1)
if (s(t,k-1)==0)
s(t,k-1)=s(t,k);
s_bw(t,k-1)=s_bw(t,k);
s_amp(t,k-1)=s_amp(t,k);
s(t,k)=p(k);
s_bw(t,k)=bw(k);
s_amp(t,k)=amp(k);
p_mark(k)=0;
end
end
end
end
for k=1:1:4
if (s(t,k)~=0)
EST(k)=s(t,k);
end
end
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的语音信号处理中的语音变声代码加音频+使用说明文档.rar
共36个文件
m:19个
scp:11个
wav:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 62 浏览量
2024-05-23
09:59:14
上传
评论
收藏 156KB RAR 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的语音信号处理中的语音变声代码加音频+使用说明文档.rar 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于MATLAB实现的语音信号处理中的语音变声代码加音频+使用说明文档.rar (36个子文件)
formant_extract
formant_extract
scp
fmt0_part.scp 43B
lfmt_all.scp 361KB
lfmt0_all.scp 378KB
wav_part.scp 36B
try.scp 3KB
fmt_part.scp 123B
fmt_all.scp 344KB
wav_all.scp 344KB
lfmt0_part.scp 90B
fmt0_all.scp 361KB
lfmt_part.scp 86B
a_1.mfc 19KB
pre.m 1KB
fmt_differ.m 2KB
data 4B
data.m 199B
smoothing.m 3KB
main.m 2KB
my program
fmt_div_log.m 2KB
fmt_log_div.m 2KB
fmt_log.m 2KB
e.wav 54KB
a_1.wav 39KB
pick_peak.m 4KB
find_peak.m 1KB
voicemark.m 875B
formant_get.m 1KB
non_differ
fmt_div_log.m 2KB
fmt_div_log0_fir.m 2KB
fmt_log_div0.m 2KB
fmt_div_log0.m 2KB
fmt_log_div.m 2KB
fmt_div_log_fir.m 2KB
fmt_log.m 2KB
ee.wav 54KB
使用说明文档.md 13KB
共 36 条
- 1
资源评论
IT狂飙
- 粉丝: 4823
- 资源: 2654
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 同济大学作业之-LPC分析(男声变女声)和PCM编码
- java超市订单管理系统源码数据库 MySQL源码类型 WebForm
- 记录windows安装nvm:nvm-setup-2024-11-16.exe.zip
- 同济大学数字信号处理实验(包含实验报告)
- Kettle 是Kettle E.T.T.L. Envirnonment只取首字母的缩写,这意味着它被设计用来帮助你实现你的
- java微信小程序B2C商城 H5+APP源码 前后端分离数据库 MySQL源码类型 WebForm
- matplotlib 绘制随机漫步图
- java版快速开发框架后台管理系统源码数据库 MySQL源码类型 WebForm
- Java实现植物大战僵尸简易版
- matplotlib 绘制随机漫步图
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功