主要内容

harmonicRatio

谐波比率

自从R2019a

描述

例子

人力资源= harmonicRatio (audioIn,fs)返回信号的谐波比率,audioIn随着时间的推移。列的输入被视为个人渠道。

例子

人力资源= harmonicRatio (audioIn,fs,名称=值)使用一个或多个名称参数指定选项。

例子:hr = harmonicRatio (audioIn fs,窗口= rectwin(圆(fs * 0.1)), OverlapLength =圆(fs * 0.05))返回音频输入信号的谐波比例抽样fs赫兹。计算谐波比率为100 ms矩形窗口50毫秒重叠。

例子

harmonicRatio (___)没有输出参数块谐波比率与时间。您可以指定一个输入组合的任何以前的语法。

例子

全部折叠

读入一个音频文件,并计算谐波比使用默认参数。

[audioIn, fs] = audioread (“randomoscthree - 24 - 96立体声- 13 - secs.aif”);audioInMono =意味着(audioIn, 2);hr = harmonicRatio (audioInMono, fs);

情节振幅与时间和信号的谐波比率。

t =(0:长度(audioInMono) 1) / fs;次要情节(2,1,1)情节(t, audioInMono) ylabel (“振幅”网格)次要情节(2,1,2)harmonicRatio (audioInMono fs)

图包含2轴对象。坐标轴对象1 ylabel振幅包含一个类型的对象。坐标轴对象2包含时间(s), ylabel谐波比率包含一个类型的对象。

读入一个音频文件。

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);

计算的谐波比音频文件使用50毫秒损害与25 ms windows重叠。

hr = harmonicRatio (audioIn fs,窗口=损害(圆(fs。* 0.05),“周期”),OverlapLength =圆(fs。* 0.025));

绘制谐波比率。

harmonicRatio (audioIn fs,窗口=损害(圆(fs。* 0.05),“周期”),OverlapLength =圆(fs。* 0.025))

图包含一个坐标轴对象。坐标轴对象包含时间(s), ylabel谐波比率包含一个类型的对象。

谐波比率表明能量的比率的谐波部分音频音频的总能量。因为本例中的音频信号的区域附近的沉默,总能量很低,谐波比一个贫穷的工作歧视言论地区和地区之间的沉默。添加白噪声音频信号,然后计算谐波比率。

audioIn = audioIn + 0.1 * randn(大小(audioIn));hr = harmonicRatio (audioIn fs,窗口=损害(圆(fs。* 0.05),“周期”),OverlapLength =圆(fs。* 0.025));

情节的新谐波比音频信号与白噪声相结合。

harmonicRatio (audioIn fs,窗口=损害(圆(fs。* 0.05),“周期”),OverlapLength =圆(fs。* 0.025))

图包含一个坐标轴对象。坐标轴对象包含时间(s), ylabel谐波比率包含一个类型的对象。

创建一个dsp.AudioFileReader对象读立体声音频数据帧。创建一个dsp.SignalSink对象记录谐波比率计算。

fileReader = dsp.AudioFileReader (“randomoscthree - 24 - 96立体声- 13 - secs.aif”);记录器= dsp.SignalSink;

在一个音频流循环:

  1. 读取音频数据的帧。

  2. 计算谐波比率为框架的每个通道的音频。

  3. 日志的谐波比后来策划。

计算谐波比率仅为一个给定的输入框,指定一个窗口与相同数量的样本作为输入,并将重叠长度设置为零。情节记录的数据。

赢得=汉明(fileReader.SamplesPerFrame,“周期”);~结束(fileReader) audioIn = fileReader ();hr = harmonicRatio (audioIn fileReader.SampleRate,“窗口”,赢了,“OverlapLength”,0);记录器(人力资源)结束情节(logger.Buffer) ylabel (“谐波比率”)传说(“左通道”,“正确的通道”)

图包含一个坐标轴对象。坐标轴对象ylabel谐波比包含2线类型的对象。这些对象代表左通道,右通道。

如果输入你的音频流循环变量samples-per-frame,不一致samples-per-frame分析窗口的大小harmonicRatio,或者如果你想计算重叠的谐波比率数据,使用dsp.AsyncBuffer

创建一个dsp.AsyncBuffer对象,重置记录器和发布的文件阅读器。

浅黄色= dsp.AsyncBuffer;重置(logger)释放(fileReader)

计算谐波比用50毫秒帧25 ms重叠。

fs = fileReader.SampleRate;samplesPerFrame =圆(fs * 0.05);samplesOverlap =圆(fs * 0.025);samplesPerHop = samplesPerFrame - samplesOverlap;赢得=汉明(samplesPerFrame);~结束(fileReader) audioIn = fileReader ();写(浅黄色,audioIn);迷。NumUnreadSamples >= samplesPerHop audioBuffered = read(buff,samplesPerFrame,samplesOverlap); hr = harmonicRatio(audioBuffered,fs,“窗口”,赢了,“OverlapLength”,0);记录器(人力资源)结束结束发行版(fileReader)

