根据对双门限的理解和修改,重写了一个离线版端点检测。

function [st,en]=VAD(x, fs)
x=double(x);
x=x/max(abs(x));
framelen= floor(fs*40/1000);%
frameinc= floor(fs*10/1000);%
y=enframe(x,framelen,frameinc);
%计算短时间能量
amp=sum(abs(y),2);
%开始端点检测
tmp1=enframe(x(1:length(x)-1),framelen,frameinc);
tmp2=enframe(x(2:length(x)),framelen,frameinc);
signs=(tmp1.*tmp2)<0;    %diffs=(tmp1-tmp2)>0.01; zcr=sum(signs.*diffs,2); % zcr=[zcr;zcr(end)]; zcr_yu=0.2*mean(zcr);%yuzhi=0.2*mean(amp);% minspeech=10; count=0;% start=[]; tail=[]; N=length(amp); flag=0;% biaozhi2=0; biaozhi3=0; %%%%%%%%%%%% for n=1:N if amp(n)<yuzhi || (zcr(n)<zcr_yu) continue; end kaitou=n; break; end for n=N:-1:1 if amp(n)<yuzhi || (zcr(n)<zcr_yu) continue; end jiewei=n; break; end noise=[amp(1:kaitou-1);amp(jiewei+1:end)]; noise_mean=mean(noise); noise_var = std(noise); speech_mean=mean(amp(kaitou:jiewei));%noise_mean yuzhi1= 0.3*speech_mean; % yuzhi2= max(0.3*speech_mean , (noise_mean + noise_var)*1.3);% noise_zcr=[zcr(1:kaitou-1);zcr(jiewei+1:end)]; noise_zcr_mean = mean(noise_zcr); noise_zcr_std = std(noise_zcr); speech_zcr_mean=mean(zcr(kaitou:jiewei)); zcr_yu1 = 0.3*speech_zcr_mean; zcr_yu2 = max(0.3*speech_zcr_mean , (noise_zcr_mean+noise_zcr_std)*0.3); %%%%%%%%%%%%%% st = []; en = []; bstart_state = 0; bend_state = 0; segment = 0; unvoice = 0; voice_min_len = 7;% 最短语音长度70ms unvoice_min_len = 5;%结束段最小持续50ms st_candicate = 0; en_candicate = 0; for i = 1:N if( (amp(i) >= yuzhi2 && zcr(i) >= zcr_yu1) && ~bstart_state ) %find start bstart_state = 1; % if(~st_candicate) st_candicate = i; end segment = segment + 1; elseif( (amp(i) >= yuzhi2 || zcr(i) >= zcr_yu1) && bstart_state )% if(unvoice >= unvoice_min_len) % st = [st; st_candicate]; en_candicate = en_candicate + unvoice_min_len - 1; en = [en; en_candicate]; bstart_state = 0; bend_state = 1; unvoice = 0; segment = 0; st_candicate = 0; else % unvoice = 0; % bend_state = 0; segment = segment + 1; end elseif( (amp(i) < yuzhi2 && zcr(i) < zcr_yu1) && bstart_state ) % if segment >= voice_min_len % unvoice = unvoice + 1; % if ~bend_state % en_candicate = i; end bend_state = 1; % else % bstart_state = 0; % segment = 0; bend_state = 0; unvoice = 0; st_candicate = 0; %prepare_for_start = 0; en_candicate = 0; end elseif((amp(i) >= yuzhi2 || zcr(i) >= zcr_yu1) && ~bstart_state) % if ~ st_candicate st_candicate = i; end else% st_candicate = 0; continue; end end if(unvoice >= unvoice_min_len )% st = [st; st_candicate]; en = [en; (en_candicate + unvoice_min_len -1)]; segment = 0; end if( segment >= voice_min_len) % st = [st; st_candicate]; en = [en; N]; end figure(1);subplot(3,1,1) plot(x); %原始语音波形 axis([1,length(x),-1,1]) ylabel('speech'); xlabel('样本点'); for k=1:length(st) line([st(k)*frameinc,st(k)*frameinc],[-1,1],'linestyle',':','color','blue','LineWidth',2); line([en(k)*frameinc,en(k)*frameinc],[-1,1],'linestyle',':','color','red','LineWidth',2); end subplot(3,1,2) plot(amp);%原始语音能量 axis([1,length(amp),0,max(amp)]) ylabel('energy'); xlabel('帧数'); line([1,N],[yuzhi1,yuzhi1],'color','yellow','LineWidth',2);%由语音能量 line([1,N],[yuzhi2,yuzhi2],'color','red','LineWidth',2);%由噪声平均能量和语音能量比较而得 for k=1:length(st) line([st(k),st(k)],[min(amp),max(amp)],'linestyle',':','color','blue','LineWidth',2); line([en(k),en(k)],[min(amp),max(amp)],'linestyle',':','color','red','LineWidth',2); end subplot(3,1,3) plot(zcr);%原始语音过零率 axis([1,length(zcr),0,max(zcr)]) ylabel('zcr'); xlabel('帧数'); line([1,N],[zcr_yu1,zcr_yu1],'color','yellow','LineWidth',2);%由语音能量 line([1,N],[zcr_yu2,zcr_yu2],'color','red','LineWidth',2);%语音加噪音 for k=1:length(st) line([st(k),st(k)],[min(zcr),max(zcr)],'linestyle',':','color','blue','LineWidth',2); line([en(k),en(k)],[min(zcr),max(zcr)],'linestyle',':','color','red','LineWidth',2); end end

