栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

语音信号处理 实验1 语音端点检测

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

语音信号处理 实验1 语音端点检测

clc
clear

[x,fs]=audioread('写自己的文件路径 .../.../...wav');
x = x(:, 1);
framelength=512;   % 越大越平滑
framenumber=fix(length(x)/framelength);

% 计算短时能量
for i=1:framenumber;
   E(i)=0;
   for j=(framelength*(i-1)+1):1:framelength*(i);
       E(i)=E(i)+x(j) ^2;  
   end;  
end;

totaltime=length(x)/fs;
for i=1:length(x);
    pointtime(i)=totaltime*i/length(x);
end
for i=1:framenumber;
    frametime(i)=totaltime*i/framenumber;
end

subplot(3,1,1)
plot(pointtime,x);
title("原始声音波形")

subplot(3,1,2)
plot(frametime,E);
MeanE = mean(E(1:10));
VarE  = std(E(1:10));
ET = MeanE + VarE;
% 10*ET为阈值,画线
line([0 totaltime], [10*ET 10*ET],'color','g','LineWidth',1);
title("语音短时能量")

% 画分界线
flag = 0;   % 向上穿过阈值,向下穿过阈值 标志
lineset = -1;
for i=1:framenumber;
    if (E(i) > 10*ET && flag == 0)  % 向上穿过阈值,为起点
        line([frametime(i) frametime(i)], [0 max(E)],'color','r','LineWidth',2);
        lineset = [lineset frametime(i)];        % 分界线x保留, 供下次画线
        flag = 1;
    end
    if (E(i) < 10*ET && flag == 1)  % 向下穿过阈值,为终点
        line([frametime(i) frametime(i)], [0 max(E)],'color','r','LineWidth',2);
        lineset = [lineset frametime(i)];
        flag = 0; 
    end
end
lineset = lineset(2:end);

subplot(3,1,3)
plot(pointtime,x);

% 画分界线
for i=1:length(lineset);
    line([lineset(i) lineset(i)], [-max(x)-0.5 max(x)+0.5],'color','r','LineWidth',2);
end
title("识别后声音波形")
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/655578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号