主要内容

球场

估计基本的音频信号的频率

描述

例子

f0=节(audioIn,fs)回报估计的基本频率随着时间的音频输入,audioIn,采样率fs。列的输入被视为个人渠道。

例子

f0=节(audioIn,fs,名称=值)使用一个或多个名称参数指定选项。

例子

(f0,疯狂的)=节(___)返回的位置,疯狂的,与基本频率估计。您可以指定一个输入组合的任何以前的语法。

例子

节(___)没有输出参数块估计与时间。

例子

全部折叠

读入一个音频信号。调用球场估计的基本频率。

[audioIn, fs] = audioread (“Hey-16-mono-6secs.ogg”);f0 =音高(audioIn, fs);

听音频信号和情节的信号和音高。的球场函数估计的基本频率随着时间的推移,但估计只是谐波的有效区域。

声音(audioIn fs) tiledlayout (2, 1) nexttile t =(0:长度(audioIn) 1) / fs;情节(t, audioIn)包含(“时间(s)”)ylabel (“振幅”网格)nexttile音高(audioIn fs)

图包含2轴对象。坐标轴对象1包含一个类型的对象。坐标轴对象2包含一个类型的对象。”width=

读入一个音频信号并提取。

[x, fs] = audioread (“SingingAMajor-16-mono-18secs.ogg”);t =(0:大小(x, 1) 1) / fs;winLength =圆(0.05 * fs);overlapLength =圆(0.045 * fs);[f0, idx] = =音高(x, fs,方法“SRH”WindowLength = winLength OverlapLength = OverlapLength);tf0 = idx / fs;

听音频和音频和音高估计。

声音(x, fs)图tiledlayout (2, 1) nexttile情节(t, x) ylabel (“振幅”)标题(“音频信号”)轴nexttile音高(x, fs,方法=“SRH”WindowLength = winLength OverlapLength = OverlapLength)标题(“估计”)

图包含2轴对象。坐标轴对象1标题音频信号包含一个类型的对象。坐标轴对象2标题音高估计包含一个类型的对象。”width=

球场函数估计重叠分析窗口。距估计只有有效如果分析窗口有一个谐波分量。调用harmonicRatio函数使用相同的窗口和重叠长度用于基音检测。情节音频、音高和谐波比率。

hr = harmonicRatio (x, fs =汉明窗(winLength,“周期”),OverlapLength = OverlapLength);图tiledlayout (3,1) nexttile情节(t, x) ylabel (“振幅”)标题(“音频信号”)轴nexttile音高(x, fs,方法=“SRH”WindowLength = winLength OverlapLength = OverlapLength)标题(“估计”)包含(”“)nexttile harmonicRatio (x, fs,窗口=汉明(winLength,“周期”),OverlapLength = OverlapLength)标题(“谐波比率”)

图包含3轴对象。坐标轴对象1标题音频信号包含一个类型的对象。坐标轴对象2标题音高估计包含一个类型的对象。坐标轴对象3标题谐波比率包含一个类型的对象。”width=

使用谐波比率作为有效的阈值决定。如果谐波比率小于阈值,设置间距决定。策划的结果。

阈值= 0.9;f0 (hr <阈值)=南;图绘制(tf0 f0)包含(“时间(s)”)ylabel (“球场(Hz)”)标题(“估计”网格)

图包含一个坐标轴对象。坐标轴对象与标题音高估计包含一个类型的对象。”width=

读入一个音频信号的一个女声说“体积”五次。听音频。

[femaleVoice, fs] = audioread (“FemaleVolumeUp-16-mono-11secs.ogg”);声音(femaleVoice fs)

读入一个音频信号的一个男性声音说“体积”五次。听音频。

maleVoice = audioread (“MaleVolumeUp-16-mono-6secs.ogg”);声音(maleVoice fs)

提取音高的女性和男性的录音。绘制柱状图的音高估计男性和女性的录音。直方图有类似的形状。这是因为场上决定包含沉默无声的语言和地区的结果。

