APP下载

知 音 识 谱 机 械 手 的 设 计

2018-12-10陈小桥孙经纬王子桥蔡静宜

实验室研究与探索 2018年11期
关键词:声纹功能测试乐谱

陈小桥, 孙经纬, 王子桥, 蔡静宜

(武汉大学 电子信息学院, 武汉 430072)

0 引 言

机器智能化技术是科学技术发展的综合性结果,与众多学科发展密切相关,对社会经济发展产生重大影响。机器人是先进制造技术和自动化装备的典型代表,是人造机器的“终极”形式,是多种高新技术发展成果的综合集成,当今社会越来越多的智能机器已经被应用在我们的生活中[1-2]。自1958年美国联合控制公司研制出第一台机械手以来,机械手在近几十年发展迅速。同时,随着网络技术的快速发展,机械手与智能应用结合得更加紧密[3-4]。目前,机械手智能化在工业生产和科学研究方面应用很广,但在日常生活中鲜为人见,即使已有基于数控技术的弹琴机械手研究[5],但其单一的功能制约了应用发展。因此,探索智能机械手的更多用途就愈显重要。

本文研究了一款智能机械手,该机械手通过电动机驱动滑轨移动和手指按键,能够进行电子琴演奏。结合网络上流行的听歌识曲和乐谱识别功能,能自行演奏相应歌曲,适用于公共场合表演、家庭娱乐和电子琴入门教学等方面,具有很大的应用前景和市场潜力。

1 系统功能

本系统可实现听歌识曲、乐谱识别和演奏功能,系统功能框图如图1所示。图中,机械手可通过对外界音源进行录音,处理音源后识别歌曲实现听歌识曲功能。通过对乐谱进行拍照,处理图像后识别乐符实现乐谱识别功能。成功识别歌曲后,依据电子乐谱协议,驱动机械手弹奏电子琴,实现演奏功能[6]。

图1 系统功能框图

2 系统设计

2.1 系统结构

为实现智能机械手的听歌识曲、乐谱识别和演奏功能,本系统分为核心平台、控制平台和执行机构3部分,系统结构框图如图2所示。图中,核心平台用于实现人机交互以及听歌识曲、乐谱识别功能,其中,显示屏用于显示交互式界面,摄像头和拾音器分别用于乐谱拍摄和歌曲录音,串口用于和控制平台进行通信。控制平台用于控制执行机构的一系列动作,对机械手演奏过程进行时序调配和资源调度,其中,PWM波控制电动机的转速,控制信号控制电动机的方向,串口用于接收核心平台指令,时钟信号用于实现硬件时序的同步。执行机构用于实现机械手的演奏过程,通过驱动伺服电动机和舵机,实现滑轨移动和机械手按键。

图2 系统结构框图

2.2 系统实现

2.2.1听歌识曲功能

一首歌曲的声纹信息是一个附属有时间属性的数字集合,该声纹与人的指纹一样,都是独一无二的[7]。本系统采用基于乐曲声纹的音乐检索方式,通过实时录制一段短时间的乐曲,提取声纹信息,然后与数据库中的声纹进行对比,返回最匹配的歌曲结果[8]。其本质是一种音乐检索,将原始歌曲的波形信号进行时频变换,得到时频信号,再从时频信号中提取出特定的声纹信息,最后利用该声纹信息进行乐曲匹配。算法流程如图3所示。

图3 基于声纹检索的算法流程图

(1) 将原始音乐波形由时域变换到频域,为在频谱图中获得时间和能量的关系,采用短时傅里叶变换(STFT):

(1)

式中:w[m]为窗函数;n为时间序号。

考虑到实际工程的运用,令窗口长度为R,STFT在N个等间隔频率ωk=2πk/N对X(ejω,n)进行抽样,

k=0,1,…,N-1

(2)

式中,N≥R。变换之后得到图4所示的频谱图。图中,小黑点代表能量极大值点。

图4 STFT变换频谱图

(2) 从频谱图中提取一系列的landmark,即频谱图中的能量峰值。根据STFT变换后的数据进行能量计算:

E=|X(k,n)|

(3)

能量差分为:

E′(i,n)=E(i,n)-E(i-1,n),

i=1,2,…,N-1

(4)

式中:当i=0时,E′(i,n)=0。

