首页 > 技术文章 > 语音信号实时采集与处理

spjy 2015-11-21 17:40 原文

<一>基于MATLAB的语音信号采集和分析系统的可视化设计

论文摘要:设计和开发了一种基于MATLAB的语音采集与分析的可视化系统,该系统通过Realtek Ac97型声卡和MATLAB的数据采集工具箱低成本地实现了语音信号的实时采集,并利用 MATLAB 强大的数值计算和信号处理功能高精度地完成了语音信号的分析工作。系统还使用 MATLAB 的图形用户界面设计工具进行了优化,通过简单的对话框和菜单操作取代了复杂的程序修改和调试过程,使得系统的使用更加方便灵活。

论文理解:系统主要包括语音采集和处理两部分,使用MATLAB数据采集工具箱通过笔记本自带声卡对外界模拟语音信号进行采集、量化获得数字语音信号,采集到的数据暂时保存在内存或磁盘中,再利用MATLAB对数字语音信号进行相应算法的处理和分析,最后经由声卡D/A转换成模拟语音信号送到扬声器播放。这种设计方案比较适用于进行算法模拟仿真,论文中的声卡具有最高16位的采样位数和44.1kHz的采样速率,能够对人的歌声较高的保真进行采集。

 

  MATLAB有三种方式可以驱动声卡:建立模拟输入设备对象、wavrecord、audiorecorder。

  语音信号主要的特征参数:短时能量、短时平均幅度、短时平均过零率。

  对于如何进行实时性的处理有待进一步研究,在计算机中不可能实现完全的实时,采集到的数据一般保存到数据缓冲区,再经过算法处理,最后进行播放,在处理的这个过程中必然会有一段延迟时间。有两个问题要考虑,第一、如何设置数据缓冲区的大小保证采集到的数据都会被处理而不被覆盖,第二、怎样保证经过算法处理后的声音保持连续,这必然就要求算法处理的时间要小于数据缓冲区保存信号的播放时间。

<二>基于DSP的实时语音采集和处理系统

论文摘要:论述了基于DSP56F862 EVM开发系统的实时数字音效处理系统,在对数字音频信号的混响、合唱、均衡等多种音效方式合成的原理和算法研究与仿真的基础上,在硬件上实现了这些音效的处理,并能够实时处理后播放。

论文理解:系统主要由DSP56F826和CodecCS4218组成,人的歌声经MIC转换为电平信号、经Codec A/D转换成数字信号保存到输入数据缓冲区,DSP56F826调用算法进行数据处理并输出到输出缓冲区,最后经Codec D/A转换还原为模拟信号,经由功放电路输出。这种设计方案适用于实际的设计,不同的方案使用具体的算法来进行分析,具有实际运用的意义。对于人的歌声处理,继而形成比较好的效果,关键还是在于具体算法的设计上。

  DSP56F826运算速度为40MIps、64Kx16bit程序存储区、64Kx16bit数据存储区、工作在70MHz时可对外部存储器零等待存取。

  Codec包括A/D、D/A转换器、16位立体声、使用12.288M晶振采样频率为8~48kHz。

  DSP与Codec通过SSI串行通信,Codec每次向DSP发送一个16bit的采样数据,DSP把接收的数据保存到输入缓冲区,同时对已存入的数据进行处理,再存入输出缓冲区,DSP的SSI输出中断程序会定时执行从输出缓冲区取数,最后发送到Codec以模拟的方式输出,从而实时处理。

  一些算法实现的效果:

  混响效果:混响音必须发生在原唱的一段时间之后,人耳对时间间隔在30~50ms以上的两个信号才能分辨出来。(IIR滤波器)

  合唱效果:类似混响效果,所不同的是它的延迟时间函数是随时间变化而变化的低频信号。(最多3~4人,更多就要加入改变音色、声音频率等时变函数)

  均衡效果:对某一频段内的信号进行增强或衰减以改善输出频响特性,提高听觉效果。

那么该如何实现伴唱或者和声的效果呢?我认为在原唱声音的基础上来进行和声具有比较高的可行性,第一,用合成的声音没有原唱的声音来得逼真,第二,伴唱是人在唱,低于或高于原唱的音调,那么将原唱进行适当的处理来生成和声效果会比较好。虽然是类似合唱或者回音的效果,但关键在于什么时候需要和声,什么时候不需要和声?是否要对原唱进行乐理上的判定,例如主旋律,或者高潮部分进行判定?但对于实时性的系统来说,这都很难去界定。

 

推荐阅读