情节记录的数据。

情节(logger.Buffer) ylabel (“谐波比率”)传说(“左通道”,“正确的通道”)

图包含一个坐标轴对象。坐标轴对象ylabel谐波比包含2线类型的对象。这些对象代表左通道,右通道。

谐波比率措施的能量相比,色调的部分信号的能量在总信号。

谐波比纯质的音调

创建一个纯质的音调,然后计算谐波比使用默认参数。默认情况下,谐波比率计算与10 ms跳30 ms汉明窗。策划的结果。附近的谐波比率是1,也就是理论最大值。

fs = 48 e3;osc = audioOscillator(频率= 500,SamplesPerFrame = 192 e3, SampleRate = fs);sinewave = osc ();hr = harmonicRatio (sinewave, fs);

绘制谐波比率与时间。附近的谐波比率是1,也就是理论最大值。

harmonicRatio (sinewave fs)标题(“正弦信号——默认参数”)

图包含一个坐标轴对象。坐标轴对象标题正弦信号——默认参数,包含时间(s), ylabel谐波比率包含一个类型的对象。

所需的短时分析窗口降低了谐波比理论值的1。减少窗口的影响,可以增加窗口大小。使用100 ms汉明窗和一个10 ms跳。

赢得=汉明(圆(fs * 0.1),“周期”);重叠=圆(fs * 0.099);hr = harmonicRatio (sinewave fs,窗口=赢,OverlapLength =重叠);

情节谐波比率和观察,它更接近于一个比使用默认窗口长度。

harmonicRatio (sinewave fs,窗口=赢,OverlapLength =重叠)标题(“正弦信号——100 ms窗口”)

图包含一个坐标轴对象。坐标轴对象与标题正弦信号- 100女士窗口,包含时间(s), ylabel谐波比率包含一个类型的对象。

谐波比白噪声

创建5秒的白噪声,然后计算谐波比使用默认参数。默认情况下,谐波比率计算与10 ms跳30 ms汉明窗。

fs = 48 e3;噪音=兰德(fs * 5, 1);hr = harmonicRatio(噪音、fs);

策划的结果。谐波比例是0。

harmonicRatio(噪音、fs)标题(“噪音-默认参数”)

图包含一个坐标轴对象。轴与标题噪声对象——默认参数,包含时间(s), ylabel谐波比率包含一个类型的对象。

输入参数

全部折叠

输入信号,指定为一个列向量或矩阵。如果指定为一个矩阵,harmonicRatio把矩阵的列作为单独的音频通道。

数据类型:|

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

数据类型:|

名称-值参数

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

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

例子:窗口=汉明(256)

应用于时域窗口,指定为一个真正的向量。向量中的元素的数量必须在[1,大小(audioIn,1)]。向量中的元素的数量也必须大于OverlapLength

数据类型:|

数量的样本之间的重叠相邻窗口,指定为一个整数范围在[0,大小(窗口,1))。

数据类型:|

输出参数

全部折叠

谐波比率,作为一个标量,返回向量或矩阵。每一行的人力资源对应于谐波比率的一个窗口audioIn。谐波比率返回值在[0,1]范围。值0表示低调和性,和一个值为1代表低性高。

数据类型:|

算法

中描述的谐波比率计算[1]。下面的算法独立音频数据的每个窗口。的归一化自相关信号确定为:

Γ ( ) = n = 1 N 年代 ( n ) 年代 ( n ) n = 1 N 年代 ( n ) 2 n = 0 N 年代 ( n ) 2 ( 1 )

在哪里

  • 年代是一个单帧的音频数据N元素。

  • 是最大延迟的计算。最大延迟40毫秒,对应于一个最低基本25赫兹的频率。

第一次估计的谐波比率决定的最大归一化自相关,在一个给定的范围:

β H R = 马克斯 0 { Γ ( ) }

在哪里0的下边缘搜索范围,确定作为第一个零交叉的归一化自相关。

最后,谐波比率估计是使用抛物线插值改进,所述[2]

引用

[1]Kim Hyoung-Gook,尼古拉斯·莫罗和托马斯Sikora。MPEG-7音频和超越:音频内容索引和检索。约翰威利& Sons, 2005。

[2]二次插值的光谱峰值。2018年10月11日通过。https://ccrma.stanford.edu/乔斯/ sasp / Quadratic_Interpolation_Spectral_Peaks.html

扩展功能

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

版本历史

介绍了R2019a