为找到频谱图中的能量极大值点,首先找出参数大小为scope的能量最大元素位置,scope为每1帧的位移量,一般选择10~40 ms之间。即找出点E(x,y)在范围(i

(3) 利用选定的landmark并使用Shazam算法构造一系列指纹。targetzone是一个landmark构造指纹的范围,将选定的landmark和其target zone中所有landmark两两组合,构成一个指纹。指纹由3部分构成:2个landmark的频率差、时间差和选定的landmark的时间。landmark的时间表示这个指纹出现的时刻。构造指纹库时,将提取的指纹放入指纹库,指纹库可以用散列表实现,每个表项表示相同指纹对应的音乐ID和time[9]。构造指纹原理如图5所示。

(a) 选定的landmark和其target zone

(b) landmark两两组合构造指纹

图5 构造指纹原理图

图5(b)为选定的landmark(t1,f1)和其targetzone中某个landmark(t2,f2)的组合,构成指纹(t1,Δt,Δf),其中,Δt=t2-t1,Δf=f2-f1。

(4) 音乐检索。从录制的音乐提取特征指纹,与指纹库中的指纹进行比对,返回每一首歌曲的最大匹配程度,当最高匹配度达到设定的阈值时,显示匹配程度最高的歌曲为匹配结果[10]。

2.2.2乐谱识别功能

通过核心平台摄像头获取乐谱图像,对图像进行预处理,利用大津法全局阈值、RADON倾斜校正和SSIM(Structural SIMilarity)[11]相似度匹配等算法实现曲谱的识别。乐谱识别流程如图6所示。

图6 乐谱识别流程图

(1) 曲谱照片预处理。

第1步,二值化、膨胀处理和边缘检测。首先使用大津法全局阈值将输入的扫描图像转化为二值图像;然后进行膨胀处理,即对二值图像进行由一个称为结构元素的集合控制的加长或变粗的操作。为使相邻文本和字符尽可能地连结成一个整体,可适当增加膨胀次数和填充孔洞;再用Canny算子进行边缘检测[12]。

第2步,Radon变换。Radon变换是将沿一条特定直线求函数积分值投影到Radon变换平面上,积分值在Radon变换平面上的位置由直线与原平面原点的距离及倾斜角度所决定。Radon变换面的构造需要将原始函数沿图像平面内所有可能的直线进行积分,然后将沿直线积分所得到的积分值投影到变换平面上对应的点[13]。

第3步,旋转。通过对Radon变换求得的积分值进行排序,选取不小于最大积分值的80%的积分值,获得其对应的倾斜角度,取其平均值作为最终倾斜角度[14]。

(2) 谱线处理。检测谱线之前先对变形进行自动校正,将谱线沿水平方向“拉直”,使谱线的直线特征得以恢复和加强,然后采用水平投影法确定谱线的位置并将其删除[15-16]。

(3) 乐符识别。乐符识别使用SSIM相似度匹配算法来实现,对每个乐符建立一个库,将它们保存在本地库中,然后使用SSIM评价体系,对待识别的乐符分别和库中各个乐符进行匹配,从而选取SSIM评价最高的乐符作为识别乐符的结果。

2.2.3演奏功能(电子乐谱协议)

本研究为电子乐谱制定了相应的规则,电子乐谱协议规定:每首歌曲的电子琴谱信息存放在1个曲谱向量中,向量中每个元素都是一个32位二进制数,向量的长度为曲谱的长度。其中,每首曲子中的每1个音符用一个32位数表示,将这个32位数据封装为1帧,每1数据帧都包含了1个音符的指法、音律和节拍信息。表1、2给出了电子乐谱协议的数据帧格式。

表1 数据帧格式

表2 键音/节拍与键码对应关系

注:“*”在音调左侧表示降调,在音调右侧表示升调

根据协议框架编写标准琴谱,控制平台控制滑轨的移动和机械手指按键,实现演奏功能。演奏开始时,发送初始化帧,将滑轨配置在原点处;演奏结束时,发送结束帧,同时初始化滑轨,使滑轨回到原始起点,避免每次演奏中出现的抖动偏差对下一次演奏造成影响。

3 系统测试

系统基于英特尔凌动处理器的MinnowBoard Turbot嵌入式平台,辅以Intel Genuino 101平台、STM32F103控制芯片和罗技高清摄像头,预装Windows 10操作系统、Microsoft Visual Studio 2010集成开发环境、Keil uVision5和Matlab Runtime Library。系统测试分为听歌识曲功能测试、乐谱识别功能测试和演奏功能测试。听歌识曲功能测试和乐谱识别功能测试主要检验听歌识曲功能和乐谱识别功能以及听歌识曲的成功概率。演奏功能测试主要检验音乐识别成功后,机械手能否根据主控芯片发出的歌曲信息进行演奏。

3.1 听歌识曲功能测试

为测试听歌识曲功能,系统提前收录20首经典歌曲。系统开机后,选择听歌识曲功能,开始录音后播放其中任意一首歌曲,测试结果如表3所示。

从表3可以看出,程序在核心平台上是可执行的,听歌识曲功能的成功概率在87.5%以上。需要说明的是,系统歌曲库易于扩展,能根据实际需要任意录入歌曲,实现更丰富的歌曲识别功能。

表3 部分歌曲测试结果

3.2 乐谱识别功能测试

为了测试乐谱识别功能,系统提前收录一部分乐谱。以乐谱“稻香”为例,系统开机后,选择乐谱识别功能,对乐谱进行拍摄,如图7所示。

图7 乐谱拍摄过程

读谱成功后选择识谱,过程如图8所示。

(a) 原始乐谱

(b) 预处理后的每个乐符

(c) 谱线删除后的乐符识别结果

图8(c)中,识别出的不同数字代表不同的乐符,通过与乐谱库进行比对即可识别。

3.3 演奏功能测试

在完成听歌识曲或乐谱识别功能后,执行机构收到主控芯片发出的歌曲信息,控制滑轴和舵机,带动机械手进行曲目演奏,演奏过程如图9所示。测试结果表明,听歌识曲和乐谱识别均有较高的识别率,并且能够通过主控核心平台向控制芯片传输歌曲信息,从而实现机械手的演奏。

图9 正在进行演奏的机械手

4 结 语

本文设计了一套完整的知音识谱机械手,可以流畅地完成乐曲演奏,实现听歌识曲和乐谱识别功能。制定了一套全新的电子乐谱协议,规定以4 Bytes为1帧,每帧代表一个音符。对乐曲进行频谱分析,提取出每首乐曲的声纹信息,通过在声纹库中进行搜索比对完成听歌识曲功能。利用摄像头获取乐谱图像,对图像进行二值化、Radon变换和SSIM相似度匹配等算法完成乐谱识别功能。系统可以被应用于乐器辅助教学和相关场合的歌曲演奏,也可以为机器智能化应用拓展新的方向。

猜你喜欢

声纹功能测试乐谱
山之高
某内花键等速传动轴八功能测试夹具设计
乐谱:放飞梦想
屏幕即指纹识别
一毛学琴记——乐谱失踪
基因密码乐谱
基于数字水印的人脸与声纹融合识别算法
声纹
声纹的妙用