f0Female =音高(femaleVoice, fs);f0Male =音高(maleVoice, fs);图numBins = 20;直方图(f0Female numBins正常化=“概率”);持有直方图(f0Male numBins正常化=“概率”);传奇(“女声”,“男性声音”)包含(“球场(Hz)”)ylabel (“概率”)举行

图包含一个坐标轴对象。坐标轴对象包含2直方图类型的对象。这些对象代表了女性的声音,男性的声音。”width=

使用detectSpeech函数孤立区域的演讲音频信号,然后从只有那些演讲区域提取音高。

speechIndices = detectSpeech (femaleVoice, fs);f0Female = [];2 = 1:尺寸(speechIndices 1) speechSegment = femaleVoice (speechIndices (2, 1): speechIndices (2, 2));f0Female = [f0Female;沥青(speechSegment fs)];结束speechIndices = detectSpeech (maleVoice, fs);f0Male = [];2 = 1:尺寸(speechIndices 1) speechSegment = maleVoice (speechIndices (2, 1): speechIndices (2, 2));f0Male = [f0Male;沥青(speechSegment fs)];结束

绘制柱状图的音高估计男性和女性的录音。现在距分布表现为预期。

图直方图(f0Female numBins正常化=“概率”);持有直方图(f0Male numBins正常化=“概率”);传奇(“女声”,“男性声音”)包含(“球场(Hz)”)ylabel (“概率”)

图包含一个坐标轴对象。坐标轴对象包含2直方图类型的对象。这些对象代表了女性的声音,男性的声音。”width=

加载一个音频文件的皮毛爱丽丝介绍和音频的采样率。

负载FurElise.mat首歌fs声音(歌曲,fs)

调用球场函数使用音高估计滤波器(PEF),搜索范围的50到800 Hz,窗口时间80毫秒,70毫秒的时间重叠,中值滤波长度为10。

方法=“PEF”;范围= [50,800年];%赫兹winDur =0.08;%秒overlapDur =0.07;%秒medFiltLength =10;%的框架winLength =圆(winDur * fs);overlapLength =圆(overlapDur * fs);(f0、loc) =音高(宋、fs、方法=方法,范围=范围,WindowLength = winLength,OverlapLength = OverlapLength,MedianFilterLength = medFiltLength);

情节估计与时间。

音高(宋、fs、方法=方法,范围=范围,WindowLength = winLength,OverlapLength = OverlapLength,MedianFilterLength = medFiltLength);

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。”width=

创建一个dsp.AudioFileReader对象读取音频帧。

fileReader = dsp.AudioFileReader (“SingingAMajor-16-mono-18secs.ogg”);

创建一个voiceActivityDetector对象在流式音频检测声音的存在。

VAD = voiceActivityDetector;

虽然有未读的样本,从文件读取和确定的概率框架包含语音活动。如果帧包含语音活动,电话球场估计的基频音频帧。如果帧不包含语音活动,申报的基本频率

f0 = [];~结束(fileReader) x = fileReader ();如果VAD (x) = > 0.99决定音高(x, fileReader.SampleRateWindowLength =大小(x, 1),OverlapLength = 0,范围= [200340]);其他的决定=南;结束f0 = (f0;决定);结束

画出检测基音轮廓。

t = linspace(0,(长度(f0) * fileReader.SamplesPerFrame) / fileReader.SampleRate长度(f0));情节(t, f0) ylabel (“基本频率(赫兹)”)包含(“时间(s)”网格)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。”width=

的不同的方法估算提供取舍的噪声鲁棒性,准确性,优化滞后,和计算费用。在本例中,您比较不同的基音检测算法的性能方面的总周节误差(GPE)和不同噪声条件下计算时间。

准备测试信号

加载一个音频文件,并确定样品的数量。也负载真正的音高对应的音频文件。真正的球场被确定为平均几个第三方算法在干净的语音文件。

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

