@Wayne-Z
2017-11-17T21:28:22.000000Z
字数 5554
阅读 3084
语音处理
fs=44100; %语音信号采样频率为44100
x1=audioread('a11.wav');
t=(0:length(x1)-1)/fs;
y1=fft(x1,4096); %对信号做2048点FFT变换
f=fs*(0:2047)/4096;
figure(1)
plot(t,x1) %做原始语音信号的时域图形
grid on;axis tight;
title('原始语音信号');
xlabel('time(s)');
ylabel('幅度');
figure(2)
plot(f,abs(y1(1:2048))) %做原始语音信号的FFT频谱图
grid on;axis tight;
axis([200 5000 0 max(abs(y1(1:2048)))]);
title('原始语音信号FFT频谱')
xlabel('Hz');
ylabel('幅度');
figure(3)
[pks,locs] = findpeaks(abs(y1(1:2048)),'minpeakheight',40);
title('原始语音信号FFT频谱峰值图')
xlabel('Hz');
ylabel('幅度');
plot(f(locs),pks)
axis([200 5000 0 max(abs(y1(1:2048)))]);
[pks2,locs2,widths,proms] = findpeaks(abs(y1(1:2048)),'minpeakheight',40,'SortStr','descend');
s = widths.*pks2;
c = [ locs2, pks2, widths, s]
idx = [1];
Sum =s(1);
for i = 2 : length(s)
if s(i)/Sum > 0.10
Sum = Sum + s(i);
idx = [idx , i];
end
end
f2 = f(locs2(idx));
d = [ locs2(idx), pks2(idx), widths(idx), s(idx), f2.']
这次仍旧是对声纹做fft变换以找出频谱图,但这次调取的样本都是一列串珠,即在之前的声纹样本中找出一列串珠,将其单独截取出来,进行傅里叶分析。如下图所示同时,我们参考昨日的实验,加以对照。同时,对于样本的峰值,我们再利用面积进行筛选,算法见如下代码:
idx = [1];
Sum =s(1);
for i = 2 : length(s)
if s(i)/Sum > 0.10
Sum = Sum + s(i);
idx = [idx , i];
end
end
d = [ locs2(idx), pks2(idx), widths(idx), s(idx)]
这样就帮助我们提取出了真正对于声纹有影响的峰值。
对应昨日的样本2(男)
对峰值进行排序(取前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 |
上面的数据大致和昨日的实验结果相同。
利用上面提到的算法对有效面积进行筛选
序号(位置) | 峰值 | 半锋宽度(单位: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中截取样本看到的波形基本一致。
FFT变换后得到的频谱图如下,这也和我们在Adobe Audition中截取样本看到的亮度(能级)分布一致,但是很明显顶峰不再是之前的700.
对筛选出(>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 |
对应昨日的样本3(男)
对峰值进行排序(峰值为筛选>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 |
上面的数据大致和昨日的实验结果相同。
利用上面提到的算法对有效面积进行筛选,此时已经不需要再设定基础峰值,就足以将有效峰值筛选出来。
序号(位置) | 峰值 | 半锋宽度 | 面积(半锋宽度 * 峰值) | 对应频率 |
---|---|---|---|---|
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 |
样本对应时间的波形图如下图所示,这也和我们在Adobe Audition中截取样本看到的波形基本一致。
此时我们对照0.5s样本的声波图
将串珠中大约的0.006的时间以及串珠图中最后那个标志性的尾锋进行比对,我们发现,下面声波图中大约有8个和串珠声波图中类似的波形,但是下面的8个类似波形都存在细微差别,最明显的也是串珠中的尾锋(第六个锋)。
FFT变换后得到的频谱图如下,这也和我们在Adobe Audition中截取样本看到的亮度(能级)分布一致。
对筛选出(>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 |
对应昨日的样本5(男)
对峰值进行排序(峰值为筛选>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 |
上面的数据大致和昨日的实验结果相同。
利用上面提到的算法对有效面积进行筛选,此时已经不需要再设定基础峰值,就足以将有效峰值筛选出来。
序号(位置) | 峰值 | 半锋宽度 | 面积(半锋宽度 * 峰值) | 对应频率 |
---|---|---|---|---|
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 |
样本对应时间的波形图如下图所示,这也和我们在Adobe Audition中截取样本看到的波形基本一致。我们也可以在0.5s的样本中寻找一下对应
可以找到相当明显的7个与串珠类似的波形,虽然存在细微的差别。
FFT变换后得到的频谱图如下,这也和我们在Adobe Audition中截取样本看到的亮度(能级)分布一致,但是很明显不同于之前的样本.
对筛选出(>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 |