@Wayne-Z
2017-11-17T21:26:27.000000Z
字数 2097
阅读 3397
语音处理
本文对韵母进行了另一次梳理,将分析的频率主要集中在了0-2500HZ的区间,同时对程序解析的窗口进行了二分,使得处理更加精细。
代码如下:
fs=44000; %语音信号采样频率为44100
file = 'a.wav';
wavelength = length(audioread(file));
term = floor(wavelength/1100);
samples = [1, 2200];
T = 1:term;
P = ones(2048,term);
for id = 1:term
x = audioread(file,samples);
t = (0:length(x)-1)/fs;
y = fft(x,4096); %对信号做2048点FFT变换
f = fs*(0:2047)/4096;
p= abs(y(1:2048));
[pks2,locs,widths,proms] = findpeaks(p,'SortStr','descend');
s = widths.*pks2;
idx = locs(1);
Sum =s(1);
for j = 2 : length(s)
if s(j)/Sum > 0.10
Sum = Sum + s(j);
idx = [idx , locs(j)];
end
end
for k = 1 : 2048
if any(k == idx)
P(k,id) = p(k);
end
end
if 1100*(id+2) <= wavelength
samples = [1100*id, 1100*(id+2)];
else
samples = [1100*id,wavelength];
end
end
surf(T,f,P,'edgecolor','none'); axis tight;
view(0,90); % 通常看时谱图时都采用这个角度,若需要可以采用
set(gca, 'YLim',[0 2500])
xlabel('Time (0.05s)'); ylabel('Hz');
单韵母是由单元音充当的,普通话10个单韵母可以分为舌面元音、舌尖元音和卷舌元音三类。舌面元音是由舌面起主要作用的元音,有a、o、e、ê、i、u、ü七个;舌尖元音是由舌尖起主要作用的元音,有-i(前)、-i(后)两个;er是卷舌元音。下面对各单元音的声纹进行分析
ê不作为音节使用, 不与任何辅音声母相拼,只构成复韵母ie、üe,并在书写时省去上面的附加符号“ˆ”。
-i(前)、-i(后)分别作为zi、ci、si、ri和zhi、chi、shi的韵母存在,不单独成音节。
复韵母是由两个或三个元音组成的韵母,其中的元音存在响亮和模糊的不同。响度大的元音在前的,叫做前响复韵母(ɑi、ɑo、ei、ou共4个);响度大的元音在后的,叫做后响复韵母(ia、ie、ua、uo、üe共5个);响度大的元音在中间的,叫做中响复韵母(iao、iou、uai、uei共4个)。
前响复韵母的声纹符合其名称特点,呈现出前一个元音能量大,后一个能量小的特性。
后响复韵母的声纹符合其名称特点,呈现出后一个元音能量大,前一个能量小的特性。
中响复韵母的声纹符合其名称特点,呈现出中间的元音能量大,前后一个能量小的特性。能量图呈现出工字型。
鼻韵母指带有鼻辅音的韵母,又叫做鼻音尾韵母。前鼻音尾韵母指的是鼻韵母中以-n为韵尾的韵母。普通话中的前鼻音尾韵母有8个:ɑn、en、in、un、iɑn、uɑn、üɑn、uen。后鼻音尾韵母指的是鼻韵母中以-ng为韵尾的韵母。普通话中的后鼻音尾韵母有8个:ang、eng、ing、ong、iang、uang、ueng、iong。