创建测试信号通过添加噪声音频信号的信噪比。的mixSNR函数是一个方便的函数本地这个例子中,一个信号,噪声,信噪比要求和请求返回一个嘈杂的信号信噪比。

testSignals = 0 (numSamples 4);涡轮= audioread (“Turbine-16-44p1-mono-22secs.wav”);testSignals (: 1) = mixSNR (audioIn涡轮20);testSignals (:, 2) = mixSNR (audioIn涡轮0);whiteNoiseMaker = dsp.ColoredNoise (“颜色”,“白色”,“SamplesPerFrame”大小(audioIn 1));testSignals (:, 3) = mixSNR (audioIn, whiteNoiseMaker (), 20);testSignals (:, 4) = mixSNR (audioIn, whiteNoiseMaker (), 0);

将噪声条件和算法名称保存为细胞标记和索引数组。

noiseConditions = {“涡轮机(20 dB)”,“涡轮机(0分贝)”,“WhiteNoise (20 dB)”,“WhiteNoise (0 dB) '};算法= {“NCF”,“PEF”,CEP的,“韩”,“SRH”};

运行的基音检测算法

Preallocate数组来保存每个算法和噪声条件对音高的决定,和定时信息。在一个循环中,调用球场函数在每个组合算法和噪声条件。每个算法都有一个最优的窗口长度与它相关联的。在这个示例中,为了简单起见,您可以使用默认的窗口长度为所有算法。转换使用中值滤波来平滑的决定。

f0 = 0(元素个数(truePitch),元素个数(算法),元素个数(noiseConditions));algorithmTimer = 0(元素个数(noiseConditions),元素个数(算法));k = 1:元素个数(noiseConditions) x = testSignals (:, k);i = 1:元素个数(算法)抽搐f0temp =音高(x, fs,“范围”(300),“方法”、算法{},“MedianFilterLength”3);algorithmTimer (k, i) = toc;f0(1:马克斯(元素个数(f0temp),元素个数(truePitch)),我,k) = f0temp;结束结束

比较总周节误差

周节误差总值(GPE)是一种流行的指标比较的基音检测算法。GPE的定义是沥青的比例决定的相对误差大于给定的阈值,在语音研究传统的20%。计算GPE和打印命令窗口。

idxToCompare = ~ isnan (truePitch);truePitch = truePitch (idxToCompare);f0 = f0 (idxToCompare,:,);p = 0.20;GPE =意味着(abs (f0 1:元素个数(truePitch):,:) - truePitch) > truePitch。* p)。* 100;本土知识= 1:元素个数(noiseConditions)流(‘\ nGPE (p = % 0.2 f),噪音= % s。\ n 'p noiseConditions{本土知识});i = 1:大小(GPE、2)流(”——% s: % 0.1 f % % \ n '、算法{},GPE(1我ik))结束结束
GPE (p = 0.20),噪音=涡轮(20 dB)。
- NCF: 0.9%, PEF: 0.4% - CEP: 8.2% - lh: 8.2% - SRH: 6.0%
GPE (p = 0.20),噪音=涡轮(0分贝)。
- NCF: 5.6%, PEF: 24.5% - CEP: 11.6% - lh: 9.4% - SRH: 46.8%
GPE (p = 0.20),噪音= WhiteNoise (20 dB)。
- NCF: 0.9%, PEF: 0.0% - CEP: 12.9% - lh: 6.9% - SRH: 2.6%
GPE (p = 0.20),噪音= WhiteNoise(0分贝)。
- NCF: 0.4%, PEF: 0.0% - CEP: 23.6% - lh: 7.3% - SRH: 1.7%

计算平均时间处理一秒钟的数据为每个算法和打印结果。

= (algorithmTimer)。/ ((numSamples / fs) *元素个数(noiseConditions));本土知识= 1:元素个数(算法)流(”——% s: % 0.3 f (s) \ n”本土知识、算法{},(ik))结束
- NCF: 0.015 (s) - PEF: 0.046 (s) - CEP: 0.015 (s) - lh: 0.019 (s) - SRH: 0.043 (s)

