【共振峰跟踪】通过平均不同分辨率的方法跟踪共振峰,基于时频lpc的频谱图的MATLAB仿真
1.软件版本
MATLAB2021a
2.本算法理论知识
通过平均不同分辨率的方法跟踪共振峰,基于时频lpc的频谱图。此外,它还决定了语音信号的基音轮廓。
3.核心代码
function [fmap,pt2] = ftrack(y,fs)bDisplay = 1;Fsamps = 256; % sampling resolution in frequency dimension
Tsamps = round(length(y)/18000*256); % sampling resolution in time dimensiontmp_img1 = zeros(Fsamps,Tsamps);
ct = 0;numiter = 8; % number of iterations to run. seemed like a good numberfor i=2.^(8-8*exp(-linspace(1.5,10,numiter)/1.4)), % Determine the time-frequency distribution at the current fix(length(y)/round(i))round(i)[tmp_img1,ft1,pt1] = lpcsgram(y,fix(length(y)/round(i)),round(i),fs);% Get the dimensions of the output time-frequency image[M,N] = size(tmp_img1);% Create a grid of the final resolution[xi,yi] = meshgrid(linspace(1,N,Tsamps),linspace(1,M,Fsamps));% Interpolate returned TF image to final resolutiontmp_img2 = interp2(tmp_img1,xi,yi);ct = ct+1;% Interpolate formant tracks and pitch trackspt2(:,ct) = interp1([1:length(pt1)]',pt1(:),linspace(1,length(pt1),Tsamps)');ft2(:,:,ct) = interp1(linspace(1,length(y),fix(length(y)/round(i)))',Fsamps*ft1',linspace(1,length(y),Tsamps)')';% Normalizetmp_img3(:,:,ct) = tmp_img2/max(tmp_img2(:));if bDisplay,subplot(221);imagesc(tmp_img1);axis xy;subplot(222);imagesc(tmp_img2);axis xy;subplot(223);imagesc(squeeze(mean(tmp_img3,3)));axis xy;drawnow;end;
end% Determine mean tfr image and formant track
tmp_img4 = squeeze(mean(tmp_img3,3)); % tfr
ft3 = squeeze(nanmean(permute(ft2,[3 2 1]))); % if bDisplay,subplot(224);imagesc(tmp_img4);axis xy;hold on;plot(ft3,'y');
end;% convert fmnts to image
tmap = repmat([1:Tsamps]',1,3);
idx = find(~isnan(sum(ft3,2)));
fmap = ft3(idx,:);
tmap = tmap(idx,:);% filter formant tracks to remove noise
[b,a] = butter(9,0.1);
fmap = round(filtfilt(b,a,fmap));pt3 = nanmean(pt2');
pt3 = (pt3-nanmin(pt3))/(nanmax(pt3)-nanmin(pt3));% Rescaling is done after display code
if bDisplay,imap = zeros(Fsamps,Tsamps);ind = sub2ind(size(imap),fmap(:),tmap(:));imap(ind) = 1;tpts = tmap(:,1);figure;subplot(221);imagesc(imap);axis xy;hold on;plot(tpts,fmap(:,1),tpts,fmap(:,2),tpts,fmap(:,3));idx = [1:5]';plot(tpts(idx),fmap(idx,1),'.-',tpts(idx),fmap(idx,2),'.-',tpts(idx),fmap(idx,3),'.-');subplot(222);% Create a wider formant trackanisomask = anisodiff(imap,6,50,0.01,1);imagesc(anisomask>0);axis xy;hold on;plot(tpts,fmap(:,1),tpts,fmap(:,2),tpts,fmap(:,3));idx = [1:5]';plot(tpts(idx),fmap(idx,1),'.-',tpts(idx),fmap(idx,2),'.-',tpts(idx),fmap(idx,3),'.-');subplot(223);imagesc(tmp_img4);axis xy;hold on;plot(tpts,fmap(:,1),'r',tpts,fmap(:,2),'r',tpts,fmap(:,3),'r');idx = [1:5]';plot(tpts(idx),fmap(idx,1),'.-',tpts(idx),fmap(idx,2),'.-',tpts(idx),fmap(idx,3),'.-');subplot(224);imagesc(tmp_img4.*(anisomask>0));axis xy;hold on;plot(tpts,fmap(:,1),'r-',tpts,fmap(:,2),'r-',tpts,fmap(:,3),'r-');
% idx = [1:5]';
% plot(tpts(idx),fmap(idx,1),'.-',tpts(idx),fmap(idx,2),'.-',tpts(idx),fmap(idx,3),'.-');plot(256*pt3,'y.-');
end;% Rescale to Actual Formants and take the mean of pitch tracks
fmap = (fs/2)*(fmap/256);
pt2 = nanmean(pt2');
4.操作步骤与仿真结论
5.参考文献
[1]杨凌, 杨海波, 高新春. 基于跟踪共振峰的语音增强算法[J]. 电子与信息学报, 2009(10):5.
D201
6.完整源码获得方式
方式1:微信或者QQ联系博主
方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码
【共振峰跟踪】通过平均不同分辨率的方法跟踪共振峰,基于时频lpc的频谱图的MATLAB仿真相关推荐
- 基于cnn的短文本分类_基于时频分布和CNN的信号调制识别分类方法
文章来源:IET Radar, Sonar & Navigation, 2018, Vol. 12, Iss. 2, pp. 244-249. 作者:Juan Zhang1, Yong Li2 ...
- matlab程序实例光频梳,一种基于光频梳和频谱整形的任意波形发生装置及方法与流程...
本申请属于微波光子信号生成领域,具体涉及一种基于光频梳和频谱整形的任意波形发生装置及方法. 背景技术: 目前半导体激光器.光纤光学和微波天线.微波单片集成电路等光学与微波相结合的技术正在高速发展,产生 ...
- 基于时频变换的脑波信号(EEG)处理方法
离散傅里叶变换(DFT) 在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离 散周期信号的主值序列.即使对有限长的离散信号作DFT,也应当将其看作其周期延拓的变 ...
- ccot 目标跟踪全称_一种焊缝跟踪系统的实时姿态估计方法与流程
本发明属于焊接机器人焊缝跟踪领域,特别涉及一种焊缝跟踪系统的实时姿态估计方法. 背景技术: 现在的焊接机器人基本上都是在焊接之前先进行示教,让机器人每次都走一个固定的轨迹,这种方式有一个好处就是重复精 ...
- 常见的超分辨率处理方法
前言 本文介绍了几种图像super resolution的方法,我不是专门做图像超分辨率处理的,只是之前项目涉及到,进行了一些调研,现在整理出来. Interpolation based includ ...
- 时频分析方法总结:傅里叶级数及傅里叶变换、STFT 、小波变换、Wigner-Ville 分布
前言: 一.傅里叶变换的机理 一个能量无限的正弦信号和源信号乘积并求和得到某个频率下的系数,随着频率的增加,正弦信号改变,再次求得系数,依次构成了频谱图 傅里叶级数及傅里叶变换 https://blo ...
- 单目标跟踪 (一)相关滤波器 方法综述
<Handcrafted and Deep Trackers: Recent Visual Object Tracking Approachesand Trends> MOSSE: Min ...
- php执行跟踪_PHP使用debug_backtrace方法跟踪调试代码调用详解
本文实例讲述了PHP使用debug_backtrace方法跟踪调试代码调用.分享给大家供大家参考,具体如下: 在开发过程中,例如要修改别人开发的代码或调试出问题的代码,需要对代码流程一步步去跟踪,找到 ...
- 因特尔显卡自定义分辨率_电脑显示器分辨率超频教程:1080P超2K分辨率的方法...
我们玩过CPU超频.显卡超频.内存超频等,相信不少用户还没有尝试过显示器超频,其实在前段时间,装机之家为广大爱好者发布了一篇[电脑显示器刷新率怎么超频?电脑显示器提高屏幕刷新率超频教程]文章,我们将一 ...
最新文章
- Java语法基础-序列化
- 单语言表征如何迁移到多语言去?
- 北京科技大学天津学院第三届智能车校内赛总决赛完美落幕
- 死信交换机与死信队列
- 在SharePoint 2010系统中安装RBS FILESTREAM Provider
- 爱优腾芒“跑马圈地”,AI广告营销能拯救“盈利难”的视频平台吗?
- 关于链表的面试题(持续更新)
- 计算机一级怎么描述,计算机一级「关于RGB正确的描述的是」相关单选题
- 这篇文章可以满足你80%日常工作!一线互联网公司面经总结
- 作业调度C语言编写,【作业调度方案】 (C语言代码)
- Sencha Architect 2 的使用
- Javascript 面向对象中的构造函数和原型对象
- mysql能存储的编码范围_mysql存储乱码之编码问题
- mysql数据类型范围导致失败
- 设计模式之模板模式(模板方法)
- 易语言解压服务器中压缩包,易语言取压缩包中的文件列表源码
- 用例图、功能模块图和数据库的区别
- Redisson分布式锁学习总结:RedissonMultiLock 如何同时锁住N个资源
- FlashBuilder找不到所需要的AdobeFlashPlayer调试器版本的解
- IT行业的6大热门岗位,薪酬都有多高?