主要内容

距跟踪使用多个音高估计,嗯

这个例子展示了如何执行跟踪使用多个音高估计,八度和中值平滑和隐马尔可夫模型(HMM)。

介绍

基音检测是一个基本构建块在语音处理,语音编码、和音乐信息检索(MIR)。在语音和说话人识别,音高是用作功能在机器学习系统。对于呼叫中心,距是用来表示客户的情绪状态和性别。在言语治疗,音高是用来表示和分析病理和诊断生理缺陷。在米尔,沥青用于分类音乐,query-by-humming系统,主要功能部件在歌曲识别系统。

基音检测清洁的演讲主要是考虑解决的问题。基音检测噪声和结组跟踪保持困难的问题。有许多算法被广泛报道的文献与已知的权衡计算成本和不同类型的噪声鲁棒性。

通常,一个基音检测算法(PDA)估计,对于一个给定的时刻。然后音高估计是验证或修正跟踪系统。俯仰跟踪系统执行的连续性音高估计随着时间的推移。

这个示例提供了一个示例函数,HelperPitchTracker,实现了一个跟踪系统。这个例子穿过算法实现的HelperPitchTracker函数。

问题总结

加载一个音频文件和相应的参考音频文件。参考音高是报道平均每10毫秒和确定几个第三方算法在干净的语音文件。地区没有表示演讲表示为

[x, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);负载TruePitch.mattruePitch

使用球场函数来估计音频的音高。

(f0、loc) =音高(x, fs);

两个指标通常在定义距报道错误:总周节误差(GPE)和表达决策错误(VDE)。因为距算法在本例中不提供一个表达的决定,只有GPE报道。在这个例子中,GPE外面音高估计的百分比计算 ± 10 % 参考音高在张成的空间表达的部分。

计算区域的GPE演讲和阴谋的结果。听干净的音频信号。

isVoiced = ~ isnan (truePitch);f0 (~ isVoiced) =南;p = 0.1;GPE =意味着(abs (f0 (isVoiced) -truePitch (isVoiced)) > truePitch (isVoiced)。* p)。* 100;t =(0:长度(x) 1) / fs;t0 = (locs-1) / fs;声音(x, fs)图(1)tiledlayout (2, 1) nexttile情节(t, x) ylabel (“振幅”)标题(“估计清洁信号”)nexttile情节(t0, [truePitch, f0])传说(“参考”,“估计”位置=“西北”)ylabel (“F0 (Hz)”)包含(“时间(s)”)标题(" GPE = "+圆(GPE、2) +“(%)”)

混合噪声的语音信号 - - - - - - 5 dB信噪比。

使用球场函数在嘈杂的声音估计随着时间的推移。计算区域的GPE言论表达和阴谋的结果。听吵闹的音频信号。

desiredSNR = 5;x = mixSNR (x,兰德(大小(x)), desiredSNR);(f0、loc) =音高(x, fs);f0 (~ isVoiced) =南;GPE =意味着(abs (f0 (isVoiced)——truePitch (isVoiced)) > truePitch (isVoiced)。* p)。* 100;声音(x, fs)图(2)tiledlayout (2, 1) nexttile情节(t, x) ylabel (“振幅”)标题(“估计噪声信号”)nexttile情节(t0, [truePitch, f0])传说(“参考”,“估计”位置=“西北”)ylabel (“F0 (Hz)”)包含(“时间(s)”)标题(" GPE = "+ GPE +“(%)”)

这个例子展示了如何提高噪声语音信号的音高估计使用多个候选人一代,octave-smoothing median-smoothing,嗯。

在这个示例中描述的算法实现函数的例子HelperPitchTracker。了解HelperPitchTracker函数,输入帮助HelperPitchTracker在命令行中。