输入参数

全部折叠

音频输入信号,指定为一个向量或矩阵。矩阵的列被视为个人音频通道。

数据类型:|

输入信号的采样率Hz,指定为一个积极的标量。

采样率必须大于或等于两倍的上限的搜索范围。指定搜索范围使用范围名称-值对。

数据类型:|

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:音高(audioIn、fs、范围=[50150],方法=“PEF”)

距估计,搜索范围指定为一个双元素行向量与正整数的值增加。函数搜索最佳估计的基本频率在指定的上部和下部带边向量,根据指定的算法方法。范围是包容性和单位是赫兹。

有效值为搜索范围取决于采样率,fs和的值WindowLength方法:

方法 最小范围 最大射程
NCF fs/WindowLength<范围(1) 范围(2)<fs/ 2
PEF 10 <范围(1) 范围(2)< min (4000fs/ 2)
CEP fs/ (2 ^ nextpow2 (2 *WindowLength1)<范围(1) 范围(2)<fs/ 2
1 <范围(1) 范围(2)<fs/ 5 - 1
SRH 1 <范围(1) 范围(2)<fs/ 5 - 1

数据类型:|

数量的样品在分析窗口中,指定为一个整数范围内[1分钟(大小(audioIn1),192000)]。典型分析窗口范围内20 - 100 ms。默认的窗口长度是52女士。

数据类型:|

重叠相邻的样本数量分析窗口,指定为一个整数的范围(,WindowLength)。负重叠长度显示重叠分析窗口。

数据类型:|

方法用来估计音高,指定为“NCF”,“PEF”,“CEP”,“韩”,或“SRH”。不同方法的计算提供取舍的噪声鲁棒性,准确性,和计算费用。算法用于计算沥青是基于以下文件:

  • “NCF”,归一化相关函数[1]

  • “PEF”——音高估计滤波器[2]。这个函数不使用振幅压缩所描述的。

  • “CEP”——倒频谱间距的决心[3]

  • “韩”——Log-Harmonic求和[4]

  • “SRH”——剩余谐波的总和[5]

数据类型:字符|字符串

中值滤波器长度用来光滑音高估计随着时间的推移,指定为一个正整数。默认的,1,对应于中值滤波。中值滤波是一种后处理技术用于删除离群值而估算。这个函数使用movmedian后估计沥青使用指定的方法

数据类型:|

输出参数

全部折叠

估计基本频率,在赫兹,作为一个标量,返回向量或矩阵。返回的行数取决于的值WindowLengthOverlapLength名称-值对,在输入信号的大小。返回的列数(渠道)的列数取决于输入信号大小。

数据类型:|

位置与基本频率估计,作为一个标量,返回向量或矩阵大小一样f0

基本频率估计局部区域WindowLength样本。的值疯狂的对应于最近的样本数量最多(样本)用于估计基本频率。

数据类型:|

算法

球场功能段的音频输入WindowLengthOverlapLength参数。每一帧的基本频率估计。位置输出,疯狂的包含最新的样品(大样本数据)相应的框架。

对算法的描述用于估算的基本频率,咨询相应的引用:

  • “NCF”,归一化相关函数[1]

  • “PEF”——音高估计滤波器[2]。这个函数不使用振幅压缩所描述的。

  • “CEP”——倒频谱间距的决心[3]

  • “韩”——Log-Harmonic求和[4]

  • “SRH”——剩余谐波的总和[5]

引用

[1]阿塔尔,狗屁“自动说话人识别基于轮廓。”《美国声学学会杂志》上。52卷,6 b, 1972年,页1687 - 1697。

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

[3]诺尔(Michael A。“倒频谱的决心。”《美国声学学会杂志》上。2号卷31日,1967年,页293 - 309。

[4]爱马仕,Dik J。“测量次谐波求和的球场。”《美国声学学会杂志》上。1号卷。83年,1988年,页257 - 264。

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

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

版本历史

介绍了R2018a