用语音识别的强制对齐自动切分连续语音汉字,工程量和资源巨大,此处做了个简易版的汉字自动切分,效果还可以。

离线版-端点检测代码重写相关推荐

  1. 基于双门限法的端点检测

    基于双门限法的端点检测 代码+论文+PPT+仿真结果下载地址:下载地址 摘要 语音端点检测是指从一段语音信号中准确的找出语音信号的起始点和结束点,它的目的是为了使有效的语音信号和无用的噪声信号得以分离 ...

  2. pb graph鼠标移上显示数据_Plotly数据可视化:离线版、微软vscode版的Python的基本作图...

    1 介绍: ===== 1.1 Plotly 是一款用来做数据分析和可视化的在线平台,功能非常强大. 1.2 Plotly是一个非常著名且强大的开源数据可视化框架,它通过构建基于浏览器显示的web形式 ...

  3. 语音端点检测(1):双门限法(简单教学版)

    为什么要有语音端点检测?或者换个角度说,静默检测.静音检测. 以下摘自百度. 语音活动检测(Voice Activity Detection,VAD)又称语音端点检测,语音边界检,是指在噪声环境中检测 ...

  4. python分割语音端点检测_python的webrtc库如何实现语音端点检测 科大讯飞输入法PC体验版下载:语音+手写+...

    python的webrtc库如何实现语音端点检测 科大讯飞输入法PC体验版下载:语音+手写+ 2018-03-05 出处:网络 整理:zhishizhan.net 延伸:科大讯飞输入法PC体验版下载: ...

  5. vad算法matlab,语音信号的端点检测的matlab代码(子带谱熵法法)

    这个是利用子带谱熵法进行语音信号端点检测的代码,给出了参考文献,有兴趣时可以看一下,发博客以作备忘!!! function [voiceseg,vsl]=vad_1(s,fs) %该函数采用子带谱熵法 ...

  6. 离线版Gerber查看器+PCB/PCBA检测神器新功能!

    一.CAM离线版--华秋CAM│专业Gerber查看器 公司电脑不能连接网络?不慌,我们完全离线且无需账号登录! 磁盘空间不够拒绝下载?别怕 ,我们安装包仅20M可随便分享! 不会使用CAM350导入 ...

  7. 卸载源码安装mysql_CentOS 7.x 卸载删除MariaDB,重新安装,安装MYSQL离线版和源代码...

    CentOS 7.x 卸载删除MariaDB 1.卸载 [root@node1 ~]# rpm -qa|grep mariadb mariadb-5.5.56-2.el7.x86_64 mariadb ...

  8. ESP32c3开发环境搭建 IDF V4.4离线版安装使用

      年前开源了一款ESP32开发板,建立了交流群,结识众多水友.群友总反应在windows下搭建esp32开发环境失败的问题,几乎都是网络不好.在线安装到中途就失败的情况.没办法,只能自己解决科xue ...

  9. 神锁离线版插件的安全设计

    以下文章转自InfoQ 在<是时候放弃插件密码管理器,改用密码管理器插件了>一文中,我们谈到插件密码管理器的安全性不够. 我们做了一个演示:将恶意JS 代码注入到 Github 一个无需登 ...

  10. MATLAB语音端点检测

    第一章 绪论 Matlab是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交 ...

最新文章

  1. vu项目中按F5刷新element菜单没有根据路由匹配菜单解决办法
  2. Python爬虫数据分析三剑客:Numpy、pandas、Matplotlib
  3. 计算机专业毕业生管理制度,管理制度建设
  4. MySQL多表查询实例
  5. C++STL常用查找算法
  6. ExtJS学习:MVC模式案例(一)
  7. win10装python3.6_win10+python3.6,安装tensorflow
  8. 中国量子计算机领先美国吗,好消息!中国又一项技术领先全球,美国院士:这是划时代的成果...
  9. python-引用/模块
  10. 启发式算法、寻路算法A*算法
  11. 第八周 4.18 --- 4.24
  12. iOS打包后收不到推送信息
  13. php压缩html文件,压缩html_PHP压缩html的函数代码
  14. wine装通达信_linux下安装虚拟机,完美在linux系统下运行通达信软件
  15. openGauss开机自启动
  16. 互联网赚钱:一个抖音小项目,分析下,人人都能做
  17. 批量删除微博(不能翻页)
  18. 你“云”了吗?华为云带你看懂云桌面
  19. linux系统使用crontab定时删除日志文件
  20. php中级面试题汇总

热门文章

  1. go hash 密码:加密、校验
  2. iis服务器网站指向ip地址,IIS之Web服务器 一个IP地址对应多个Web站点 多个域名...
  3. Matlab系列教程_基础知识_运算符
  4. idea配置java和maven_Maven配置,使用IntelliJ IDEA和Maven创建Java Web项目
  5. MAC修改.bashrc/.bash_profile无效,默认的用户配置文件是.zshrc,
  6. 以软件工作为例,传统武术如何实战
  7. 多个so合并为一个so的思路
  8. 野蛮愚昧的词过滤,咱是技术网站吗?
  9. 工作没做好,别人指出时最好装聋作哑
  10. LINUX下载编译ncurses