先说第一段
k 是从WAV文件读取出来的一段语音信号,其实就是一个h点的行向量,h是k的长度。
设置了一个门限值th=0035。对向量k,从头开始每个点依次与门限值比较,第一个幅度大于0035的点记为语音起点i,从尾开始每个点依次与门限值比较,第一个幅度大于0035的点记为语音终点j。
将k的语音部分新命名为new,把原始语音和找到的纯语音分别在两个坐标中画出。
总的来说,这段程序用很简便的方法将一段包含静音的语音信号中的纯语音提取出来,但这种方法有很大的局限性,只能作为理论学习,基本上没有实际应用价值
不是输出错,是你输入参数太多了,第三个参数ep-sp是什么?wavread的文件名不能用像sprintf里面的字符串格式%d,必须先做好文件名的字符串
for i=1:9
filename=['Voice', num2str(i), 'wav'];
y(:,i)=wavread(filename); % waveread读出来的y是列向量,多个列向量放一起不能直接用y(i),应该对第i列复制。
% ……
end
用wavread语句来读取wav文件
例如:
[ssy, fss] = wavread('250wav'); %这里250wav是一个和当前m文件在同一文件夹下的wav文件
ssy是采样wav文件得到的数据,fss是采样率
想要播放得到的数据,使用:
sound(ssy, fss, 16);
16指的是每个采样单元播放时使用的位元数,一般使用8或者16
[w,fs]=wavread('C:\Users\yhy\Desktop\新建文件夹\女接线员_原生wav');
plot(w);
title('女生频域变低前时域图');
num=length(w)/1000;
w2=zeros(length(w),1);
figure
plot(1:length(w),fft(w));
title('女生频域变低前频域图');
for i=1:num
w2((i-1)1000+1:i1000,1)=low(w((i-1)1000+1:i1000,1));
end
figure
plot(1:length(w2),w2);
title('女生频域变低后时域图');
figure
plot(1:length(w2),fft(w2));
title('女生频域变低后频域图');
wavwrite(w2,fs,'C:\Users\yhy\Desktop\新建文件夹\女接线员_1wbplowwav');
sound(w2,fs);
如果使用matlab 的话 wavread读出来(wav文件)[s,fs]=wavread('路径/声音名wav');
然后进行特征提取
然后分类器识别
输出识别结果
cooledit等软件可以看到声音的采样频率,量化精度信息
用matlab读取avi**(只能读一定压缩各式的avi**)
aviinfo('d:\javi'); %显示存在d盘的**javi的信息
mov=aviread('d:\javi'); %读入存在d盘的**javi
movie(mov); %放映**
将**转成序列
mov=aviread('d:\javi'); %读入
fnum=size(mov,2); %读取**的祯数,mov为1temp
for i=1:fnum
strtemp=strcat('d:\转换的\',int2str(i),'','jpg');%将每祯转成jpg的
imwrite(mov(i)cdata(:,:,Smile,mov(i)colormap,strtemp);
end
如果只想保存其中的几帧,就不用for循环,i改成要保存的帧
以上就是关于找Matlab高手帮忙看程序(语音信号处理)全部的内容,包括:找Matlab高手帮忙看程序(语音信号处理)、matlab for循环 读取声音、怎么样用matlab gui 读取声音。。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)