基于音调跟踪找到音调同步窗口 [英] find Pitch-synchronous windowing based on pitch tracking

查看:196
本文介绍了基于音调跟踪找到音调同步窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如评论链接所示,提取了Talkin语音箱中音调跟踪的鲁棒算法的音高(功能名称为"fxrapt").

As seen in comment link a pitch by Talkin’s Robust Algorithm for Pitch Tracking in voicebox (function name is "fxrapt") is extracted.

http://www .ee.ic.ac.uk/hp/staff/dmb/voicebox/doc/voicebox/fxrapt.html

但是,我需要通过检测每个音调周期内的最大幅度来找到LP误差信号中的音调脉冲.对于每个音调脉冲,两个音调周期的汉明窗长.如果T(i-1),T(i),T(i + 1)表示三个连续音调脉冲的位置.如波纹管连接图所示,如何为跨度从T(i-1)到T(i + 1)的音调脉冲设计分析窗口?

However, I need to find pitch pulses in the LP error signal by detecting the maximum amplitude within each pitch period. For each pitch pulse, a Hamming window of two pitch periods long. if T(i-1), T(i), T(i+1) denote the locations of three successive pitch pulses. How can I design a analysis window for the pitch pulse at spans from T(i-1) to T(i+1), as illustrated in bellow link Figure ?

我正在寻找MATLAB代码. 如果有人可以帮助我,我将不胜感激. 谢谢.

I am looking for MATLAB code for it. I will really appreciate, if anyone can help me. Thanks.

推荐答案

步骤:

  • 应用音高轨迹来查找每一帧的周期,而不要使用 在您的音调轨道上过度分配,您需要同步且线性地进行.
  • 每次找到周期= P"时,都在1到P * 2范围内的信号上搜索最大绝对振幅
  • Apply the pitch track to find the period at each frame, not use overalp in your pitch track, you need do it synchronous and linearly.
  • At every time that you find the Period = P search the maximun absolute amplitude on the signal between the range 1 to P*2

这两个步骤可以像这样完成:

these two steps can be done like this:

while ( (k+Step-1) <= Nsamples )

    frame = x(k:k+steps-1);

    P=PITCHTRACK_FUNCTION_HERE

    [v, l] = max(abs(frame(1:P*2)));

   if count == 1

      marks(count) = l;

   else

     marks(count) = l+k-1;

  count = count +1;

  k=k+Step;

end

  • 您现在已经拥有所有标记,都指向您的整个信号,然后步行 围绕矢量标记以应用两个间距的汉明窗 时间长!

    • you now have all marks referring to your entire signal, then walk around the vector marks to aplly a Hamming window of two pitch periods long !

      test=zeros(length(x),1);
      
      for p=2:length(marks)-2
      
         last=marks(p-1);
      
         next=marks(p+1);
      
      
         test(last:next)=test(last:next) + x(last:next) .*  hamming(length(x(last:next)));
      
      
      
       end
      

    • PS:

      x =您的信号

      Nsamples =长度(x)

      Nsamples = length(x)

      k =以1开头

      Step = 256或512或1024或2048

      Step = 256 or 512 or 1024 or 2048

      这篇关于基于音调跟踪找到音调同步窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