[关闭]
@Wayne-Z 2017-11-17T13:28:22.000000Z 字数 5554 阅读 2956

面积筛选算法与串珠现象再探

语音处理



代码与方法

  1. fs=44100; %语音信号采样频率为44100
  2. x1=audioread('a11.wav');
  3. t=(0:length(x1)-1)/fs;
  4. y1=fft(x1,4096); %对信号做2048FFT变换
  5. f=fs*(0:2047)/4096;
  6. figure(1)
  7. plot(t,x1) %做原始语音信号的时域图形
  8. grid on;axis tight;
  9. title('原始语音信号');
  10. xlabel('time(s)');
  11. ylabel('幅度');
  12. figure(2)
  13. plot(f,abs(y1(1:2048))) %做原始语音信号的FFT频谱图
  14. grid on;axis tight;
  15. axis([200 5000 0 max(abs(y1(1:2048)))]);
  16. title('原始语音信号FFT频谱')
  17. xlabel('Hz');
  18. ylabel('幅度');
  19. figure(3)
  20. [pks,locs] = findpeaks(abs(y1(1:2048)),'minpeakheight',40);
  21. title('原始语音信号FFT频谱峰值图')
  22. xlabel('Hz');
  23. ylabel('幅度');
  24. plot(f(locs),pks)
  25. axis([200 5000 0 max(abs(y1(1:2048)))]);
  26. [pks2,locs2,widths,proms] = findpeaks(abs(y1(1:2048)),'minpeakheight',40,'SortStr','descend');
  27. s = widths.*pks2;
  28. c = [ locs2, pks2, widths, s]
  29. idx = [1];
  30. Sum =s(1);
  31. for i = 2 : length(s)
  32. if s(i)/Sum > 0.10
  33. Sum = Sum + s(i);
  34. idx = [idx , i];
  35. end
  36. end
  37. f2 = f(locs2(idx));
  38. d = [ locs2(idx), pks2(idx), widths(idx), s(idx), f2.']

这次仍旧是对声纹做fft变换以找出频谱图,但这次调取的样本都是一列串珠,即在之前的声纹样本中找出一列串珠,将其单独截取出来,进行傅里叶分析。如下图所示a12.PNG-461.1kB同时,我们参考昨日的实验,加以对照。同时,对于样本的峰值,我们再利用面积进行筛选,算法见如下代码:

  1. idx = [1];
  2. Sum =s(1);
  3. for i = 2 : length(s)
  4. if s(i)/Sum > 0.10
  5. Sum = Sum + s(i);
  6. idx = [idx , i];
  7. end
  8. end
  9. d = [ locs2(idx), pks2(idx), widths(idx), s(idx)]

这样就帮助我们提取出了真正对于声纹有影响的峰值。

样本1

原样本(0.05s)

对应昨日的样本2(男)

频谱图apeak1.PNG-48.8kB

相关参数统计

对峰值进行排序(取前10,从大到小),并计算峰值的半锋宽度以及对应的面积。(数据统一乘以10^3| )

序号(位置) 峰值 半锋宽度 面积(半锋宽度 * 峰值)
0.0950 0.6964 0.0022 1.5583
0.0920 0.1747 0.0009 0.1563
0.1220 0.1470 0.0026 0.3858
0.1080 0.0948 0.0026 0.2475
0.0280 0.0893 0.0021 0.1887
0.0820 0.0864 0.0021 0.1801
0.1010 0.0794 0.0007 0.0581
0.0870 0.0547 0.0011 0.0603
0.1030 0.0530 0.0009 0.0460
0.1350 0.0513 0.0033 0.1700
0.0150 0.0506 0.0020 0.1035
0.0890 0.0497 0.0005 0.0261
0.0680 0.0466 0.0021 0.1001
0.1060 0.0403 0.0016 0.0626

上面的数据大致和昨日的实验结果相同。

峰值图(>40)azz.PNG-27.2kB

有效面积筛选

利用上面提到的算法对有效面积进行筛选

序号(位置) 峰值 半锋宽度(单位:10^3) 面积(半锋宽度 * 峰值) (单位:10^3) 对应频率
095 696.4 0.0022 1.5583 1012.1
092 174.7 0.0009 0.1563 979.8
122 147.0 0.0026 0.3858 1302.8
108 094.8 0.0026 0.2475 1152.0

串珠截取

声波图

样本对应时间的波形图如下图所示,这也和我们在Adobe Audition中截取样本看到的波形基本一致。
a1-peaks.PNG-97.6kB

频谱图

FFT变换后得到的频谱图如下,这也和我们在Adobe Audition中截取样本看到的亮度(能级)分布一致,但是很明显顶峰不再是之前的700.
a1-peaks2.PNG-64.4kB

相关参数统计

对筛选出(>10)的峰值进行排序(取前10,从大到小),并计算峰值的半锋宽度以及对应的面积。(单位:10^3)

序号(位置) 峰值 半锋宽度 面积(半锋宽度 * 峰值)
0.0970 0.1084 0.0138 1.4974
0.0810 0.0358 0.0072 0.2592
0.1320 0.0173 0.0252 0.4370
0.1150 0.0142 0.0033 0.0474
0.0320 0.0127 0.0246 0.3138
0.0580 0.0125 0.0065 0.0809
0.0230 0.0117 0.0025 0.0292
0.0680 0.0109 0.0046 0.0505

有效面积筛选

序号(位置) 峰值 半锋宽度(单位:10^3) 面积(半锋宽度 * 峰值)(单位:10^3) 对应频率
97 108.4 0.0138 1.4974 1033.6
81 35.8 0.0072 0.2592 861.3
132 17.3 0.0252 0.4370 1410.4
32 12.7 0.0246 0.3138 333.8

样本2

原样本(0.05s)

对应昨日的样本3(男)

频谱图a2-peaks.PNG-69.5kB

相关参数统计

对峰值进行排序(峰值为筛选>40的列表数据),并计算峰值的半锋宽度以及对应的面积。

序号(位置) 峰值 半锋宽度 面积(半锋宽度 * 峰值)
99 350.4106 2.1827 764.8350
71 250.7566 2.3704 594.3934
85 216.9305 2.1423 464.7351
113 131.3356 2.1864 287.1477
57 92.8626 2.3224 215.6676
102 85.9955 0.7394 63.5811
96 85.1058 0.8681 73.8828
29 79.5034 2.0717 164.7103
68 65.2053 0.9989 65.1323
127 55.6971 2.0929 116.5699
82 50.1811 0.8164 40.9671
15 48.1258 2.1313 102.5697

上面的数据大致和昨日的实验结果相同。

峰值图(>40)a2-peaks2.PNG-47.6kB

有效面积筛选

利用上面提到的算法对有效面积进行筛选,此时已经不需要再设定基础峰值,就足以将有效峰值筛选出来。

序号(位置) 峰值 半锋宽度 面积(半锋宽度 * 峰值) 对应频率
99 350.4106 2.1827 764.8350 1055.1
71 250.7566 2.3704 594.3934 753.7
85 216.9305 2.1423 464.7351 904.4
113 131.3356 2.1864 287.1477 1205.9
57 92.8626 2.3224 215.6676 602.9

串珠截取

声波图a2-peaks3.PNG-55.2kB

样本对应时间的波形图如下图所示,这也和我们在Adobe Audition中截取样本看到的波形基本一致。
此时我们对照0.5s样本的声波图a2.PNG-187.3kB
将串珠中大约的0.006的时间以及串珠图中最后那个标志性的尾锋进行比对,我们发现,下面声波图中大约有8个和串珠声波图中类似的波形,但是下面的8个类似波形都存在细微差别,最明显的也是串珠中的尾锋(第六个锋)。

频谱图

FFT变换后得到的频谱图如下,这也和我们在Adobe Audition中截取样本看到的亮度(能级)分布一致。a22-peaks.PNG-53.1kB

相关参数统计

对筛选出(>10)的峰值进行排序,并计算峰值的半锋宽度以及对应的面积。(单位:10^3)

序号(位置) 峰值(单位:10^3) 半锋宽度(单位:10^3) 面积(半锋宽度 * 峰值)(单位:10^3)
095 0.0487 0.0250 1.2175
067 0.0342 0.0128 0.4369
121 0.0117 0.0072 0.0836
031 0.0114 0.0182 0.2076
049 0.0109 0.0047 0.0513
150 0.0047 0.0100 0.0469
252 0.0040 0.0118 0.0475
164 0.0039 0.0081 0.0315
179 0.0036 0.0093 0.0330
208 0.0031 0.0091 0.0280

有效面积筛选

此时将峰值的筛选值变为0,对排序后的面积进行筛选算法,可得

序号(位置) 峰值 (单位:10^3) 半锋宽度(单位:10^3) 面积(半锋宽度 * 峰值)(单位:10^3) 对应频率
95 0.0487 0.0250 1.2175 1012.1
67 0.0342 0.0128 0.4369 710.6
31 0.0114 0.0182 0.2076 323.0

样本3

原样本(0.05s)

对应昨日的样本5(男)

频谱图a5-peaks.PNG-70.4kB

相关参数统计

对峰值进行排序(峰值为筛选>20的列表数据),并计算峰值的半锋宽度以及对应的面积。

序号(位置) 峰值 半锋宽度 面积(半锋宽度 * 峰值)
117 58.7495 2.2469 132.0014
65 54.7687 2.2185 121.5021
91 53.2847 2.2205 118.3187
104 43.3759 2.1790 94.5143
14 43.0682 2.2448 96.6810
78 37.0711 2.1489 79.6608
130 26.1395 2.2168 57.9469
27 23.7367 2.1535 51.1174
53 21.8839 2.2016 48.1786
207 21.1324 2.4869 52.5550

上面的数据大致和昨日的实验结果相同。

峰值图(>20)a5-peaks1.PNG-23kB

有效面积筛选

利用上面提到的算法对有效面积进行筛选,此时已经不需要再设定基础峰值,就足以将有效峰值筛选出来。

序号(位置) 峰值 半锋宽度 面积(半锋宽度 * 峰值) 对应频率
117 58.7495 2.2469 132.0 1.2489
65 54.7687 2.2185 121.5 0.6891
91 53.2847 2.2205 118.3 0.9690
104 43.3759 2.1790 94.5 1.1090
14 43.0682 2.2448 96.7 0.1400
78 37.0711 2.1489 79.7 0.8290

串珠截取

声波图a52.PNG-59.8kB

样本对应时间的波形图如下图所示,这也和我们在Adobe Audition中截取样本看到的波形基本一致。我们也可以在0.5s的样本中寻找一下对应a51.PNG-129.7kB
可以找到相当明显的7个与串珠类似的波形,虽然存在细微的差别。

频谱图

FFT变换后得到的频谱图如下,这也和我们在Adobe Audition中截取样本看到的亮度(能级)分布一致,但是很明显不同于之前的样本.a52-peaks.PNG-52.6kB

相关参数统计

对筛选出(>1)的峰值进行排序,并计算峰值的半锋宽度以及对应的面积。(单位:10^3)

序号(位置) 峰值(单位:10^3) 半锋宽度(单位:10^3) 面积(半锋宽度 * 峰值)(单位:10^3)
116 0.0102 0.0167 0.1705
091 0.0085 0.0109 0.0921
068 0.0079 0.0123 0.0975
014 0.0079 0.0116 0.0917
209 0.0042 0.0176 0.0732
036 0.0038 0.0083 0.0316
158 0.0030 0.0115 0.0348
183 0.0022 0.0076 0.0166
250 0.0009 0.0098 0.0092
270 0.0008 0.0074 0.0057
285 0.0007 0.0087 0.0060
347 0.0006 0.0224 0.0126
323 0.0005 0.0061 0.0028
335 0.0004 0.0047 0.0020
305 0.0004 0.0092 0.0034
518 0.0002 0.0415 0.0100
497 0.0002 0.0085 0.0020

有效面积筛选

此时将峰值的筛选值变为0,直接对排序后的峰值采用面积算法,可得下表。

序号(位置) 峰值 (10^3) 半锋宽度(单位:10^3) 面积(半锋宽度 * 峰值)(单位:10^3) 对应频率
116 10.1997 16.7161 170.4991 1238.2
91 8.4726 10.8647 92.0524 969.0
68 7.9371 12.2795 97.4638 721.4
14 7.9158 11.5801 91.6656 140.0
209 4.1500 17.6344 73.1834 2239.5

总结

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注