首页 > 编程语言 >基于平均不同分辨率的共振峰跟踪算法matlab仿真

基于平均不同分辨率的共振峰跟踪算法matlab仿真

时间:2023-02-17 23:32:51浏览次数:41  
标签:仿真 tmp 分辨率 length matlab 语音 round 共振 ct

1.算法描述 共振峰轨迹的自动跟踪算法,其特点是不借助于其它的信息来源,仅仅是基于语谱图信息,来确定语谱图上前四个共振峰频率的位置和它们关于时间轴的轨迹.算法由三个层面构成;第一层面是进行频率分布的分析,以决定一个最佳的共振峰搜索起始位置;第二层面是采用双搜索算法,来跟踪随时间变化的共振峰轨迹;第三层面是解决某些冲突现象.

   在语音声学中,人声也同样受自身生理如鼻孔、咽腔、口腔大小的影响有自身的共振峰区。通过利用这些共鸣空间的形状和大小不同的变化(例如改变咽喉、嘴形),我们就能改变声音的共振峰。我们之所以能够区分不同的人声、元音,主要也是依靠它们的共振峰分布的位置。

   共振峰反映了声道谐振特性的重要特点,它代表了发音信息的最直接的来源。改变共振峰可以产生所有的原音和某些辅音,在共振峰中也包含辅音的重要信息。人在语音感知中也利用了共振峰信息,所以共振峰已经广泛应用于语音识别的主要特征和语音编码传输的基本信息。

   一个语音的共振峰模型,只用前三个时变共振峰频率就可以得到可懂度很好的合成浊音。共振峰信息包含在语音信号的频谱包络中,谱包络的峰值基本对应于共振峰频率,因此一切共振峰估计都是直接或间接地从频谱包络进行考察,关键是估计语音频谱包络。语音信号共振峰的估计,在语音信号合成、语音信号自动识别和低比特率语音信号传输等方面都起着重要作用。
   语音信号从整体来看其特征及表征其本质特征的参数均是随时间而变化的,所以它是个非平稳态过程,不能用处理平稳信号的数字信号处理技术进行分析处理。但是在一个短的时间范围内(一般认为在10~30ms的短时间内),语音信号的特性基本保持相对稳定,因而可以将其看作一个准稳态过程,即语音信号具有短时平稳性。

2.仿真效果预览 matlab2022a仿真结果如下:

2.png1.png3.png

3.MATLAB核心程序

 
bDisplay = 1;
 
Fsamps = 256; % sampling resolution in frequency dimension
Tsamps = round(length(y)/18000*256); % sampling resolution in time dimension
 
 
tmp_img1 = zeros(Fsamps,Tsamps);
ct = 0;
 
numiter = 8; % number of iterations to run. seemed like a good number
 
 
for 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 resolution
    tmp_img2 = interp2(tmp_img1,xi,yi);
    
    ct = ct+1;
    
    % Interpolate formant tracks and pitch tracks
    pt2(:,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)')';
    
    % Normalize
    tmp_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;

标签:仿真,tmp,分辨率,length,matlab,语音,round,共振,ct
From: https://blog.51cto.com/matworld/6064562

相关文章

  • 基于平均不同分辨率的共振峰跟踪算法matlab仿真
    1.算法描述       共振峰轨迹的自动跟踪算法,其特点是不借助于其它的信息来源,仅仅是基于语谱图信息,来确定语谱图上前四个共振峰频率的位置和它们关于时间轴的轨......
  • 软件教程-使用Quartus+ModelSim联合仿真
    最后修改日期:2023/02/17本文前提是用VerilogTestbench文件(.vt)仿真。相较于波形仿真而言,此方法较为通用。下面以QuartusPrime18.0Standard+MentorGraphicsMod......
  • 【MATLAB】绘图
    1绘图命令Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示:线型颜色标记符号- 实线b蓝色.  点s方块: 虚线g绿色o圆圈......
  • 如何在不同分辨率下,等比例显示图片,即图片自适应分辨率。
    前言:用于展示生产线数据相关信息在车辆生产线的小屏幕上【西门子的,比1980*1080的要小一圈,比pad要大一圈,专门给生产线做的】展示数据。数据用的flex布局,很简单的解决了自......
  • LS信道估计,MMSE信道估计以及CS信道估计算法的误码率对比仿真
    up目录一、理论基础二、核心程序三、测试结果一、理论基础所谓信道估计,就是从接收数据中将假定的某个信道模型的模型参数估计出来的过程。如果信道是线性的话,那......
  • MATLAB 一些常用的处理数据函数
    记录一些简单的功能方便及时调出来看,并附上一些参考链接,这样就不用总是重复查了......多学一个就多补充一个。统计数组中指定元素数量参考链接:https://www.ilovematl......
  • Dijkstra的matlab实现
    任务描述:生成20x20个点,使用Dijkstra算法让找出点(1,1)到(20,20)的最短路径,期中有随机的120个点是不通的,这120个点不包括起点和终点随机五次的实验结果图,代码在后面1.F......
  • 常用分式规划变换简述与仿真实验
    常用分式规划变换简述与仿真实验在做课题时遇到一个子问题为线性分式规划问题,这里尝试用不同方法求解,同时做一些记录!1.线性分式规划问题模型2.Charnes-Cooper变......
  • 基于免疫算法的认知无线电资源分配优化算法的matlab仿真
    1.算法描述       认知无线电(CR)的概念来自JosephMitolo博士1999年的开创性工作。它自适应地调整内部通信机制,通过学习,了解等实时变化特定的无线电操作参数(功率,载......
  • 基于Graph-Cut算法的图像目标分割matlab仿真
    1.算法描述       Graphcuts是一种十分有用和流行的能量优化算法,在图像处理领域普遍应用于前后背景分割(Imagesegmentation)、立体视觉(stereovision)、抠图(Imagem......