找Matlab高手帮忙看程序(语音信号处理)
谁能给我讲讲这些程序的编程思想,我看不懂~~~说得好给200分积分,能看懂几个段就说几段。%下面的这段程序用于提取.WAV文件中的有声部分[k,fs]=wavread('...
谁能给我讲讲这些程序的编程思想,我看不懂~~~
说得好给200分积分,能看懂几个段就说几段。
%下面的这段程序用于提取.WAV文件中的有声部分
[k,fs]=wavread('zmkm');
h=length(k);
[M,N]=size(k); %[m,n]是大小为K的矩阵
x=linspace(0,M,M); %linspace 线性间矩矢量
subplot(2,1,1);
plot(x,k);
p1=abs(k);
for i=1:M,
B(i)=k(M-i+1); %取数组k的倒序给B
end
p2=abs(B);
th=0.035;
for i=1:M,
if p1(i)>th
break;
end
end
for j=1:M,
if p2(j)>th
break;
end
end
new=k(i:(M-j));
L=length(new);
subplot(2,1,2);
y=linspace(0,L,L);
plot(y,new);
————————————————
%本段程序用于对语音文件进行预加重
%输入.WAV语音文件,输出预加重后的文件B
[k,fs]=wavread('zmkm');
% [B,no]=readwavdata('zmkm');
wavplay(k,fs ); %播放语音文件
h=length(k); %计算语音文件的长度
x=linspace(0,h,h); %创建图形1的横坐标
subplot(2,1,1);
plot(x,k); %绘制语音图形
subplot(2,1,2);
y=linspace(0,no,no); %创建图形2的横坐标
plot(y,B);
wavplay(B,fs );
————————————
第三步:加窗
function [B]=ham(A)%加hamming窗函数
total=length(A);
for i=1:(total/160-3)
for j=1:640,
W(j)=0.54-0.46*cos(2*pi*(j-1)/640);
B(i,j)=A(j+(i-1)*160)*W(j);%加窗操作
end
end 展开
说得好给200分积分,能看懂几个段就说几段。
%下面的这段程序用于提取.WAV文件中的有声部分
[k,fs]=wavread('zmkm');
h=length(k);
[M,N]=size(k); %[m,n]是大小为K的矩阵
x=linspace(0,M,M); %linspace 线性间矩矢量
subplot(2,1,1);
plot(x,k);
p1=abs(k);
for i=1:M,
B(i)=k(M-i+1); %取数组k的倒序给B
end
p2=abs(B);
th=0.035;
for i=1:M,
if p1(i)>th
break;
end
end
for j=1:M,
if p2(j)>th
break;
end
end
new=k(i:(M-j));
L=length(new);
subplot(2,1,2);
y=linspace(0,L,L);
plot(y,new);
————————————————
%本段程序用于对语音文件进行预加重
%输入.WAV语音文件,输出预加重后的文件B
[k,fs]=wavread('zmkm');
% [B,no]=readwavdata('zmkm');
wavplay(k,fs ); %播放语音文件
h=length(k); %计算语音文件的长度
x=linspace(0,h,h); %创建图形1的横坐标
subplot(2,1,1);
plot(x,k); %绘制语音图形
subplot(2,1,2);
y=linspace(0,no,no); %创建图形2的横坐标
plot(y,B);
wavplay(B,fs );
————————————
第三步:加窗
function [B]=ham(A)%加hamming窗函数
total=length(A);
for i=1:(total/160-3)
for j=1:640,
W(j)=0.54-0.46*cos(2*pi*(j-1)/640);
B(i,j)=A(j+(i-1)*160)*W(j);%加窗操作
end
end 展开
2个回答
展开全部
先说第一段
k 是从WAV文件读取出来的一段语音信号,其实就是一个h点的行向量,h是k的长度。
设置了一个门限值th=0.035。对向量k,从头开始每个点依次与门限值比较,第一个幅度大于0.035的点记为语音起点i,从尾开始每个点依次与门限值比较,第一个幅度大于0.035的点记为语音终点j。
将k的语音部分新命名为new,把原始语音和找到的纯语音分别在两个坐标中画出。
总的来说,这段程序用很简便的方法将一段包含静音的语音信号中的纯语音提取出来,但这种方法有很大的局限性,只能作为理论学习,基本上没有实际应用价值
k 是从WAV文件读取出来的一段语音信号,其实就是一个h点的行向量,h是k的长度。
设置了一个门限值th=0.035。对向量k,从头开始每个点依次与门限值比较,第一个幅度大于0.035的点记为语音起点i,从尾开始每个点依次与门限值比较,第一个幅度大于0.035的点记为语音终点j。
将k的语音部分新命名为new,把原始语音和找到的纯语音分别在两个坐标中画出。
总的来说,这段程序用很简便的方法将一段包含静音的语音信号中的纯语音提取出来,但这种方法有很大的局限性,只能作为理论学习,基本上没有实际应用价值
网易云信
2023-12-06 广告
2023-12-06 广告
信令SDK是一种软件开发工具包,旨在帮助开发者在应用程序中实现信令协议的通信功能。它主要提供了一系列函数、协议和工具,用于处理信令消息的生成、解析、传输和存储等操作。通过使用信令SDK,开发者可以更快速、便捷地实现信令通信功能,提高应用程序...
点击进入详情页
本回答由网易云信提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询