频谱扩展 matlab,语音信号频谱扩展
%
% pr10_3_1
clear all; clc; close all;
filedir=[];? ?? ?? ?? ?? ?? ?? ?? ?? ???% 設置路徑
filename='colorcloud.wav';? ?? ?? ?? ???% 設置文件名
fle=[filedir filename];? ?? ?? ?? ?? ???% 構(gòu)成完整的路徑和文件名
[x, fs, bits] = wavread(fle);? ?? ?? ???% 讀入數(shù)據(jù)文件
x=x-mean(x);? ?? ?? ?? ?? ?? ?? ?? ?? ? % 消除直流分量
x=x/max(abs(x));? ?? ?? ?? ?? ?? ?? ?? ?% 幅值歸一
xl=length(x);? ?? ?? ?? ?? ?? ?? ?? ?? ?% 數(shù)據(jù)長度
time=(0:xl-1)/fs;? ?? ?? ?? ?? ?? ?? ???% 計算出時間刻度
p=12;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???% LPC的階數(shù)為12
wlen=200; inc=80;? ?? ?? ?? ?? ?? ?? ???% 幀長和幀移
msoverlap = wlen - inc;? ?? ?? ?? ?? ???% 每幀重疊部分的長度
y=enframe(x,wlen,inc)';? ?? ?? ?? ?? ???% 分幀
fn=size(y,2);? ?? ?? ?? ?? ?? ?? ?? ?? ?% 取幀數(shù)
% 語音分析:求每一幀的LPC系數(shù)和預測誤差
for i=1 : fn
u=y(:,i);? ?? ?? ?? ?? ?? ?? ?? ?? ?% 取來一幀
A=lpc(u,p);? ?? ?? ?? ?? ?? ?? ?? ? % LPC求得系數(shù)
aCoeff(:,i)=A;? ?? ?? ?? ?? ?? ?? ? % 存放在aCoeff數(shù)組中
errSig = filter(A,1,u);? ?? ?? ?? ? % 計算預測誤差序列
resid(:,i) = errSig;? ?? ?? ?? ?? ? % 存放在resid數(shù)組中
end
%%%%%%%%%%%%%%%%%%%%%
%這個地方添加了程序
%對預測系數(shù)和預測誤差進行上采樣
aCoeff=upsample(aCoeff,2);
resid=upsample(resid,2);
%當采樣率是8k的時,將參數(shù)進行修改,以擴展到16k
fn=size(aCoeff,2);
inc=inc*2;
wlen=wlen*2;
xl=xl*2;
fs=fs*2;
%%%%%%%%%%%%%%%%%%%%%
% 語音合成:求每一幀的合成語音疊接成連續(xù)語音信號
for i=1:fn
A = aCoeff(:,i);? ?? ?? ?? ?? ?? ???% 取得該幀的預測系數(shù)
residFrame = resid(:,i);? ?? ?? ?? ?% 取得該幀的預測誤差
synFrame = filter(1, A', residFrame); % 預測誤差激勵,合成語音
outspeech((i-1)*inc+1:i*inc)=synFrame(1:inc);??% 重疊存儲法存放數(shù)據(jù)
% 如果是最后一幀,把inc后的數(shù)據(jù)補上
if i==fn
outspeech(fn*inc+1:(fn-1)*inc+wlen)=synFrame(inc+1:wlen);
end
end;
ol=length(outspeech);
if ol
outspeech=[outspeech zeros(1,xl-ol)];
end
% 發(fā)聲
% wavplay(x,fs);
% pause(1)
wavplay(outspeech,fs);
wavwrite(outspeech,fs,'bandwidth_audio.wav');
% 作圖
% subplot 211; plot(time,x,'k');
% xlabel(['時間/s' 10 '(a)']); ylabel('幅值'); ylim([-1 1.1]);
% title('原始語音信號')
% subplot 212; plot(time,outspeech,'k');
% xlabel(['時間/s' 10 '(b)']); ylabel('幅值'); ylim([-1 1.1]);
% title('合成的語音信號')
總結(jié)
以上是生活随笔為你收集整理的频谱扩展 matlab,语音信号频谱扩展的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 步进电机五根线怎么接_步进驱动和伺服驱动
- 下一篇: matlab from有什么用,Matl