Python实现基于BIC的语音对话分割(二)

1. 语音多分割点检测

在上一篇博客<Python实现基于BIC的语音对话分割(一)>中,我们介绍了基于BIC(贝叶斯信息准则)的语音分割问题,有一个假设是这段语音中只有一个分割点,即语音对应的特征服从下面的分布:

H1:x1...xiN(μ1,Σ1);xi+1...xNN(μ2,Σ2)

但是一个分割点的检测在实际语音应用中不是很实用,因此我们提出多分割点的检测算法,基本思想如下:

  1. 初始化检测窗口 [wStart,wEnd]
  2. [wStart,wEnd] 运行BIC算法检测是否有分割点;
  3. 若2中存在分割点,则移动检测窗口 [wStart+BICloc,wEnd+BICloc] ,不改变检测窗口大小;若2中不存在分割点,则不移动检测窗口的位置,调整 wEnd ,检测窗口变为 [wStart,wEnd+wGrow]
  4. 重复2,3步直到 wEnd 超过整个语音的结束点,停止检测过程。

可以参看下面这个形象的图来理解多分割点检测过程:

这里写图片描述
图 基于BIC的多分割点检测流程

2. VAD对分割点进行筛选

在python中实现上述的多分割点检测算法,对一个四对话的语音材料进行仿真,最终的分割结果如下图所示,可以看到,语音的分割点位置基本正确,但是语音最开始的那段静音的结束点也被记录成分割点。

这里写图片描述

为了解决非法分割点的问题,我们在实现中引入VAD(Voice Activity Detection)来筛选分割点:

  • 根据Multi segmentation处理结束的分割点进行语音分段;
  • 对每段语音进行VAD检测,若VAD检测有语音端点,则不做处理;若VAD检测无语音端点,则剔除该分割点。那么最终的语音分割效果如下图所示:

这里写图片描述

3. 代码

Sample代码请访问如下的Github地址:
https://github.com/wblgers/py_speech_seg

欢迎使用并提出建议!

# MOS-PESQ The project is a tool that can get MOS(PESQ) score for the voice. PESQ measure: ------------- Usage of the PESQ objective measure is as follows: [pesq_mos]=pesq(cleanfile.wav,enhanced.wav) where 'cleanfile.wav' contains the clean speech file and 'enhanced.wav' contains the enhanced file. Example: To run the PESQ objective measure with the example files provided, type in MATLAB: >> pesq('sp09.wav','enhanced_logmmse.wav') ans = 2.2557 Source code for the PESQ implementation is available from a CD-ROM included in the following book: Loizou, P. (2007) "Speech enhancement: Theory and Practice", CRC Press. COMPOSITE MEASURE: ----------------- Usage: [Csig,Cbak,Covl]=composite(cleanfile.wav,enhanced.wav) where 'Csig' is the predicted rating of speech distortion 'Cbak' is the predicted rating of background distortion 'Covl' is the predicted rating of overall quality. You may run example files included in the zip file. In MATLAB, type: >> [c,b,o]=composite('sp09.wav','enhanced_logmmse.wav') LLR=0.681368 SNRseg=3.991727 WSS=49.671978 PESQ=2.255732 c = 3.3050 b = 2.6160 o = 2.7133 where 'sp09.wav' is the clean file and 'enhanced_logmmse.wav' is the enhanced file. The predicted ratings for overall quality was 2.7133, for background was 2.61 and for signal distortion it was 3.3050. Operating steps: ----------------- >> ./matlab-PESQ/readme.txt Thank: ----------------- Any questions, please E_mail: kinglongbest@163.com/245051943@qq.com 操作步骤 1.将所录序列加载如当前工作路径,也可以按自己工作路径自行加载; 2.在read.m中修改参考序列,默认为ref.wav,16KHz采样; 3.利用wavdivide.m对所录多组序列文件进行拆分(支持多种采样频率),并按序保证至当前路径; 4.运行tongji.m计算PESQ_MOS得分并通过excel/txt输出至指定路径; NOTE: 对于步骤4,每次执行记得修改excel中输出列位置,如cellnames2=['B',num2str(k+1),':B',num2str(k+1)];, 指定写入B列,下次执行改为C列,以此类推; 其中ref_8k.wav为8KHz采样测试序列,ref.wav为16KHz,ref_3s.wav只是为方便测试在ref.wav语音前加3s静音;
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值