音频分离程序使用说明.docx

上传人:公**** 文档编号:542905038 上传时间:2023-05-15 格式:DOCX 页数:15 大小:499.74KB
返回 下载 相关 举报
音频分离程序使用说明.docx_第1页
第1页 / 共15页
音频分离程序使用说明.docx_第2页
第2页 / 共15页
音频分离程序使用说明.docx_第3页
第3页 / 共15页
音频分离程序使用说明.docx_第4页
第4页 / 共15页
音频分离程序使用说明.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《音频分离程序使用说明.docx》由会员分享,可在线阅读,更多相关《音频分离程序使用说明.docx(15页珍藏版)》请在金锄头文库上搜索。

1、面向音频的盲分离算法实现程序使用说明 院 系 计算机科学与技术学院 专业班级 物联网工程1201班 姓 名 杨兴东 学 号 U201215114 指导教师 刘芳 2016年 5 月 28 日目录1 相关介绍32 程序使用说明43 结果验证104 总评151 相关介绍面向音频的盲源分离程序首先是能够读入音频,读入音频才能够对音频内的数据进行相应的运算处理。我们平时使用的多媒体文件有很多种类,例如mp3,raw等等,而在这之前,wav音频格式是多媒体文件中最常使用的一种声音波形文件格式。wav文件都是由两部分组成,分别文件头部分和音频信号数据。在了解到wav文件的格式之后,我们便可以读取wav数据

2、内容,从而得到我们所需要的音频数据信号。如果有n个混合源信号,那么我们观测到的信号也是n个,因为现在所有算法并没有很好的解决观测信号少于源信号得这种情况。所以,观测信号的数目一定是大于等于源音频信号的。因为举例采用的两个音频混合,为了更好理解,见图1-1。图1-1 观测信号采集图2 程序使用说明为了更好符合测试数据,我在http:/research.ics.aalto.fi/ica/cocktail/cocktail_en.cgi这个网站上找到了一些测试数据,在此测试我选用的是两个音频源信号的混合。混合后,我得到的是两个wav文件。如图2-1。图2-1 观测信号文件示意图打开播放,是两个声音的

3、混合,选用的是一个人说话,和一个警铃声,两个wav我们听到的基本是一样的,没有什么太明显的区别,我们执行音频读入程序读出wav文件的内容。读出来wav的数据之后,我们将其保存在2个txt文件中,然后我们就是需要对这些数据进行处理,每组数据都是50000*1。基于算法实现是使用C语言完成的,所以界面制作采用MFC,界面布局基本如图2-2。图 2-2 盲源音频信号分离程序界面下面详细阐述一下各个按钮的功能。首先是最下面一行的9个音频,点击相应音频就会播放,这是一些基本特征相同的源声音信号,在把这些源声音信号混合之后,我们可以通过程序对其进行相应的分离。Open按钮可以打开相应的目录选择文件,得到文

4、件的路径,wavread函数是对相应文件来读取音频数据,并写入文件中。Open1和open2可以打开目录选取对应的音频数据TXT文件,得到相应的路径,ICA音频分离是执行主程序,对数据进行计算分离,得到相应的分开的音频数据。由于我的目的是音频分离,所以存在两个源信号音频,称为j1.wav和j2.wav,这两个源信号音频混合之后得到两个混合的音频信号,设为j.wav和jj.wav,我们是读入混合之后的两个音频信号j.wav和jj.wav,并对其内数据进行处理,最后写入文件之后为了比对,我将最后处理完的数据仍旧是写成wav格式,设为save1.wav和save2.wav,用这两个音频信号与j1.w

5、av和j2.wav进行比对。点击OPEN按钮,可以打开文件的相应目录,选择相应的混合好的音频信号,如图2-3。图2-3 程序测试open按钮示意图 点击wavwread按钮,就会对wav音频文件进行读取,因为后面需要测试结果以及对比波形信号,所以我在此处将其读成数组,保存在TXT文件,以备后面所用,见图2-4。图2-4 程序测试wavread按钮示意图读取之后,函数会将数据写到TXT文件内,供读取所用。我们会在相应的目录里看到与之对应的TXT文件,图2-5。图2-5 音频信号文件数据图打开TXT文件,可见到文件内相应的数据,这就是构成音频文件的相应数据,也是利用函数读取wav文件舍弃掉文件头部

6、分得到的数据。利用open1和open2按钮加载相应的文件路径之后,就可以进行主程序运算分离了,见图2-6。图2-6 程序执行示意图经过几分钟的计算,程序运行完成。图 2-7 程序测试完成示意图我们打开对应的文件目录,可见出现的对应文件,ICA分离程序成功运行完成。见图2-8。图 2-8 程序测试生成文件示意图ICA程序执行完成,为了更好地对比数据,我选择了生成两个TXT文件,TXT文件内分离之后的音频数据。如图2-9。图2-9 解混音频文件数据示意图3 结果验证接下来就是系统的测试结果,我以两个声音的混合作为例子,来验证音频分离程序的性能,为了便于比较,两个声音特征尽量相同,也就是说声音的频

