一种音频信号字符串匹配方法与流程

文档序号:20694812发布日期:2020-05-12 14:49阅读:416来源:国知局
一种音频信号字符串匹配方法与流程
本发明涉及音频信号处理领域,尤其是涉及一种计算量小、速度快的音频信号字符串匹配方法。
背景技术
:在广播电视电影等音频领域,常常需要对音频信号进行判断是否包含另外一段音频的判断,例如进行广告是否播出以及播出次数的统计、台宣播出次数的统计、相关宣传精神文件的播出次数统计等。在以往的技术中,常规的做法是使用专业音频矢量卡,将音频矢量化得到其矢量特征,然后通过服务器的处理能力对矢量信息进行对比,这样的方案需要昂贵的专业矢量卡,同时对于服务器的运算处理能力要求较高,需要配置性能极佳的cpu及内存等,不便于进行一些轻量化的推广。技术实现要素:本发明主要是解决现有技术所存在的计算量大、对硬件要求较高等的技术问题,提供一种轻量化、硬件要求较低的音频信号字符串匹配方法。本发明针对上述技术问题主要是通过下述技术方案得以解决的:一种音频信号字符串匹配方法,包括以下步骤:s1、将第一音频信号数据存储到字符串a中;s2、将第二音频信号数据存储到字符串b中;s3、计算字符串b的next数组;s4、对字符串a和字符串b进行匹配。音频信号数据为wav格式数据。作为优选,所述步骤s3中,next数组由以下公式计算确定:next[j]为next数组的第j个元素,bi为字符串b中的第i个字符。即当j大于2时,看字符串b的第1至第j-1个字符的首尾重合数,如果首尾重合数为k-1,即b[1]至b[k-1]和b[j+k-1]至b[j-1]相同,则next[j]为k;如果一个字符都不相同,即首尾重合数为0,则next[j]为1。作为优选,步骤s4具体为:s401、设定m的初始值为1,将字符串b与字符串a的第1到s个字符进行对比,s为字符串b的字符个数,如果对比结果为完全匹配,则跳转到步骤s405,否则进入步骤s402;s402、m增大n-next[n],n为上一次对比时第一个不匹配字符在字符串b中的次序;s403、判断s+m-1是否大于字符串a的字符个数,如果大于则进入步骤s406,否则进入步骤s404;s404、将字符串b与字符串a的第m到第s+m-1个字符进行对比,如果对比结果为完全匹配,则进入步骤s405,否则跳转到步骤s402;s405、判定第二音频信号属于第一音频信号的一部分,输出判定结果,流程结束;s406、判定第二音频信号不属于第一音频信号的一部分,输出判定结果,流程结束。根据音频信息特征,在噪声干扰较小的情况下,音频的音量值可能会变化,波形文件的变化趋势及波动基本不受干扰,而在广播电视领域发射到接收的噪声干扰也有严格的要求,在相关标准的要求范围内的噪声,对音频信息的干扰基本可以忽略不计,鉴于此本发明采用轻量化的对音频波形文件进行字符串化对比分析的方法进行音频信号对比。常规的字符串对比需要用到递归算法进行字符串匹配,匹配次数及效率在对于音频信号的wav数据这种超大数据的处理时就会效率不足,故此我们针对音频信号是个正负区间值来回变换的特征,提出本算法。本发明带来的实质性效果是,计算量小,对硬件要求低,便于轻量化推广。附图说明图1是本发明的一种流程图;图2时本发明的一种匹配过程流程图。具体实施方式下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。实施例:本实施例的一种音频信号字符串匹配方法,包括以下步骤:s1、将第一音频信号数据存储到字符串a中;s2、将第二音频信号数据存储到字符串b中;s3、计算字符串b的next数组;s4、对字符串a和字符串b进行匹配。音频信号数据为wav格式数据。所述步骤s3中,next数组由以下公式计算确定:next[j]为next数组的第j个元素,b[i]为字符串b中的第i个字符。例如字符串b为:a,b,c,d,a,b,d。逗号为分隔符号,不属于字符串的部分,后同。j=1,next[1]=0;j=2,next[2]=1;j=3,字符串b第1至第2(3-1=2)个字符为a,b,首尾重合数为0,所以next[3]=1;j=4,字符串b第1至第3(4-1=3)个字符为a,b,c,首尾重合数为0,所以next[4]=1;j=5,字符串b第1至第4(5-1=4)个字符为a,b,c,d,首尾重合数为0,所以next[5]=1;j=6,字符串b第1至第5(6-1=5)个字符为a,b,c,d,a,b[1]=b[4],首尾重合数为1,所以next[6]=2;j=7,字符串b第1至第6(7-1=6)个字符为a,b,c,d,a,b,b[1]b[2]=b[5]b[6],首尾重合数为2,所以next[7]=3;最终得到next数组为0,1,1,1,1,2,3。如图2所示,步骤s4具体为:s401、设定m的初始值为1,将字符串b与字符串a的第1到s个字符进行对比,s为字符串b的字符个数,如果对比结果为完全匹配,则跳转到步骤s405,否则进入步骤s402;s402、m增大n-next[n],n为上一次对比时第一个不匹配字符在字符串b中的次序;s403、判断s+m-1是否大于字符串a的字符个数,如果大于则进入步骤s406,否则进入步骤s404;s404、将字符串b与字符串a的第m到第s+m-1个字符进行对比,如果对比结果为完全匹配,则进入步骤s405,否则跳转到步骤s402;s405、判定第二音频信号属于第一音频信号的一部分,输出判定结果,流程结束;s406、判定第二音频信号不属于第一音频信号的一部分,输出判定结果,流程结束。例如字符串a为b,b,c,a,b,c,d,a,b,e,a,b,c,d,a,b,c,d,a,b,d,e。字符串a的字符个数为22,字符串b的个数s为7。第一次对比,m=1,将字符串b与字符串a的第1至7个字符进行对比,abbcabcdabeabcdabcdabdebabcdabda[1]不等于b[1],不完全匹配,n=1,将m增大n-next[n],即增大1-0=1,新m为2,s+m-1=7+2-1=8<22,进行下一次对比;第二次对比,m=2,将字符串b与字符串a的第2(m)至8(s+m-1)个字符进行对比,abbcabcdabeabcdabcdabdebabcdabda[2]不等于b[1],不完全匹配,n=1,将m增大n-next[n],即增大1-0=1,新m为3,s+m-1=7+3-1=9<22,进行下一次对比;第三次对比,m=3,将字符串b与字符串a的第3(m)至9(s+m-1)个字符进行对比,abbcabcdabeabcdabcdabdebabcdabda[3]不等于b[1],不完全匹配,n=1,将m增大n-next[n],即增大1-0=1,新m为4,s+m-1=7+4-1=10<22,进行下一次对比;第四次对比,m=4,将字符串b与字符串a的第4(m)至10(s+m-1)个字符进行对比,abbcabcdabeabcdabcdabdebabcdabda[4]a[5]a[6]a[7]a[8]a[9]=b[1]b[2]b[3]b[4]b[5]b[6],a[10]不等于b[7],不完全匹配,n=7,将m增大n-next[n],即增大7-3=4,新m为8,s+m-1=7+8-1=14<22,进行下一次对比;第五次对比,m=8,将字符串b与字符串a的第8(m)至14(s+m-1)个字符进行对比,abbcabcdabeabcdabcdabdebabcdabda[8]a[9]=b[1]b[2],a[10]不等于b[3],不完全匹配,n=3,将m增大n-next[n],即增大3-1=2,新m为10,s+m-1=7+10-1=16<22,进行下一次对比;第六次对比,m=10,将字符串b与字符串a的第10(m)至16(s+m-1)个字符进行对比,abbcabcdabeabcdabcdabdebabcdabda[10]不等于b[1],不完全匹配,n=1,将m增大n-next[n],即增大1-0=1,新m为11,s+m-1=7+11-1=17<22,进行下一次对比;第七次对比,m=11,将字符串b与字符串a的第11(m)至17(s+m-1)个字符进行对比,abbcabcdabeabcdabcdabdebabcdabda[11]a[12]a[13]a[14]a[15]a[16]=b[1]b[2]b[3]b[4]b[5]b[6],a[17]不等于b[7],不完全匹配,n=7,将m增大n-next[n],即增大7-3=4,新m为15,s+m-1=7+15-1=21<22,进行下一次对比;第八次对比,m=15,将字符串b与字符串a的第15(m)至21(s+m-1)个字符进行对比,abbcabcdabeabcdabcdabdebabcdabda[15]a[16]a[17]a[18]a[19]a[20]a[21]=b[1]b[2]b[3]b[4]b[5]b[6]b[7],完全匹配,判定第二音频信号属于第一音频信号的一部分,输出判定结果,对比流程结束。本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属
技术领域
的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。尽管本文较多地使用了字符串、数组等术语,但并不排除使用其它术语的可能性。使用这些术语仅仅是为了更方便地描述和解释本发明的本质;把它们解释成任何一种附加的限制都是与本发明精神相违背的。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1