基于Pd的“语音信号处理”教学探索
2013-10-12栗学丽
栗学丽
(山东大学信息科学与工程学院,山东济南250100)
0 引言
“语音信号处理”课程主要学习语音信号处理的原理、应用以及最新研究动态。该课程面向通信与信息工程、模式识别与人工智能等专业的高年级学生和研究生。由于此课程是一门理论性和实践性都很强的课程,目前国内高校通常采用基于Matlab编程仿真的实验辅助课堂理论教学,将教学内容中抽象的概念用例题结果的图形表示出来,便于学生理解教学内容[1]。
国外一些大学还采用Pd(Pure Data)编程软件[2]实时交互辅助语音信号处理的教学,如英国的谢菲尔德大学[2]、约克大学和美国的哥伦比亚大学[3]等。他们通过Pd即时播放语音处理效果,能更好地体现出语音信号处理的人机交互性。笔者2012年在谢菲尔德大学计算机系跟随R.Moore教授学习时,被这种教学手段所吸引。回国后,笔者将Pd引入本人的语音信号处理教学中,深受学生的欢迎。本文就此介绍Pd的编程以及它在语音信号处理中的应用,供读者参考。
1 Pd编程软件简介
Pd是一种类似于Max/MSP的实时图形化编程软件,多用于交互式电子音乐的制作。Pd和Max/MSP最初都是由数学家、音乐家M.Puckette设计的,只不过Max/MSP是商用软件,而Pd是开源免费软件,且支持多种操作系统,便于移植。正是由于Pd是开源软件,可免费下载它的源代码,所以有大量的程序员致力于它的开发使用。Pd的设计思想接近高级语言,但无需像其它编程语言那样学习句法格式等,而是采用图形控件连线方式编程,编程非常简单[4]。由于Pd采用数据流的编程结构,且底层操作是基于C语言,它与Matlab编程语言相比具有更好的实时交互性。又由于Pd采用图形控件编程,也就避免了C语言复杂的设计过程。所以Pd是一种结合了Matlab和C语言优点的编程软件。而且Pd的设计初衷就是制作、处理声音信号,因此很适合将它应用到语音信号处理中。
Pd的编程非常简单,点击新文件(File下的New)打开一个新的面板界面,点击放置(Put)可以在面板界面上放置若干个控件,如图1所示。常用控件的名称与用途列于表1中。每个控件都有自己的名称、输入接点和输出接点。控件的名称决定了它的功能,如控件adc~为模数转换物件,实现话筒数据的实时采集。把鼠标放到控件上,右击就可得到该控件的属性及帮助。控件的性质就可以通过修改其属性得到。控件上面的小长方形方块是其输入接点,下面的小长方形方块是其输出接点。不同的控件通过输入接点和输出接点用线段连接,从而实现数据流的传送。
图1 Pd编程界面
图2展示了一个语音实时话筒输入,并通过数字块实时显示规整的幅度数值,以及通过一个图形用户接口动态图形显示幅度值功能的程序。此外,点击编制的时频显示控件wsprobe~,可以看到实时采集到的语音信号的时域波形和同步的频域频谱。
表1 常用控件的名称及用途
图2 语音实时话筒输入和显示程序
图3给出了一个语音在时域和频域瞬间变化的截图。通过这个例子可以看出,Pd的编程比起Matlab和C语言简单得多,而且它的实时动态显示功能非常强,它能实时采集语音并同步显示时频效果,比起Matlab静态显示已存入计算机的语音的处理结果更能吸引学生的注意力。因此,将Pd引入语音信号处理的教学中,便于生动形象的教学,可增强授课效果。
图3 语音时频显示瞬时截图
2 Pd在语音信号处理教学中的应用
“语音信号处理”课程内容除了基础理论外,还不断有新的理论和应用出现。因此笔者授课时,注意综合国内外优秀教材,并引进最新的研究成果,以增加知识性和趣味性。每一章都设计了适合Pd实时显示的演示实验,内容见表2。借助Pd的形象化教学,增强了对抽象理论的理解,课堂气氛有了明显改观。
表2 基于Pd的演示实验内容
以第二章语音生成模拟为例,说明Pd程序的使用和效果。图4为语音生成演示实验的Pd主程序,在主程序下段,pd larynx为声门波生成子程序,bp~为带通滤波器物件,后随的两个参数分别为带通滤波器的中心频率和品质因子,都可动态调节。wsprobe~为时频显示程序,output~为可调音量的喇叭。在主程序上段,五个纵向滑杆分别表示基频值(Fx)、音质参数(VQ)、第一共振峰值(F1)、第二共振峰值(F2)和第三共振峰值(F3)。
分别滑动这些滑杆的滑块,可让学生实时听到这些参量发生变化时引起的声音变化,同时让学生观察时频显示图形上的时频变化。由视听结果可归纳出,基频值发生变化时,听到声音内容没有改变,但是音调发生粗、尖变化,看到相应的频谱图上的谐波间隔发生疏、密变化,这是声源部分起的作用。当共振峰发生变化时,可听到产生不同的声音,但是音调没有改变,看到频谱图上的不同频段上的峰值发生变化,这是声道传输部分起的作用。这样,通过实时交互让学生从听、视两方面感受声源、声音滤波器的变化带来的影响,促使学生更好地理解语音生成的源-滤波器模型原理,动态演示比起枯燥的讲解教学效果更好,学生印象会更深刻。
图4 语音生成的pd主程序
3 结语
综上所述,将Pd程序演示融入“语音信号处理”的教学中,可取得较好的教学效果。究其原因,一是由于Pd采用数据流的编程结构,一处的变化即刻在程序各处引起相应的变化,所以它具有较强的实时交互性,而且其图形、音频功能也很强,使得它在展现语音信号处理的效果上具有优势,从视听两方面同步进行感官刺激,学生的印象更深刻。二是利用Pd可以将抽象的理论具体化,通过分步实时交互操作帮助学生理解理论各部分的内涵,从而进一步加深对理论的理解,学生反映这种教学方法效果好。所以基于Pd的语音信号处理教学,是一种较好的教学方法,可推广应用。
由于“语音信号处理”课程讲授的内容是基于计算机处理方法的,所以在授课中插入基于Pd的计算机实时演示,让语音不仅可听而且可看,即时播放各种语音处理效果,使学生有了较清晰的感性认识。学生由此产生学习的兴趣以及对理论的深刻理解,使教学质量得以提高。今后将进一步开发基于pd的语音信号处理程序,推广它的应用。
在此,笔者感谢英国谢菲尔德大学计算机系Roger K.Moore教授的教学指导和帮助。
[1] 张力.MATLAB在语音信号处理辅助教学中的应用[J] .南京:电气电子教学学报,2005,27(2):96-99.
[2] http://www.pure-data.info
[3] Andrew Hassall.PD LPC:Linear Predictive Coding in PureData[D] .University of Sheffield,2011.
[4] Dan Ellis,Youngmoo Kim.TeachWare:Audio Resources[J] .IEEE Signal Processing Magazine,2008,25(3):143-145.
[5] Andy Farnell.Designing Sound[M] .London:Applied Scientific Press,2008.