7、率,长度等特征都相同。而对于性能的验证需要一些科学的措施,而不能是一些没有根据的感觉,我采用对音频信号波形的分析来验证fastICA音频分离程序的性能优劣。在之前,执行过fastICA程序,生成了两个TXT文件。因为选用的是两个声音的混合信号,所以最后分离完成,得到的也是两个文件,为了分析音频信号数据,根据文件内的数据做出波形来比对,图3-1是源音频信号的波形,这是混合之前的两个音频信号。图 3-1 源信号音频波形图图3-1是源信号音频的波形图,我选出的两个音频一个是警报声,另一个是一个人的说话声,所以在上图的波形图中我们可以看到第一个图是一个声音多次循环,因为根据解析出来的数据是可以知道,这

8、两个音频信号都是50000*1的数组,所以X轴坐标最大为5*104次方,波形图下面的信号就是一个人说话的声音,是不规则的波形,这是源音频信号的波形。而将这两个音频信号混合之后,我们得到混合音频,也就是实际上我们观测到的音频信号,因为现在对于只接收到的观测信号少于源音频信号数量的这种情况,暂时还没有一种很好的算法可以完美解决,所以我们观测的音频信号是两个。波形图如下:图 3-2 观测的混合音频信号波形图两个观测信号,就是两个麦克风接收到的信号,而两个麦克风对混合之后的信号进行接收,所以基本上波形是一致的,数据也是50000*1。我们可以从图中看出这是图3-2两个声音的混合。接下来就是对混合音频进

9、行分离后的数据分析,波形图如下:图 3-3 解混音频信号数据图根据图上我们可以看出,这个图3-3与图3-1的源音频信号基本一致,我们将图像对比来看:图 3-4 源信号1与解混信号波形图对比根据对比图来看,我们发现X轴保持一致,但是Y轴坐标不同,根据波形图的意义来看,X轴疏密程度代表着频率,也就是音调,而Y轴代表着振幅,振幅就是响度,最高点与最低点之间的差值越大,代表着响度越大。所以我们根据上图可以看出,在混合音频信号经过fastICA程序之后,分离出来的音频与源音频对比,声音的频率基本保持不变,而且振幅的波动基本不变,但是我们可以发现Y轴坐标变化了,这就说明振幅在保持原来特征的基础上,整体变小

10、了,也就说声音音调没有变化,但是声音变小了,我在尝试播放了这个声音之后,发现基本与源音频的声音一致,但是夹杂了少许的噪声,而且整体声音感觉略低,这个也可以解释不是完全一致,而噪声的存在我经过检查,在运算时,一些运算都采用的是近似值或者是一种趋近计算,而不是使用数学方法计算出来的精确值。接下来我们对比第二个源音频信号,结果如图:图 3-5源信号2与解混信号波形图对比根据音频信号2的波形图对比来看,我们发现对于信号2的分离最后结果相似度没有第一个信号分离结果性能好,横坐标没有变化,是没有问题的,我们发现纵坐标依旧减小了,这个影响也不大,因为第一个信号振幅也是减小的,但是不影响音调,这个没有什么问题

11、,但是发现第二个音频信号的分离波形与源音频信号相差较为明显。我打开最后生成的wav文件,发现声音特征是没有变化的,但是多了一些噪声,可以发现,相比于源音频信号的波形,分离出来得到的音频信号波形连续性更强,信号中间的分隔不明显,这也是存在一定噪声的体现。但是整体上音调时基本没有变化的,声音也是基本一致的。4 总评音频分离程序是基于C语言完成的,由于数据是从音频数据内读出来的,选择的两个6s的音频,采用8000的采样率,读出来是50000*2的矩阵,所以,wav文件为了保持源声音品质,数据量很大。而C对于矩阵的处理时多次嵌套循环。这也减缓了程序的执行速度,但整体上,算法实现是成功的,系统性能优良。本章通过对两个混合音频文件进行测试,先后验证了数据内容,波形,以及声音效果,可得此音频分离系统是很有效的,性能很好,同时,由于是在底层C语言完成的程序,而且音频文件数据内容较大,处理起来需要一定的时间,这也是因为矩阵较大,程序执行起来循环太多。但是根据波形来看,音频信号分离性能还是很好的,几乎无噪声,不损坏源音频信号,可以成功分离,实现了fastICA算法对音频的分离,得到了符合预期的结果。7

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号