男女声变换报告Word下载.docx
《男女声变换报告Word下载.docx》由会员分享,可在线阅读,更多相关《男女声变换报告Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
2
设计内容
3
设计方案、算法原理说明
3.1
基于时域变换
3.2
基于频域变换
3.3
基于时域识别
2
3.4
基于频域识别
3.5
阈值+加权(评分)的判决方法
4
程序设计、调试与结果分析
4
4.1
4.2
5
4.3
7
4.4
9
4.5
时域和频域识别优缺点
5
设计(安装)与调试的体会
10
5.1.1
6
参考文献
15
7
附录1DMA中断服务程序----基于时域变换
8
附录3
20
1设计任务书
语音性别变换是网络聊天、数字娱乐和安全领域中的热门课题。
语音性别变换的主要任务是对语音进行某种变换使之产生性别变化的特效,例如在男声、女声、老年人声和童声之间互相转换,达到伪装的效果。
本设计要求采用DSP实验系统实现男声和女声音调的变换功能。
基本部分:
(1)利用DSP的DMA方式对外部信号进行实时采集、传输与处理。
(2)使用C语言编写并实现男女生声音的实时变换。
发挥部分:
(1)能够智能识别男女声音。
(2)通过算法中参数值的选择,调整信号频率变化的程度,实现男女声音相互转化程度可变。
2设计内容
1、编写C语言程序,并在CCS集成开发环境下调试通过。
2、实现设计所要求的各项功能。
3、按要求撰写设计报告。
3设计方案、算法原理说明
人类基音的范围约为70~350Hz左右,由于生理结构的不同,男性与女性的声音呈现出不同的听觉特征,男声的基音频率大都在100—200HZ之间,而女声则在200—350HZ之间。
如图所示女声约为男声的1.5~2倍。
鉴于男女声存在基音频率的明显差异,基音频率可作为男女声变换的依据。
图3.1
男女基频分布
3.1基于时域变换
信号在时域上的L倍内插,引起原序列频谱的L倍压缩。
信号在时域上的M倍抽取,引起原序列频谱的M倍扩张。
两者结合,可实现信号频率的L/M倍变化。
当L>
M时,频率缩小;
当L<
M时,频率扩张。
因此内插加抽取可以实现信号频率的变化,基于此,可以实现男声女声基频的变换,从而实现男女声变换的目的。
3.2基于频域变换
通过对信号作FFT,变换到频域,对整个频谱左移或者右移100Hz,在做IFFT变回时域,也可以实现男声女声基频的变换,从而实现男女声变换的目的。
控制左移和右移的程度,实现男女声变换程度可调。
3.3基于时域识别
女声基频大约高于男声基频100Hz,体现在时域上信号震荡比较剧烈,过零点次数较多,通过统计语音信过零点的次数,多者为女声,少者为男声,从而达到识别男女声的目的。
3.4基于频域识别
通过大量观察语音信号的频谱,发现频谱大致呈现单个最大峰特性(见图3.2),并且频谱峰值对应的频率刚好是基频。
通过对信号作FFT,计算其幅度谱,寻找幅度谱最大值对应的频率,高则为女声,低者为男声。
图3.2语音信号单个最大峰
3.5阈值+加权(评分)的判决方法
男女声识别是基于一个统计量进行判决的,基于时域识别法的统计量是平均过零点次数,基于频域识别法的统计量是幅度谱最大值对应的频率小于180Hz的平均次数。
一次的统计量由于各种随机干扰,不能确保其真实性。
我们自己设计了阈值+加权(评分)的判决方法。
现以平均过零点次数的判决为例进行详细说明。
图3.3阈值+加权(评分)的判决方法
如图3.3所示,过零点次数越多,越有把握判决是女声,反之亦然。
●如果过零点平均次数45<
average<
55,则不进行任何操作,即不能判决的模糊状态,这主要是因为其它不确定干扰造成的。
●如果55<
60,则女声得分female_score加1;
●如果average>
60,则女声得分female_score加2;
●如果40<
45,则男声得分male_score加1;
●如果average<
40,则男声得分male_score加2;
之所以引入上面的评分机制,只要是加快判决时间与增加算法的稳健性。
因为随机干扰的存在,即使在多次统计取平均后,男声的平均过零点次数有可能突然跳进女声的判决域,女声的平均过零点次数也有可能突然跳进男声的判决域,引起误判。
引入评分机制后,这种情况被大大抑制了,比如当前女声得分female_score=100,男声得分male_score=50,即使这时候女声的平均过零点次数进入男声的判决域,我们根据之前男女声得分的显著差异可以断定这是随机干扰引起的错误,从而不会造成误判,增加了算法的稳定性。
而且只要当男女声得分差异大于一定值时,就可以判决是男声还是女声,而不需要统计很长时间直至算法收敛,这就加快了判决时间。
3.5滤波器的设计
Matlab提供丰富的信号处理和分析的工具箱,其中也提供了滤波器设计工具箱fdatool。
●调用方法:
在Matlab命令窗口键入fdatool
在此工具箱中设计的滤波器参数可以提取到外部数据文件中,也可以提取到其它工具箱中。
另外:
提取数据的格式可以根据需要自行选择
设计步骤:
(a)在命令窗口键入:
fdatool进入滤波器设计工具箱,按所设计滤波器参数设计。
(b)在fdatool菜单下,选择File/ExporttoCHeaderfile,在数据类型栏选中Exportas…,选择signed
16-bitinteger。
数据为16位整型数,在文件中以数组的形式存放。
另:
在fdatool菜单下,也可以选择File/ExporttoSPTool,将滤波器参数提取到信号处理工具箱中
4程序设计、调试与结果分析
4.1基于时域变换
算法流程
1.分离左右声道;
2.左声道内插、滤波、抽取;
3.右声道内插、滤波、抽取;
4.合并左右声道。
程序见附录1
调试结果:
女声变男声效果明显,但男声变女声效果不太好,听起来像小鸟的叫声,缺少女声感,原因可能是区分男声和女声的差异不仅仅在于频率的差异,还在于其余一些因素,比如音色等。
所以造成男声变女声效果不太好。
4.2基于频域变换
2.以左声道为实部,右声道为虚部构成复信号,作FFT;
3.根据FFT结果计算左右声道各自的FFT;
4.对左右声道的FFT结果进行左移100Hz。
5.对左右声道各作IFFT,取结果的实部作为信号输出。
结果发现声音嘈杂难听,于是我们用虚拟示波器产生3KHz的正弦波,先观察其频谱,见图4.1所示,每格630Hz,共4.8格左右,差不多是3KHz,然后运行左移500Hz频谱搬移的程序,发现幅度谱出现两根谱线,见图4.2所示,每格630Hz,第一根谱线占4格,频率为2520Hz,约为2500Hz,恰好是3KHz左移500Hz后得到的,这是我们想要的谱线,遗憾的是还出现第二根谱线,占据5.5格,约3500Hz,恰好是3KHz右移500Hz得到的。
结论:
说明对3KHz正弦信号的频谱进行左移500Hz,会产生2500Hz和3500Hz两个镜像分量,第一个分量是我们预期想要得到的,以达到女声变男声的目的,第二个分量是不需要的干扰分量。
因此对于给定的频率F,频谱的整体左移f,将产生F-f和F+f两个频率分量,由于音频频率范围较宽,用频谱搬移法实现男女生变换,产生的镜像分量也将占据整个频带。
因此频谱的整体搬移实现男女声变换是不可行的。
图4.1频谱搬移前的谱线3KHz
图4.2
3KHz频谱搬移500Hz后的谱线------2.5KHz和3.5KHz两个镜像分量
4.3基于时域识别
算法流程:
1.对DMA采集的相邻数据点进行符号判别,相异并且数据点超过一定值(去除噪声影响),则过零点数加1。
2.测量多次取平均值。
3.采用基于阈值+加权(评分)进行判决;
程序见附录3
识别结果:
图4.3是男声识别稳定后的过零点次数,图4.4是女声识别稳定后的过零点次数。
男声过零点次数为31点,女声过零点次数为64点,二者可以很好的区分开来。
识别正确率和稳定性都很好。
图4.3男声识别稳定后的过零点次数
图4.4女声识别稳定后的过零点次数
4.4基于频域识别
1.以左声道为实部,0为虚部构造复信号;
2.对复信号作1024点FFT;
(分辨率32KHz除以1024,为31.25KHz)
3.在0-1KHz范围(基频一般小于1KHz)找幅度谱最大值对应的频率,即基频,多次测量取平均值;
4.采用基于阈值+加权(评分)进行判决;
程序见附录4
对中文演讲和英文演讲的语音信号进行男女声识别,结果都是正确的,但对歌曲,有时候会发生误识别,原因只要是因为唱歌时不可能总用一个调,造成音调忽高忽低,从而造成误识别。
4.5时域和频域识别优缺点
1.时域识别的统计平均数是过零点次数,只需简单判别相邻数据符号的正负即可,算法复杂度几乎为0,并且随着统计点数的增多,算法最终会高度收敛到一个小范围内,识别准确度和稳定性都很好,由于无需作FFT,省去了时域变换到频域的时间。