帮助HelperPitchTracker
HelperPitchTracker跟踪音频信号的基频f0 = HelperPitchTracker (audioIn fs)返回估计基频轮廓的音频输入。列的输入被视为个人渠道。HelperPitchTracker函数使用多种基音检测算法来产生候选人,并使用八度平滑和隐马尔科夫模型回归估计的基本频率。f0 = HelperPitchTracker (…, HopLength, HopLength)指定样本的数量每一跳。距估计更新每一跳。HOPLENGTH指定为一个标量整数。如果未指定,HOPLENGTH默认为圆形(0.01 * fs)。f0 = HelperPitchTracker (…, OctaveSmoothing, TF)指定是否应用八度平滑。指定为真或假。如果未指定,TF默认值为true。 f0 = HelperPitchTracker(...,'EmissionMatrix',EMISSIONMATRIX) specifies the emission matrix used for the HMM during the forward pass. The default emission matrix was trained on the Pitch Tracking Database from Graz University of Technology. The database consists of 4720 speech segments with corresponding pitch trajectories derived from laryngograph signals. The emission matrix corresponds to the probability that a speaker leaves one pitch state to another, in the range [50, 400] Hz. Specify the emission matrix such that rows correspond to the current state, columns correspond to the possible future state, and the values of the matrix correspond to the probability of moving from the current state to the future state. If you specify your own emission matrix, specify its corresponding EMISSIONMATRIXRANGE. EMISSIONMATRIX must be a real N-by-N matrix of integers. f0 = HelperPitchTracker(...,'EmissionMatrixRange',EMISSIONMATRIXRANGE) specifies how the EMISSIONMATRIX corresponds to Hz. If unspecified, EMISSIONMATRIXRANGE defaults to 50:400. [f0,loc] = HelperPitchTracker(...) returns the locations associated with each pitch decision. The locations correspond to the ceiling of the center of the analysis frames. [f0,loc,hr] = HelperPitchTracker(...) returns the harmonic ratio associated with each pitch decision. See also pitch, voiceActivityDetector

俯仰跟踪系统的描述

图形概述球场的跟踪系统中实现函数的例子。下面的代码遍历的内部工作HelperPitchTracker函数的例子。

1。生成多个音高的候选人

