论文部分内容阅读
【摘要】为了实现多机器人与多人交流情景下机器人之间的声音身份识别问题,本文开发了一套基于音频水印技术的多机器人声音身份识别仿真软件。该软件基于matlab开发,利用simulink对音频水印进行嵌入和提取,利用GUI进行参数设置和识别结果显示。软件仿真实例表明程序开发是成功的。
【关键词】音频水印;机器人;身份识别;Matlab
1.引言
机器人技术突飞猛进,是时代的潮流。未来机器人与人交流的情形将不再是“一机对一人”,而是“多机对多人”。然而与人交流时机器人之间需要通过声音识别对方身份,同时不能让参与交流的人有所觉察,所以需要在机器人声音中嵌入特征水印,解决多个机器人之间的声音识别问题。
语音识别和音频水印技术是计算机信息处理的关键技术。音频水印技术是指通过修改音频信号从而在原始信号中嵌入附加信息的技术。目前音频水印嵌入技术主要有DCT域音频水印嵌入、码分复用数字音频水印嵌入等等。音频水印识别技术主要有系统特征参数提取识别、DTW在线并行算法识别等等。
本文基于MATLAB开发环境,利用FDATool与用户界面GUI等设计工具,通过分频式音频水印嵌入与提取方法,开发了一套模拟多机器人交谈情形并识别各个机器人讲话时刻的仿真软件。
2.音频水印嵌入与提取方法
音频水印嵌入与提取方法的实质是在一段声音中嵌入特定的水印作为信息隐藏,接收后再将所隐藏信息提取出来的方法。
在本仿真软件中,首先选定一段声音作为原始基音,设定原始基音就是多个机器人相互交谈所发出的声音。假设机器人有N个,先在20HZ-20000HZ的频率范围内为N个机器人选定N种水印载波频率,依次用中心阻带频率为的N个带阻滤波器对原始基音进行滤波得到基音信号。然后为每个机器人指定一个身份识别ID号,把ID号的二进制数作为待嵌入水印数据,频率选为。再用第i个待嵌入水印数据对频率为fi的正弦波载波进行调制,把调制后的信号幅值调整到基音信号平均幅值数倍以下与基音信号叠加。水印添加时刻统一指定为基音信号的时刻。至此得到各个机器人的音频信号,也就是讲话声音。模拟讲话时,各机器人在设定时刻输出一次自己的音频信号,所有机器人的音乐声相互叠加齐鸣。
在多台机器人讲话的同时,每一个机器人对齐鸣声进行采样。先依次用中心通带频率为的带通滤波器对齐鸣音信号进行滤波,滤波后得到调制了的水印数据的正弦波载波信号,再用通带频率为f0的低通滤波器进行滤波,得到ID号的二进制数据。在对所有的载波频率都进行了一次同样的操作后,一个机器人就得到了所有机器人的ID水印数据,并获得各机器人的发声时刻。
3.软件设计与实现
多机器人声音身份识仿真别软件主要由音频水印嵌入模块和身份ID识别模块组成,通过MATLAB语言,FDATool设计工具实现音频水印的嵌入与提取,运用Simulink算法模拟多个机器人的交谈情形,并通过GUI用户界面设计工具实时检验发声机器人的身份ID和发生时刻。
3.1 音频水印嵌入模块
Sine wave模块用于生成水印载波频率为的正弦波,Subsystem模块使用Step函数产生水印二进制码波形,并设置频率为。Subsystem模块后面的延时模块Transport delay用于设置延迟播放声音时间。Triggered subsystem模块用于接收到高电平时触发显示当前接收时间。Sine wave模块和Subsystem模块生成的波形叠加后通过零阶保持器输出至扬声器。
3.2 声音身份识别模块
声音身份识别模块的基本结构如图2所示,From Audio Device模块为麦克风声音拾取。设置高频带通滤波器中心通带频率为,将拾取到的声音传给高频带通滤波器Digital Filter Design,将携带二进制水印数据的高频正弦波留下,其余信号抑制掉。由于正弦波有负值部分,需要用绝对值函数Abs将正值部分取出。设置低通滤波器Digital Filter Design1的通带频率为f0,将正弦波的正值部分中频率为f0的水印滤出。为了获得完整的二进制水印波形,需要对波形幅值进行调整。把水印信号送给Bias模块和符号函数Sign后,得到幅值为1或-1的波形,再通过波形幅值加1和0.5倍增益运算,提取出二进制水印波形。
3.3 GUI用户界面模块
GUI用户界面如图3所示。左上角的下拉菜单用于选择机器人编号,底下的滑动条用于设置机器人发声延迟时间。右上角的控制台方框内有两个按键:“讲话”和“聆听”,点击“讲话”按键后扬声器输出所选编号机器人的声音,点击“聆听”按键后麦克风接收外界声音。在控制台下方显示的是识别出的各机器人的发声时间。软件界面中央是以时间为横坐标的各机器人声音中所携带水印的波形图。
Matlab的GUI用于实现用户和机器之间的交互,在仿真软件中,底层程序将对Simulink模块中的参数进行设置,并将workspace中产生的数据通过显示在GUI用户界面上。例如设置机器人发声延迟时间时,需要对滑动条进行操作来设定时间值f1=str2double(get(handles.edit1,’String’));set_param
(‘wterprnt3ok/000/TransportDelay1’,’delay time’,
num2str(f1))实现将滑动条所设置的延迟时间传递给延时模块Transport delay,用于time delay的参数设置。在用户界面按下“讲话”按键,GUI底层程序将立即调用对应的发声模块。图3设置本台机器为Robot6,则将调用sim(‘m101’)函数。当按下“聆听”按键时,GUI调用sim(‘wterprnt3ok’)函数。Simulink模块执行完毕后,机器人发声水印数据保存在workspace中,通过assignin(‘base’,’y16’, simout)y=evalin(‘base’,’y16’)将workspace中的数据传递给GUI,用axes(handles.axes1);plot(t,y)显示水印数据。Triggered subsystem模块将接收到高电平时的当前时间保存至workspace中,利用assignin(‘base’,’y24’,simout8);y8=evalin(‘base’,’y24’)
函数workspace中的数据传递给GUI,set(handles.edit9,’string’,num2str(y8-0.16963))函数将声音接收时间转化成字符串显示。
GUI用户界面的操作过程如下:打开GUI用户界面,先利用下拉菜单选择机器人编号,再利用8个滑动条设置8个机器人的发声时间。设置完成后按下“讲话”按钮和“聆听”按钮,8个机器人的水印波形及发声时间及显示在界面上。
4.软件运行实例
打开GUI用户界面,在机器号选择下拉菜单中选择对应本机的机器号6,则将要嵌入的水印设置为二进制数“11011”,D0位和D4位均为“1”,都为高电平,同样其他的7台电脑依次选定好机器号,然后在机器人延迟时间选项中调节ROBOT1滑动条,设置发声时刻为第0.423912秒,其他7台电脑依次按对应的ROBOT号设置发声时刻第0.71739秒、第0.978261秒、第1.30435秒、第1.56522秒、第0.489129秒、第0.847827秒、第1.04348秒。按下“讲话”按键,simulink读取workspace中的原始音频,见图4(a),并用第i个待嵌入水印数据对频率为fi的正弦波进行载波,见图(b)。随后水印信号与原始音频叠加,通过计算机的扬声器播放出。机器人发声完毕后再按下“聆听”按键,麦克风接收其他计算机播放的声音,通过高频滤波器将混合音中的水印滤出,滤出的水印见图4(c)。载波水印通过低频滤波器后,提取的水印见图4(d)。图4(e)为水印数据调整后的结果。待聆听结束后GUI用户界面同时显示8台电脑的声音身份ID号以及发声时间:0.42393秒、0.71741秒、0.97828秒、1.3043秒、1.5652秒、0.48915秒、0.84785秒、1.0435秒。此运行实例是编号为“101”的声音水印嵌入与提取的过程,软件完整运行的效果见图3。
5.总结
本文开发了一种基于音频水印技术的多机器人声音身份识别仿真软件。软件通过音频水印嵌入与提取,来模拟多机器人之间交流时的声音身份识别问题。运行实例对软件的运行效果进行了验证。本软件的实现,有助于机器人与人之间“多机对多人”交流情形声音识别的探索。
参考文献
[1]张志涌.精通MATLAB6.5版[M].北京:北京航空航天大学出版社,2003.
[2]李宏松,苏健民,黄英来等.基于声音信号的特征提取方法的研究[J].信息技术,2006,1(1):91-94.
[3]朱宇,宋艳.嵌入式语音识别系统特征参数提取研究[J].计算机技术与发展,2011,21(7):246.
项目来源:上海理工大学2013年度校级大学生创新创业训练计划项目(项目编号:XJ2013090)。
作者简介:
高钧浩(1993—),男,江苏南通人,大学本科,现供职于上海理工大学光电学院自动化系。
刘海洋(1993—),男,河南洛阳人,大学本科,现供职于上海理工大学光电学院自动化系。
盛煜荣(1993—),男,江苏南通人,大学本科,现供职于上海理工大学光电学院自动化系。
指导老师:刘歌群,上海理工大学光电学院讲师。
【关键词】音频水印;机器人;身份识别;Matlab
1.引言
机器人技术突飞猛进,是时代的潮流。未来机器人与人交流的情形将不再是“一机对一人”,而是“多机对多人”。然而与人交流时机器人之间需要通过声音识别对方身份,同时不能让参与交流的人有所觉察,所以需要在机器人声音中嵌入特征水印,解决多个机器人之间的声音识别问题。
语音识别和音频水印技术是计算机信息处理的关键技术。音频水印技术是指通过修改音频信号从而在原始信号中嵌入附加信息的技术。目前音频水印嵌入技术主要有DCT域音频水印嵌入、码分复用数字音频水印嵌入等等。音频水印识别技术主要有系统特征参数提取识别、DTW在线并行算法识别等等。
本文基于MATLAB开发环境,利用FDATool与用户界面GUI等设计工具,通过分频式音频水印嵌入与提取方法,开发了一套模拟多机器人交谈情形并识别各个机器人讲话时刻的仿真软件。
2.音频水印嵌入与提取方法
音频水印嵌入与提取方法的实质是在一段声音中嵌入特定的水印作为信息隐藏,接收后再将所隐藏信息提取出来的方法。
在本仿真软件中,首先选定一段声音作为原始基音,设定原始基音就是多个机器人相互交谈所发出的声音。假设机器人有N个,先在20HZ-20000HZ的频率范围内为N个机器人选定N种水印载波频率,依次用中心阻带频率为的N个带阻滤波器对原始基音进行滤波得到基音信号。然后为每个机器人指定一个身份识别ID号,把ID号的二进制数作为待嵌入水印数据,频率选为。再用第i个待嵌入水印数据对频率为fi的正弦波载波进行调制,把调制后的信号幅值调整到基音信号平均幅值数倍以下与基音信号叠加。水印添加时刻统一指定为基音信号的时刻。至此得到各个机器人的音频信号,也就是讲话声音。模拟讲话时,各机器人在设定时刻输出一次自己的音频信号,所有机器人的音乐声相互叠加齐鸣。
在多台机器人讲话的同时,每一个机器人对齐鸣声进行采样。先依次用中心通带频率为的带通滤波器对齐鸣音信号进行滤波,滤波后得到调制了的水印数据的正弦波载波信号,再用通带频率为f0的低通滤波器进行滤波,得到ID号的二进制数据。在对所有的载波频率都进行了一次同样的操作后,一个机器人就得到了所有机器人的ID水印数据,并获得各机器人的发声时刻。
3.软件设计与实现
多机器人声音身份识仿真别软件主要由音频水印嵌入模块和身份ID识别模块组成,通过MATLAB语言,FDATool设计工具实现音频水印的嵌入与提取,运用Simulink算法模拟多个机器人的交谈情形,并通过GUI用户界面设计工具实时检验发声机器人的身份ID和发生时刻。
3.1 音频水印嵌入模块
Sine wave模块用于生成水印载波频率为的正弦波,Subsystem模块使用Step函数产生水印二进制码波形,并设置频率为。Subsystem模块后面的延时模块Transport delay用于设置延迟播放声音时间。Triggered subsystem模块用于接收到高电平时触发显示当前接收时间。Sine wave模块和Subsystem模块生成的波形叠加后通过零阶保持器输出至扬声器。
3.2 声音身份识别模块
声音身份识别模块的基本结构如图2所示,From Audio Device模块为麦克风声音拾取。设置高频带通滤波器中心通带频率为,将拾取到的声音传给高频带通滤波器Digital Filter Design,将携带二进制水印数据的高频正弦波留下,其余信号抑制掉。由于正弦波有负值部分,需要用绝对值函数Abs将正值部分取出。设置低通滤波器Digital Filter Design1的通带频率为f0,将正弦波的正值部分中频率为f0的水印滤出。为了获得完整的二进制水印波形,需要对波形幅值进行调整。把水印信号送给Bias模块和符号函数Sign后,得到幅值为1或-1的波形,再通过波形幅值加1和0.5倍增益运算,提取出二进制水印波形。
3.3 GUI用户界面模块
GUI用户界面如图3所示。左上角的下拉菜单用于选择机器人编号,底下的滑动条用于设置机器人发声延迟时间。右上角的控制台方框内有两个按键:“讲话”和“聆听”,点击“讲话”按键后扬声器输出所选编号机器人的声音,点击“聆听”按键后麦克风接收外界声音。在控制台下方显示的是识别出的各机器人的发声时间。软件界面中央是以时间为横坐标的各机器人声音中所携带水印的波形图。
Matlab的GUI用于实现用户和机器之间的交互,在仿真软件中,底层程序将对Simulink模块中的参数进行设置,并将workspace中产生的数据通过显示在GUI用户界面上。例如设置机器人发声延迟时间时,需要对滑动条进行操作来设定时间值f1=str2double(get(handles.edit1,’String’));set_param
(‘wterprnt3ok/000/TransportDelay1’,’delay time’,
num2str(f1))实现将滑动条所设置的延迟时间传递给延时模块Transport delay,用于time delay的参数设置。在用户界面按下“讲话”按键,GUI底层程序将立即调用对应的发声模块。图3设置本台机器为Robot6,则将调用sim(‘m101’)函数。当按下“聆听”按键时,GUI调用sim(‘wterprnt3ok’)函数。Simulink模块执行完毕后,机器人发声水印数据保存在workspace中,通过assignin(‘base’,’y16’, simout)y=evalin(‘base’,’y16’)将workspace中的数据传递给GUI,用axes(handles.axes1);plot(t,y)显示水印数据。Triggered subsystem模块将接收到高电平时的当前时间保存至workspace中,利用assignin(‘base’,’y24’,simout8);y8=evalin(‘base’,’y24’)
函数workspace中的数据传递给GUI,set(handles.edit9,’string’,num2str(y8-0.16963))函数将声音接收时间转化成字符串显示。
GUI用户界面的操作过程如下:打开GUI用户界面,先利用下拉菜单选择机器人编号,再利用8个滑动条设置8个机器人的发声时间。设置完成后按下“讲话”按钮和“聆听”按钮,8个机器人的水印波形及发声时间及显示在界面上。
4.软件运行实例
打开GUI用户界面,在机器号选择下拉菜单中选择对应本机的机器号6,则将要嵌入的水印设置为二进制数“11011”,D0位和D4位均为“1”,都为高电平,同样其他的7台电脑依次选定好机器号,然后在机器人延迟时间选项中调节ROBOT1滑动条,设置发声时刻为第0.423912秒,其他7台电脑依次按对应的ROBOT号设置发声时刻第0.71739秒、第0.978261秒、第1.30435秒、第1.56522秒、第0.489129秒、第0.847827秒、第1.04348秒。按下“讲话”按键,simulink读取workspace中的原始音频,见图4(a),并用第i个待嵌入水印数据对频率为fi的正弦波进行载波,见图(b)。随后水印信号与原始音频叠加,通过计算机的扬声器播放出。机器人发声完毕后再按下“聆听”按键,麦克风接收其他计算机播放的声音,通过高频滤波器将混合音中的水印滤出,滤出的水印见图4(c)。载波水印通过低频滤波器后,提取的水印见图4(d)。图4(e)为水印数据调整后的结果。待聆听结束后GUI用户界面同时显示8台电脑的声音身份ID号以及发声时间:0.42393秒、0.71741秒、0.97828秒、1.3043秒、1.5652秒、0.48915秒、0.84785秒、1.0435秒。此运行实例是编号为“101”的声音水印嵌入与提取的过程,软件完整运行的效果见图3。
5.总结
本文开发了一种基于音频水印技术的多机器人声音身份识别仿真软件。软件通过音频水印嵌入与提取,来模拟多机器人之间交流时的声音身份识别问题。运行实例对软件的运行效果进行了验证。本软件的实现,有助于机器人与人之间“多机对多人”交流情形声音识别的探索。
参考文献
[1]张志涌.精通MATLAB6.5版[M].北京:北京航空航天大学出版社,2003.
[2]李宏松,苏健民,黄英来等.基于声音信号的特征提取方法的研究[J].信息技术,2006,1(1):91-94.
[3]朱宇,宋艳.嵌入式语音识别系统特征参数提取研究[J].计算机技术与发展,2011,21(7):246.
项目来源:上海理工大学2013年度校级大学生创新创业训练计划项目(项目编号:XJ2013090)。
作者简介:
高钧浩(1993—),男,江苏南通人,大学本科,现供职于上海理工大学光电学院自动化系。
刘海洋(1993—),男,河南洛阳人,大学本科,现供职于上海理工大学光电学院自动化系。
盛煜荣(1993—),男,江苏南通人,大学本科,现供职于上海理工大学光电学院自动化系。
指导老师:刘歌群,上海理工大学光电学院讲师。