微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 语音信号识别基于盲源信号分离的实现

语音信号识别基于盲源信号分离的实现

时间:07-07 来源:互联网 点击:


3.2 软件实现
Matlab仿真成功后,还需要用硬件来实现。这里以选用ADSP_BF533为例进行阐述。其流程图如图3所示。在用DSP编程实现时,其常见问题首先是白化处理中要用到特征值分解,采用的方式是进行多次QR分解。


为了使人耳可以分辨出不同的声音,观测时间应该足够大,在AD1836采集频率为48kHz时,采集约为22s的声音信号,其需要处理的数据长度为48K×22b,约为一百万个点。在常规的程序设计中,对此信号的处理就需要定义长度为一百万的数组,这远远的超出了内存容量,故其解决方案是直接访问(包括读写)存储在SDRAM中的数据,并把原来程序中的数组运算修改为针对每个元素的运算。每个元素均可直接访问SDR-AM,而不必将保存在SDRAM中的数据通过数组的方式传递到内存中。这就相当于用时间换取内存空间。
AD1836采集的数据为24位的二进制有符号整形数据。为了提高精度,减小误差,应选用32位而不是16位的数据格式进行处理。从24位到32位的转换可采用的方案如下:
对于负数:


其次,为了保证处理过程中的精度,还可选择将data转为float运算的方法。
一般地,处理完的数据数值很小,范围在(-10,10)之间,而播放时必须经过D/A,但D/A本身的热噪声会带来很大的误差,信噪比显然无法容忍。对此,其解决办法是将处理完的数据乘以较大的数值,这样,声音信号的相对值并没有发生改变,因而播放时可达到良好的效果。这一方法也是用数字电路工具(如DSP,FPGA等)处理模拟信号时的常用方法。

4 实际效果
图4所示是两段录音的音频信号时域图,图5则是经过瞬时线性混合后的信号时域图,图6是经过在BF533平台上利用FastICA算法得到的分离后的信号时域图。实验发现,图6所示的结果分离效果良好,可以清楚地听到不同的源信号。



5 结论
本文首先简单介绍了盲信号分离的数学模型以及常用的理论算法。之后详细介绍了用ADSP_BF533实现盲信号分离时的具体流程以及实现过程中常见问题的解决方案。本设计方案所需时间短,效率高,而且占用内存较少。在工程应用方面具有一定的参考价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top