在第一阶段的跟踪系统,生成多个音高候选人使用多个的基音检测算法。主要的候选人,通常更准确,使用算法生成基于剩余谐波的总和(SRH) [2与振幅压缩算法和音高估计滤波器(PEFAC) [3)算法。

缓冲区的输入信号为重叠框架,然后使用audio.internal.pitch.SRH生成5候选人每一跳。还返回球场每个候选人的相对的信心。策划的结果。

范围= [50400];HOPLENGTH =圆(fs。* 0.01);%缓冲成所需大小xBuff_SRH =缓冲区(x,圆(0.025 * fs),圆(0.02 * fs),“nodelay”);%定义距参数params_SRH = =结构(方法“SRH”,范围=范围,WindowLength =圆(fs * 0.06),OverlapLength =圆(fs * 0.06 -hoplength),SampleRate = fs,NumChannels =大小(x, 2),SamplesPerChannel =大小(x, 1));multiCandidate_params_SRH =结构(NumCandidates = 5, MinPeakDistance = 1);%得到音高估计和信心[f0_SRH, conf_SRH] = audio.internal.pitch.SRH (xBuff_SRH x,params_SRH,multiCandidate_params_SRH);
图(3)tiledlayout (2, 1) nexttile情节(t0, f0_SRH) ylabel (“F0候选人(Hz)”)标题(“从SRH音高估计多个候选人”conf_SRH) nexttile情节(t0) ylabel (“相对的信心”)包含(“时间(s)”)

生成一组额外的主要候选人使用PEF算法和相关的信心。生成备份相关的候选人和别人使用归一化相关函数(NCF)算法和倒频谱间距确定(CEP)算法。日志只有最自信的估计从备份候选人。

xBuff_PEF =缓冲区(x,圆(0.06 * fs),圆(0.05 * fs),“nodelay”);params_PEF = =结构(方法“PEF”,范围=范围,WindowLength =圆(fs * 0.06),OverlapLength =圆(fs * 0.06 -hoplength),SampleRate = fs,NumChannels =大小(x, 2),SamplesPerChannel =大小(x, 1));multiCandidate_params_PEF =结构(NumCandidates = 5, MinPeakDistance = 5);[f0_PEF, conf_PEF] = audio.internal.pitch.PEF (xBuff_PEF,params_PEF,multiCandidate_params_PEF);xBuff_NCF =缓冲区(x,圆(0.04 * fs),圆(0.03 * fs),“nodelay”);xBuff_NCF = xBuff_NCF (: 2: end-1);params_NCF = =结构(方法“NCF”,范围=范围,WindowLength =圆(fs * 0.04),OverlapLength =圆(fs * 0.04 -hoplength),SampleRate = fs,NumChannels =大小(x, 2),SamplesPerChannel =大小(x, 1));multiCandidate_params_NCF =结构(NumCandidates = 5, MinPeakDistance = 1);f0_NCF = audio.internal.pitch.NCF (xBuff_NCF,params_NCF,multiCandidate_params_NCF);xBuff_CEP =缓冲区(x,圆(0.04 * fs),圆(0.03 * fs),“nodelay”);xBuff_CEP = xBuff_CEP (: 2: end-1);params_CEP = =结构(方法“CEP”,范围=范围,WindowLength =圆(fs * 0.04),OverlapLength =圆(fs * 0.04 -hoplength),SampleRate = fs,NumChannels =大小(x, 2),SamplesPerChannel =大小(x, 1));multiCandidate_params_CEP =结构(NumCandidates = 5, MinPeakDistance = 1);f0_CEP = audio.internal.pitch.CEP (xBuff_CEP,params_CEP,multiCandidate_params_CEP);BackupCandidates = [f0_NCF (: 1), f0_CEP (: 1)];

2。确定长期的中位数

候选人的长期平均间距是用来减少螺距的候选人。长期平均计算,首先计算谐波比率。音高估计只有有效的言论表达的地区,那里的谐波比率高。

hr = harmonicRatio (xBuff_PEF fs,=汉明(窗口大小(xBuff_NCF, 1),“周期”),OverlapLength = 0);图(4)tiledlayout (2, 1) nexttile情节(t, x) ylabel (“振幅”)nexttile情节(t0、人力资源)ylabel (“谐波比率”)包含(“时间(s)”)

使用谐波比率阈值区域不包括长期的言论表示中位数计算。确定长期平均后,计算球场上下边界的候选人。在这个例子中,上下边界确定经验2/3和4/3中位数。候选人这些界限以外的惩罚在接下来的阶段。

idxToKeep =逻辑(movmedian(人力资源>((3/4)*马克斯(人力资源),3));longTermMedian =值([f0_PEF (idxToKeep 1); f0_SRH (idxToKeep 1)]);低= max ((2/3) * longTermMedian范围(1));上= min ((4/3) * longTermMedian范围(2));图(5)tiledlayout (1,1) nexttile情节(t0, [f0_PEF f0_SRH])情节(t0, longTermMedian。*的(大小(f0_PEF, 1)),r:“线宽= 3)情节(t0,上层。*的(大小(f0_PEF, 1)),“r”线宽= 2)情节(t0,低。*的(大小(f0_PEF, 1)),“r”线宽= 2)包含(“时间(s)”)ylabel (“频率(赫兹)”)标题(“长期值”)

3所示。候选人减少

默认情况下,返回的候选人的基音检测算法按降序排序的信心。减少任何的信心主要候选人在上下界限之外。减少10倍的信心。排序PEF和候选人的SRH算法按照降序排列的信心。连接的候选人,只保留最自信的两个候选人从每个算法。

情节的候选人。

无效的= f0_PEF >低| f0_PEF >上;conf_PEF(无效)= conf_PEF(无效)/ 10;[conf_PEF,顺序]=排序(conf_PEF 2“下”);i = 1:尺寸(f0_PEF, 1) f0_PEF(我:)= f0_PEF(我订单(我,:));结束无效的= f0_SRH >低| f0_SRH >上;conf_SRH(无效)= conf_SRH(无效)/ 10;[conf_SRH,顺序]=排序(conf_SRH 2“下”);i = 1:尺寸(f0_SRH, 1) f0_SRH(我:)= f0_SRH(我订单(我,:));结束候选人= [f0_PEF (:, 1:2), f0_SRH (: 1:2)];信心= [conf_PEF (:, 1:2), conf_SRH (: 1:2)];图(6)情节(t0,候选人)包含(“时间(s)”)ylabel (“频率(赫兹)”)标题(“减候选人”)

4所示。让独特的

如果两个或两个以上的候选人在给定5赫兹,设置候选人说,和他们的信心。

跨度= 5;confidenceFactor = 1;r = 1:尺寸(候选人,1)c = 1:尺寸(候选人,2)tf = abs(候选人(r, c)候选人(r,:)) <跨度;候选人(r、c) =意味着(候选人(r, tf));信心(r、c) =总和(信心(r, tf)) * confidenceFactor;结束结束候选人= max (min(候选人,400),50);

5。提出迭代八度平滑的嗯

候选人已经减少了,你可以给他们一个嗯实施连续性约束。球场轮廓通常是连续的语音信号分析时10 ms啤酒花。球场上的概率从一个状态转移到另一个被称为跨时间发射概率。发射概率可以被封装成一个矩阵描述的概率从任何音调值在设定范围内任何其他在设定范围内。在本例中使用的发射矩阵使用格拉茨创建的数据库。(1]

负载发射矩阵和相关的范围。情节的概率密度函数(PDF)投入150 Hz的状态。

负载EmissionMatrix.matemissionMatrixemissionMatrixRange现状后=150年;图(7)情节(emissionMatrixRange (1): emissionMatrixRange (2), emissionMatrix(现状后,emissionMatrixRange(1) 1:))标题(“排放PDF”+现状后+“赫兹”)包含(“下一个音高值(Hz)”)ylabel (“概率”)

HMM发射概率,在这个例子中结合使用执行的连续性和相对音高的信心。在每一跳,发射概率是结合相关矩阵来创建一个信心。每条路径的最佳选择是决定矩阵的最大信心。这个示例中使用的嗯还假定只有一个路径可以分配给一个给定的状态(维特比算法的假设)。

除了嗯,这个例子监视器的八度音阶跳相对于沥青的短期平均路径。如果检测到一个八度跳,那么备份音高候选人被添加作为HMM的选项。

%预先配置numPaths = 4;numHops =大小(候选人,1);日志= 0 (numHops 3 numPaths);suspectHops = 0 (numHops, 1);%与octave-smoothing迭代hopNumber = 1: numHops nowCandidates =候选人(hopNumber:);nowConfidence =信心(hopNumber:);%去除八度跳跃如果hopNumber > 100 numCandidates =元素个数(nowCandidates);%短期加权值medianWindowLength = 50;aTemp =日志(max (hopNumber-min hopNumber medianWindowLength) (1): hopNumber-1, 1:);shortTermMedian =值(aTemp (:));previousM =意味着([longTermMedian shortTermMedian]);lowerTight = max ((4/3) * previousM emissionMatrixRange (1));upperTight = min ((2/3) * previousM emissionMatrixRange (2));numCandidateOutside =总和([nowCandidates < lowerTight nowCandidates > upperTight]);%如果至少1候选人不在的八度为中心%短期中,添加备份的候选人归一化相关函数生成的%和倒频谱%确定算法作为潜在的候选人。如果numCandidateOutside > 0%应用备份音高估计nowCandidates = [nowCandidates BackupCandidates (hopNumber:)];% #好< AGROW >nowConfidence = [nowConfidence repmat(意味着(nowConfidence), 1, 2)];% #好< AGROW >%使独特的跨度= 10;confidenceFactor = 1.2;r = 1:尺寸(nowCandidates, 1)c = 1:尺寸(nowCandidates 2) tf = abs (nowCandidates (r, c) -nowCandidates (r,:)) <跨度;nowCandidates (r、c) =意味着(nowCandidates (r, tf));nowConfidence (r、c) =总和(nowConfidence (r, tf)) * confidenceFactor;结束结束结束结束%建立信心矩阵confidenceMatrix = 0(元素个数(nowCandidates),大小(日志,3));pageIdx = 1:尺寸(日志,3)如果hopNumber ~ = 1 pastPitch =地板(日志(hopNumber-1 1 pageIdx))——emissionMatrixRange (1) + 1;其他的pastPitch =南;结束candidateNumber = 1:元素个数(nowCandidates)如果hopNumber ~ = 1%获取当前的音高和转换为索引的范围currentPitch =地板(nowCandidates (candidateNumber))——emissionMatrixRange (1) + 1;confidenceMatrix (candidateNumber pageIdx) =emissionMatrix (currentPitch pastPitch) *日志(hopNumber-1 2 pageIdx) * nowConfidence (candidateNumber);其他的confidenceMatrix (candidateNumber pageIdx) = 1;结束结束结束%分配估计为每一个路径pageIdx = 1:尺寸(日志,3)%确定当前最自信的过渡从过去的[~,idx] = max (confidenceMatrix (:));%信心指数矩阵转换为音高和日志页面[chosenPitch, pastPitchIdx] = ind2sub([元素个数(nowCandidates),大小(日志,3)],idx);日志(hopNumber: pageIdx) =[nowCandidates (chosenPitch),confidenceMatrix (chosenPitch pastPitchIdx),pastPitchIdx];%删除当前所选的音高的信心矩阵confidenceMatrix (chosenPitch:) =南;结束%正常化的信心日志(hopNumber 2:) =日志(hopNumber 2:) /笔(日志(hopNumber 2:));结束

6。回溯的嗯

嗯的向前迭代完成后,最后的基音轮廓是选为最有信心的道路。向后走通过日志来确定沥青等高输出的嗯。计算GPE和情节新的基音轮廓和已知的轮廓。

numHops =大小(日志,1);keepLooking = true;指数= numHops + 1;keepLooking指数=指数- 1;如果abs (max(日志(指数2:))分钟(日志(指数2:)))~ = 0 keepLooking = false;结束结束[~,bestPathIdx] = max(日志(指数2:));bestIndices = 0 (numHops, 1);bestIndices(指数)= bestPathIdx;2 =指数:1:2 bestIndices (ii-1) =日志(2、3、bestIndices (ii));结束bestIndices (bestIndices = = 0) = 1;f0 = 0 (numHops, 1);2 = (numHops): 1:2 f0 (ii) =日志(二1 bestIndices (ii));结束f0toPlot = f0;f0toPlot (~ isVoiced) =南;GPE =意味着(abs (f0toPlot (isVoiced)——truePitch (isVoiced)) > truePitch (isVoiced)。* p)。* 100;图(8)情节(t0, [truePitch f0toPlot])传说(“参考”,“估计”)ylabel (“F0 (Hz)”)包含(“时间(s)”)标题(" GPE = "+圆(GPE、2) +“(%)”)

7所示。移动中值滤波器

最后后处理步骤,应用中值滤波窗口长度的三跳。计算最后GPE和情节最后的基音轮廓和已知的轮廓。

f0 = movmedian (f0, 3);f0 (~ isVoiced) =南;GPE =意味着(abs (f0 (isVoiced)——truePitch (isVoiced)) > truePitch (isVoiced)。* p)。* 100;图(9)情节(t0, [truePitch, f0])传说(“参考”,“估计”)ylabel (“F0 (Hz)”)包含(“时间(s)”)标题(" GPE = "+圆(GPE、2) +“(%)”)

绩效评估

HelperPitchTracker函数使用一个嗯连续性约束应用于轮廓。嗯的发射矩阵可以直接设置。最好是在声音训练发射矩阵类似于你想跟踪的来源。

下面的例子使用了球场跟踪数据库从格拉茨工业大学(PTDB-TUG)[4]。数据集由英语母语阅读2342 TIMIT语料库的语音学上丰富的句子。下载并提取数据集。

downloadFolder = matlab.internal.examples.download万博1manbetxSupportFile (“音频”,“ptdb-tug.zip”);dataFolder = tempdir;解压缩数据集(downloadFolder dataFolder) = fullfile (dataFolder,“ptdb-tug”);

创建指向麦克风录音音频数据存储在数据库中。设置标签相关的每个文件的位置已知的相关文件。数据集包含10个女性和10个男性演讲者的录音。使用子集男女隔离10扬声器。火车一个发射矩阵的基础上,参考音高轮廓男性和女性演讲者1到9。

广告= audioDatastore ([fullfile(数据集,“语音数据”,“女性”,“麦克风”),fullfile(数据集,“语音数据”,“男性”,“麦克风”)),IncludeSubfolders = true,FileExtensions =“wav”);wavFileNames = ads.Files;ads.Labels =取代(wavFileNames, (“麦克风”,“麦克风”,“wav”]、[“REF”,“ref”,“f0”]);idxToRemove =包含(ads.Files, (“F10”,“M10”]);ads1 =子集(广告,idxToRemove);ads9 =子集(广告,~ idxToRemove);

洗牌的音频数据存储。

ads1 = shuffle (ads1);ads9 = shuffle (ads9);

发射矩阵描述的概率从一个国家到另一个。在以下步骤中,您创建一个基于扬声器发射矩阵1到9的男性和女性。数据库存储引用值,短期能源和附加信息的文本文件和文件扩展名f0。的getReferencePitch函数读取音高值如果短期能量阈值以上。阈值确定经验在听力测试。的HelperUpdateEmissionMatrix创建一个二维直方图基于当前状态和下一个音高状态。创建后的直方图,它是标准化创建一个发射矩阵。

emissionMatrixRange = [50400];emissionMatrix = [];i = 1:元素个数(ads9.Files) x = getReferencePitch (ads9.Labels{我});emissionMatrix = HelperUpdateEmissionMatrix (x, emissionMatrixRange emissionMatrix);结束emissionMatrix = emissionMatrix + sqrt (eps);emissionMatrix = emissionMatrix. /规范(emissionMatrix);

定义不同类型的背景噪音:白色,氛围,引擎,飞机,和街道。重新取样他们16赫兹帮助加速测试数据库。

定义测试的信噪比,在dB, 10、5 0 5, -10。

noiseType = [“白色”,“氛围”,“引擎”,“喷气机”,“街道”];numNoiseToTest =元素个数(noiseType);desiredFs = 16 e3;whiteNoiseMaker = dsp.ColoredNoise(颜色=“白色”SamplesPerFrame = 40000, RandomStream =“与种子mt19937ar”,BoundedOutput = true);噪音{1}= whiteNoiseMaker ();[氛围,ambianceFs] = audioread (“Ambiance-16-44p1-mono-12secs.wav”);噪音{2}=重新取样(氛围、desiredFs ambianceFs);(引擎,engineFs) = audioread (“Engine-16-44p1-stereo-20sec.wav”);噪音{3}=重新取样(引擎、desiredFs engineFs);(飞机,jetFs) = audioread (“JetAirplane-16-11p025-mono-16secs.wav”);噪音{4}=重新取样(飞机,desiredFs jetFs);[街,streetFs] = audioread (“MainStreetOne-16-16-mono-12secs.wav”);噪音{5}=重新取样(街道、desiredFs streetFs);snrToTest = [10 5 0, -10);numSNRtoTest =元素个数(snrToTest);

运行每个信噪比、噪声的基音检测算法对每个文件类型。计算平均GPE跨语言文件。这个例子比较性能与流行的俯仰跟踪算法:锯齿波形启发音高估计量(刷卡)。算法的MATLAB®实现可以在[5]。运行这个例子不与其他算法比较,集比较。以下比较需要大约15分钟。

比较=真正的;numFilesToTest = 20;p = 0.1;GPE_pitchTracker = 0 (numSNRtoTest numNoiseToTest numFilesToTest);如果比较GPE_swipe = GPE_pitchTracker;结束i = 1: numFilesToTest [cleanSpeech信息]=阅读(ads1);cleanSpeech =重新取样(cleanSpeech desiredFs info.SampleRate);truePitch = getReferencePitch (info.Label {:});isVoiced = truePitch ~ = 0;truePitchInVoicedRegions = truePitch (isVoiced);j = 1: numSNRtoTestk = 1: numNoiseToTest noisySpeech = mixSNR (cleanSpeech,噪音{k}, snrToTest (j));f0 = HelperPitchTracker (noisySpeech、desiredFs EmissionMatrix = EmissionMatrix EmissionMatrixRange = EmissionMatrixRange);f0 = [0; f0];%手动对齐与数据库。GPE_pitchTracker (j, k,我)=意味着(abs (f0 (isVoiced) - truePitchInVoicedRegions) > truePitchInVoicedRegions。* p)。* 100;如果比较f0 = swipep (noisySpeech desiredFs, [50400], 0.01);f0 = f0(3:结束);%手动对齐与数据库。GPE_swipe (j, k,我)=意味着(abs (f0 (isVoiced) - truePitchInVoicedRegions) > truePitchInVoicedRegions。* p)。* 100;结束结束结束结束GPE_pitchTracker =意味着(GPE_pitchTracker, 3);如果比较GPE_swipe =意味着(GPE_swipe, 3);结束

阴谋每个噪声的总周节误差类型。

2 = 1:元素个数(噪音)图(9 + 2)情节(snrToTest, GPE_pitchTracker(:,(二),“b”)举行如果比较图(snrToTest GPE_swipe(:,(二),“g”)结束情节(snrToTest GPE_pitchTracker(:,(二),“波”)如果比较图(snrToTest GPE_swipe(:,(二),“全球之声”)结束标题(noiseType (ii))包含(“信噪比”(dB))ylabel (“周节误差总值(p =”+圆(p, 2) +“)”)如果比较传奇(“HelperPitchTracker”,“刷”)其他的传奇(“HelperPitchTracker”)结束网格持有结束

结论

您可以使用HelperPitchTracker作为评估基线GPE的性能跟踪系统,或适应这个示例应用程序。

引用

[1]g . Pirker m . Wohlmayr s Petrik和f . Pernkopf”音调追踪语料库与评价Multipitch跟踪场景”,Interspeech, 1509 - 1512年,2011页。

[2]Drugman、托马斯和安倍Alwan。“联合健壮的表达检测和评估基于剩余谐波。”Proceedings of the Annual Conference of the International Speech Communication Association, INTERSPEECH. 2011, pp. 1973-1976.

[3]冈萨雷斯、Sira和迈克布鲁克斯。“一个音高估计滤波器健壮的高水平的噪音(PEFAC)。”19th European Signal Processing Conference. Barcelona, 2011, pp. 451-455.

[4]信号处理和语音通信实验室。2018年9月26日访问。https://www.spsc.tugraz.at/databases-and-tools/ptdb-tug-pitch-tracking-database-from-graz-university-of-technology.html

[5]“Arturo卡马乔。”2018年9月26日访问。https://www.cise.ufl.edu/ acamacho /英语/。

“Fxpefac”[6]。Description of Fxpefac. Accessed September 26, 2018. http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html.