主要内容

Halmonicratio.

谐波比例

描述

例子

人力资源= Hasbonicratio(奥地策FS.返回信号的谐波比,奥地策, 随着时间的推移。输入的列被视为单独的通道。

例子

人力资源= Hasbonicratio(奥地策FS.名称,价值使用一个或多个指定选项名称,价值对论点。

例子:HR = Houronicratio(AudioIn,FS,'窗口',Rectwin(圆形(fs * 0.1)),'overlaplenthth',圆形(fs * 0.05))返回采样的音频输入信号的谐波比FS.赫兹。谐波比率为100毫米矩形窗口,具有50毫秒重叠。

例子

全部收缩

在音频文件中读取,使用默认参数计算谐波比,然后绘制结果。

[AudioIn,FS] = audioread('ranswoscthree-24-96-stereo-13secs.aif');张视网膜=均值(AudioIn,2);hr = houronicratio(isausimmono,fs);t =(0:长度(isausimmono)-1)/ fs;子图(2,1,1)plot(t,audioinmono)ylabel('振幅')t = linspace(0,尺寸(isausimmono,1)/ fs,尺寸(hr,1));子图(2,1,2)绘图(t,hr)xlabel('时间'')ylabel('谐波比'

图包含2个轴。轴1包含类型线的对象。轴2包含类型线的对象。

在音频文件中读取。

[AudioIn,FS] = audioread('Counting-16-44p1-mono-15secs.wav');

使用25毫秒重叠使用50毫秒HANN Windows的音频文件的谐波比。绘制结果。

HR = Houronicratio(AudioIn,FS,......'窗户',HANN(圆形(FS。* 0.05),'定期'),......'overlaplencth',圆形(FS。* 0.025));t = linspace(0,尺寸(audioin,1)/ fs,尺寸(hr,1));绘制(t,hr)xlabel('时间'')ylabel('谐波比'

图包含轴。轴包含类型线的对象。

谐波比指示音频谐波部分中的能量与音频的总能量的比率。因为这个例子中的音频信号有近沉默的区域,所以总能量非常低,谐波比在言论和沉默地区之间的差异辨别的差。向音频信号添加白噪声,然后计算和绘制谐波比。

AudioIn = AudioIn + 0.1 * Randn(尺寸(isaisin));HR = Houronicratio(AudioIn,FS,......'窗户',HANN(圆形(FS。* 0.05),'定期'),......'overlaplencth',圆形(FS。* 0.025));t = linspace(0,尺寸(audioin,1)/ fs,尺寸(hr,1));绘制(t,hr)xlabel('时间'')ylabel('谐波比'

图包含轴。轴包含类型线的对象。

创建一个dsp.audiofilereader.对象在立体声音频数据逐帧中读取。创建一个dsp.signalsink.对象来记录谐波比计算。

filereader = dsp.audiofilereader('ranswoscthree-24-96-stereo-13secs.aif');logger = dsp.signalsink;

在一个音频流循环中:

  1. 读入音频数据帧。

  2. 计算音频帧的每个通道的谐波比。

  3. 记录后来绘制的谐波比。

为了仅计算给定的输入框架的谐波比,请指定具有与输入相同数量的样本数量的窗口,并将重叠长度设置为零。绘制记录的数据。

win = hamping(filereader.samplesperframe,'定期');尽管〜ISDONE(FILEREADER)AUDION = FILEREADER();hr = houronicratio(isainin,filereader.samplerate,......'窗户',赢,......'overlaplencth',0);记录器(HR)结尾plot(logger.buffer)ylabel('谐波比') 传奇('左频道''右频道'

图包含轴。轴包含2个类型的型号。这些对象表示左声道,右声道。

如果对音频流循环的输入有一个可变的样本样本,则使用分析窗口大小的每帧不一致的样本Halmonicratio.,或者如果要计算重叠数据的谐波比,请使用dsp.asyncbuffer.

创建一个dsp.asyncbuffer.对象,重置记录器,然后释放文件读取器。

buff = dsp.asyncuffer;重置(记录器)释放(Filereader)

使用25 ms重叠的50 ms帧计算谐波比。

fs = filereader.samplerate;SamplesPerframe = ROUNG(FS * 0.05);Samplesoverlap = ROUNG(FS * 0.025);Samplesperhop = SamplesPerframe  -  Samplesoverlap;WIN =汉明(样品框架);尽管〜ISDONE(FILEREADER)AUDION = FILEREADER();写(buff,audioin);尽管buff.numunReadsamples> = samplesperhop audiobuffered = read(buff,samplesperframe,samplesoverlap);hr = houronicratio(有obiobuffered,fs,......'窗户',赢,......'overlaplencth',0);记录器(HR)结尾结尾发布(Filereader)

绘制记录的数据。

plot(logger.buffer)ylabel('谐波比') 传奇('左频道''右频道'

图包含轴。轴包含2个类型的型号。这些对象表示左声道,右声道。

与总信号中的能量相比,谐波比测量信号的色调部分中的能量。

纯音的谐波比

创建纯音,然后使用默认参数计算谐波比。缺省情况下,谐波比率为30毫秒跳跃30毫秒的汉敏窗口。绘制结果。谐波比在1附近,这是理论最大值。

FS = 48E3;OSC =探听器('频率',500,......'samplesperframe',192E3,'采样率',fs);sinewave = osc();hr = houronicratio(sinewave,fs);t = linspace(0,尺寸(正弦波,1)/ fs,尺寸(hr,1));绘制(t,hr)xlabel('时间'')ylabel('谐波比') 标题('sinusoid  - 默认参数'

图包含轴。带有标题正弦波的轴 - 默认参数包含类型线的对象。

窗口所需的短时间分析降低了从理论值的谐波比率。为了减少窗口的效果,您可以增加窗口大小。使用100毫秒汉明窗口和10 ms跳,观察谐波比更接近一个而不是使用默认窗口长度时的谐波比。

Win =汉明(圆形(FS * 0.1),'定期');重叠=圆形(FS * 0.099);hr = houronicratio(sinewave,fs,'窗户',赢,'overlaplencth',重叠);t = linspace(0,尺寸(正弦波,1)/ fs,尺寸(hr,1));绘制(t,hr)xlabel('时间'')ylabel('谐波比') 标题('Sinusoid  -  100 Ms窗口'

图包含轴。带有标题Sinusoid  -  100 MS窗口的轴包含类型线的对象。

白噪声的谐波比

创建5秒的白噪声,然后使用默认参数计算谐波比。缺省情况下,谐波比率为30毫秒跳跃30毫秒的汉敏窗口。绘制结果。谐波比为0。

FS = 48E3;噪声=兰特(FS * 5,1);hr = houronicratio(噪音,fs);t = linspace(0,尺寸(噪音,1)/ fs,尺寸(hr,1));绘制(t,hr)xlabel('时间'')ylabel('谐波比') 标题('噪音 - 默认参数'

图包含轴。具有标题噪声的轴 - 默认参数包含类型线的对象。

输入参数

全部收缩

输入信号,指定为列向量或矩阵。如果指定为矩阵,Halmonicratio.将矩阵的列视为单独的音频通道。

数据类型:单身的|双倍的

Hz中输入信号的采样率,指定为正标量。

数据类型:单身的|双倍的

名称值对参数

指定可选的逗号分离对名称,价值论点。名称是参数名称和价值是相应的价值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'窗口',汉明(256)

应用于时域的窗口,指定为逗号分隔的配对组成窗户'和一个真正的矢量。向量中的元素数必须在范围[1,尺寸(奥地策1)]。矢量中的元素数量也必须大于overtaplenth

数据类型:单身的|双倍的

在相邻窗口之间重叠的样本数,指定为由“逗号分隔的对”overtaplenth'范围内的整数[0,尺寸(窗户1))。

数据类型:单身的|双倍的

输出参数

全部收缩

谐波比,作为标量,矢量或矩阵返回。每一排人力资源对应于窗口的谐波比奥地策。谐波比率在范围内返回值[0,1]。值0表示低谐波,值1表示高谐波。

数据类型:单身的|双倍的

算法

如上所述计算谐波比[1]。以下算法独立应用于每个音频数据窗口。信号的归一化自相关的确定为:

γ. m = σ. N. = 1 N. S. N. S. N. - m σ. N. = 1 N. S. N. 2 σ. N. = 0. N. S. N. - m 2 为了 1 ≤. m ≤. m

在哪里

  • S.是单一的音频数据帧N.元素。

  • m计算中的最大滞后。最大滞后为40毫秒,其对应于25Hz的最小频率。

在给定范围内确定谐波比的第一估计是归一化自相关的最大值:

β H R. = 最大限度 m 0. ≤. m ≤. m { γ. m }

在哪里m0.是搜索范围的下边缘,被确定为归一化自相关的第一零交叉。

最后,使用抛物线插值改善谐波比率估计,如[2]

参考

[1] Kim,Hyoung-Gook,Nicholas Moreau和Thomas Sikora。MPEG-7音频及更大:音频内容索引和检索。John Wiley&Sons,2005。

[2]光谱峰的二次插值。访问2018年10月11日。https://ccrma.stanford.edu/~jos/sasp/quadratic_interpolation_spectral_peaks.html

扩展能力

C / C ++代码生成
使用MATLAB®Coder™生成C和C ++代码。

在R2019A介绍