本文主要是介绍基于landmark的音频指纹(Matlab实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Landmark简介
Landmark原义为里程碑的一些,这里引申为关键点。landmark用于音频指纹的介绍参考这篇文章:点击打开链接
Landmark提取步骤
下面介绍一下具体的实现步骤:
1.时域分帧,分帧长度,窗类型,重叠长度都可以自己设定
2.对每一帧进行fft变化,然后求其能量
3.求局部最大值的值和坐标,这个可以参考我的这篇文章:点击打开链接
代码实现与效果
function [landmark] = getLandmark(path)
[data,f] = audioread(path);
data = filter([1 -0.9375],1,data); % pre-emphisi
signal = data(1:8000); % take 1s sample
tframe = enframe(signal,hanning(1024),80); % enframe in time domain,hanning window of length 1024 samples,the non-overlapped length is 80 samples
[tn,tm]= size(tframe);
X = zeros(tn,tm/2+1);
for i = 1:tnY = fft(tframe(i,:));L = length(tframe(i,:));P2 = 20*log10
这篇关于基于landmark的音频指纹(Matlab实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!