语音幅度统计-matlab-有问题
語音信號(hào)的統(tǒng)計(jì)特性
幅度分布的概率密度
歸一化:均值為0,方差為1.
可實(shí)現(xiàn)歸一化的matlab函數(shù) zscore: z-score 標(biāo)準(zhǔn)化(正太標(biāo)準(zhǔn)化)是基于原始數(shù)據(jù)的均值(mean)和標(biāo)準(zhǔn)差(standard deviation)進(jìn)行數(shù)據(jù)的標(biāo)準(zhǔn)化。將A的原始值x使用z-score標(biāo)準(zhǔn)化到x’。
(matlab的歸一化函數(shù)為mapminmax,此處以A=[100 200 300 400 500]為例,使用mapminmax函數(shù)進(jìn)行歸一化,調(diào)用格式為[A1,PS]=mapminmax(A)。A1為歸一化后的數(shù)值。PS是一種對(duì)應(yīng)關(guān)系,包含數(shù)據(jù)的最大值最小值等,如下圖所示。歸一化函數(shù)的對(duì)應(yīng)關(guān)系為y=(ymax-ymin)*(x-xmin)/(xmax-xmin)+ymin。此處以200驗(yàn)證某一個(gè)元素的值,那么y=2*(200-100)/(500-100)+(-1)=-1/2=-0.5)
均值 mean
方差 var
標(biāo)準(zhǔn)差 std
幅度分布
αX\alpha_XαX?是語音信號(hào)的標(biāo)準(zhǔn)差
x是語音信號(hào)的幅度
1.修正伽瑪(Gamma)概率密度
PG(x)=k2π?e?k∣x∣∣x∣P_G(x)=\frac{\sqrt k}{2 \sqrt \pi} \cdot \frac{e^{-k|x|}}{\sqrt{|x|}} PG?(x)=2π?k???∣x∣?e?k∣x∣?
k=32αXk=\frac{\sqrt 3}{2\alpha_X} k=2αX?3??
2.拉普拉斯(Laplacian)分布
PL(x)=0.5αe?α∣x∣P_L(x)=0.5\alpha e^{-\alpha|x|} PL?(x)=0.5αe?α∣x∣
$\alpha 是語音信號(hào)的標(biāo)準(zhǔn)差是語音信號(hào)的標(biāo)準(zhǔn)差是語音信號(hào)的標(biāo)準(zhǔn)差\alpha_x$決定的常數(shù)
α=2σx\alpha=\frac{\sqrt{2}}{\sigma_x} α=σx?2??
3.高斯密度分布
Pg(x)=12πσxexp(?x22σx2)P_g(x)=\frac{1}{\sqrt{2\pi}\sigma_x}exp(-\frac{x^2}{2 \sigma_x^2}) Pg?(x)=2π?σx?1?exp(?2σx2?x2?)
x是語音信號(hào)的幅度,αx\alpha_xαx?是語音信號(hào)的標(biāo)準(zhǔn)差
matlab
畫出語音信號(hào)的幅度概率密度圖
1.畫出直方圖
用函數(shù)hist()可以得出每個(gè)區(qū)間的頻數(shù)
[n,x]=hist(data1,100);%計(jì)算小區(qū)間內(nèi)的頻數(shù)及區(qū)間中點(diǎn)值
2.在畫出幅度概率密度函數(shù)圖
用每個(gè)區(qū)間的頻數(shù)除以數(shù)據(jù),可以得出每個(gè)區(qū)間的頻率
3.matlab代碼
close all; clear; clc; [data1,fs]=audioread('soo2.wav'); data=abs(data1); % %histogram(data1);hold on % u=mean(data);%均值 % v=std(data);%標(biāo)準(zhǔn)差 % h=max(data)-min(data);%極差 % d=0.01;%根據(jù)直方圖,得到每個(gè)區(qū)間的長度為0.1[n,x]=hist(data1,100);%計(jì)算小區(qū)間內(nèi)的頻數(shù)及區(qū)間中點(diǎn)值 % hold on % plot(x,n); % hold on % % xlabel('每個(gè)區(qū)間中點(diǎn)值'); subplot(211)hist(data1,100)%畫出直方圖,xlabel('幅度'); ylabel('頻數(shù)');title('幅度直方圖');hold on % ylabel('頻數(shù)'); % n為每個(gè)區(qū)間內(nèi)的頻數(shù) %f=data/length(data);%計(jì)算頻率 %f1=f/d;%頻率除以分割區(qū)間的長度 % x1=min(data):0.01:max(data); % y=normpdf(x1,u,v); % plot(x1,y,'r','linewidth',2); subplot(212) fi=n/sum(n); plot( x,fi); xlabel('幅值'); ylabel('概率'); title('幅度概率密度曲線'); hold on4.導(dǎo)入不同的類型的音頻對(duì)比
man
women
music
speak
帶入其他概率密度曲線對(duì)比
只導(dǎo)入語音信號(hào)(即只有講話的聲音speak.wav)
分別用高斯,拉普拉斯,伽瑪帶入對(duì)比。
沒法把數(shù)據(jù)歸一化為均值為0,方差為1的數(shù)據(jù)。
都是字均值為0的附近,方差為1的附近。
man
musci
women
speak
完全說話-普通話標(biāo)準(zhǔn)考試說話
對(duì)比起來,拉普拉斯好像好點(diǎn)
代碼:
clear; clc [data1,fs]=audioread('man.wav'); [n,x]=hist(data1,100);%計(jì)算小區(qū)間內(nèi)的頻數(shù)及區(qū)間中點(diǎn)值 v=std(x);%標(biāo)準(zhǔn)差 j=abs(x);%絕對(duì)值 fi=n/sum(n); y=mapminmax(fi); plot( x,y,'linewidth',3); xlabel('幅值'); ylabel('概率'); title('幅度概率密度曲線'); hold on %gasi gs=(1/sqrt(2pi)v)exp(-1x.^2/2v^2); g=mapminmax(gs); plot(x,g,'linewidth',3); hold on %la a=sqrt(2)/v;%公式 pl=0.5aexp(-aj);%公式 p2=zscore(pl); plot(x,p2,'linewidth',3); %gama j=j'; k=sqrt(3)/(2v); gm1=sqrt(k)/(2sqrt(pi)); gm2=exp(-kj)/sqrt(j); gm=gm1gm2; gam=zscore(gm); plot(x,gm(:,1),'linewidth',3); %這里因?yàn)橛?jì)算時(shí)j只被當(dāng)成一個(gè)數(shù),算出來的gm2為一個(gè)數(shù) %轉(zhuǎn)制了j,使得為一列數(shù)據(jù) %得出的結(jié)果只取第一列,函數(shù)為a(:,1) %man.wav,數(shù)據(jù)為最后一列,即為第一百列 hold on legend('語音信號(hào)','高斯','拉普拉斯','伽瑪');#問題
1.數(shù)據(jù)太少?
2.乖乖的?
總結(jié)
以上是生活随笔為你收集整理的语音幅度统计-matlab-有问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: $ajax 筛选某个属性,jQuery
- 下一篇: openssl windows安装