一种提取音乐律动信息的方法与流程
- 国知局
- 2024-06-21 11:42:02
本发明涉及音频信号处理,具体涉及一种提取音乐律动信息的方法。
背景技术:
1、音乐律动是最重要的音乐要素之一,音乐律动的节奏节拍和精确度能够帮助人们对音乐的内容进行分析,也能帮助人们进行音乐教育。通过音乐律动专业人员能更好的进行音乐创作,并在一定情况下进行音乐的抄袭检测。同时,随着自媒体的发展,对背景音乐的需求日渐增加,根据提取出的音乐律动,自媒体人员能够筛选和使用复合主题的音乐。
2、传统的音乐律动提取方法中,采用声音能量信息或模型识别较为普遍,能量方式较为简单但提取效果不能适用大多数场景,该方法只能够实现一定场景下音乐律动的提取,不能满足大多数用户的需求。模型识别方法存在算力消耗大的问题,控制器算力要求高,使得提取音乐律动成本大收益小的。
3、根据现有技术的问题:需要一种充分提取音乐律动信息,且平衡运算单元的算力消耗小的方法。
技术实现思路
1、为解决充分提取音乐律动信息,同时平衡运算单元的算力消耗小的技术问题,本发明提供了一种提取音乐律动信息的方法。
2、其技术方案如下:
3、一种提取音乐律动信息的方法,其要点在于,包括以下步骤:
4、s1、对音乐频率采样,获得时域数据。
5、s2、利用fft计算时域数据对应的频域数据。
6、s3、通过对频域数据作差,获得频域变化量。
7、s4、通过标记频域点的方式或者通过峰值点与区域匹配的方式,筛选出频域变化量波动大的区域。
8、s5、根据筛选区域计算节拍。
9、如果运行设备算力足够,可使用16k采样率、单声、16bit位宽,对音乐的频率进行采样,如果运行设备算力不够,也可以根据实际设备算力进行调整,使用8k更低的采样率对音乐的频率进行采样,或者通过增大步骤s2的滑动窗口,使每次滑动平移采样点增大到320个采样点,本方法满足大多数嵌入式平台的运行需求。
10、作为优选:步骤s2中,fft的计算长度len个采样点,将时域数据以len个采样点为一个计算周期,时域数据平移k个采样点作为下一计算周期,k<len,每两个相邻的周期中有(len-k)个采样点相重合,每次计算获得长度为len的频域数据fs_cur[len]。
11、作为优选:步骤s3中,将当前周期的频域值fs_cur[len]与上一个周期的频域值fs_last[len]作差,获得长度为len的频域变化量f_diff[len],如果当前周期的频域值大于前一周期的频域值,取其差值,否则值为0,公式如下:
12、
13、其中,fs_cur[i]为当前周期的第i个频域点的值,fs_last[i]为上一个周期的第i个频域点的值,f_diff[i]为当前周期的第i个频域点的频率变化量。
14、在对当前周期的频率变化量的进行如下调整:
15、f_diff[i]=(1-param_filter)*f_diff_last[i]+param_filter*f_diff[i] (2)
16、其中,param_filter为滤波参数,用于保持当前信号变化趋势,反映快充慢放滤波器对频率的稳定作用;f_diff_last[i]为上一个周期的第i个频域点的频率变化量。
17、音乐发生节拍在频域上的反映表现为频率发生了正向的变化,即某个频域范围的值增大,仅当当前周期的值大于前一周期的数值,才能反映频域正向的变化。随着时间的进行,波形具有一定的波动,造成数据不稳,设计一个快充慢放的滤波器,可以在对应频域发生较大变化时,迅速响应,波形缓慢下降,稳定数据。
18、作为优选,步骤s4中,通过标记频域点的方式筛选出频域变化量波动大的区域,包括以下步骤:
19、s41、计算出每一周期的平均值avg、中位数med,数据波动var。
20、s42、检测所述频域变化量f_diff[len]数据,设可调阈值x和判断阈值y,如果某一频域点的频率变化量f_diff[i]同时大于中位数med、平均值avg与可调阈值x的商,且数据波动var大于判断阈值y,则标记该频域点。
21、s43、当某一区域有多个频域点被连续标记,则选该区域作为能体现节拍的区域,用于计算节拍。
22、其中,数据波动var是指,通过程序实时监听音乐不同频率段的数据变化,根据其从低能量到高能量的变化时间,确定的能量波动大小;可调阈值x的值人为设置,用于调整筛选灵敏度;判断阈值y的值是将大量的测试音乐的测试音频数据导入程序后,再根据数据在程序中的运行情况,收集运行数据,并分析获得的能够覆盖到各种音乐的最小的值。
23、作为优选:步骤s5中,计算节拍公式如下:
24、beat=f_cur/f_avg (3)
25、其中,beat为输出节拍,f_cur为区域内频率的当前值,f_avg为区域内频率历史平均值。
26、作为优选:步骤s4中,通过峰值点与区域匹配的方式筛选出频域变化量波动大的区域,包括以下步骤:
27、s4a、对频域变化量波形进行峰值检测,输出峰值点的坐标以及值的高低,通过值的高低对峰值点进行排序,将前h个峰值点记作peak,h的范围为[1,20]。
28、s4b、将len个频域变化量点分为m个区域,每个区域n个频率点,m*n=len。
29、算法选出g个区域,记作range,所述range有两种状态,分别为使用状态和空闲状态,所述range在使用状态中有一个用于释放的计数值counter,该计数值counter的值为初始值z,其初始值z等于最小节拍时间除以计算周期的商,所述计数值counter用于决定该range是否切换至空闲状态。
30、s4c、检查所有range,如果某一range处于使用状态,且计数值counter大于零,则计数值counter减一,并输出该区域的计算值;如果计数值counter小于零,则切换状态至空闲状态;即这个range不输出。
31、s4d、将当前执行周期的峰值与处于使用状态的区域进行匹配,如果这个某一峰值点peak落在range内,则刷新计数值counter为初始值z,并标记这个峰值点peak为已经使用掉;如果该峰值不与使用中的所有range匹配,则此峰值点peak标记为未使用。
32、s4e、经过步骤s4d,如果还有峰值点peak没有被使用,则进入对于未使用的峰值点peak进行新增操作,如果还有空闲状态的range,则将此峰值点peak对应的区域范围写入对应的range,且此range的计数值counter刷新为初始值z。
33、通过上述步骤,g个range就能够随着音乐的进行,自动匹配最佳的节拍区域,对节拍进行跟踪。
34、作为优选:所述range的数量、划分区域的范围、使用的peak数量都能够根据实际运用场景进行调整,以适应一些音乐场景。
35、基于多数音乐的分析,存在以下两点规律“噪音是不规律的存在,而音乐的节拍时常伴随着一定的频率”和“节拍发生时,在频域中会有一定区域发生突变,并持续一段时间”,当节拍发生时,频域变化量波形中,通常会有一个频率段的值发生变化,筛选频率区域能够过滤掉其他频率的干扰,只留下产生节拍感觉的频率。
36、作为优选:步骤s5中,计算节拍公式如下:
37、
38、
39、
40、out[i]=(val_sum-min_sum)/(max_sum-min_sum) (7)
41、其中,out[g]为反映节拍变化的数据,max[len]为频域变化的最大值,min[len]为频域变化的最小值。
42、在筛选频率区域进行变化求和,能够精确的定位节拍发生时刻的频域范围,使得输出的节拍稳定。
43、与现有技术相比,本发明的有益效果:
44、采用以上技术方案的一种提取音乐律动信息的方法,在频域范围内对音乐进行律动信息的提取,避免了时域分析的信息繁杂,在特殊场景也能提取音乐律动;本方法可以根据设备的算力进行调整,通过降低采样频率和增大滑动窗口,均能降低算力要求,满足大多数嵌入式平台的运行需求;提取过程中通过对频域变化量的筛选和添加模拟录波器函数,使得频域变化量能准确稳定的反映音乐节拍;在筛选频率区域进行变化求和,能够精确的定位节拍发生时刻的频域范围,使得输出的节拍稳定。本发明能充分提取音乐律动信息,并能平衡运算单元的算力消耗。
本文地址:https://www.jishuxx.com/zhuanli/20240618/23006.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表