Python实现基于BIC的语音对话分割(二)
2017-08-13 12:23
1276 查看
1. 语音多分割点检测
在上一篇博客<Python实现基于BIC的语音对话分割(一)>中,我们介绍了基于BIC(贝叶斯信息准则)的语音分割问题,有一个假设是这段语音中只有一个分割点,即语音对应的特征服从下面的分布:模型H1:x1...xi∼N(μ1,Σ1);xi+1...xN∼N(μ2,Σ2)
但是一个分割点的检测在实际语音应用中不是很实用,因此我们提出多分割点的检测算法,基本思想如下:
初始化检测窗口[wStart,wEnd];
在[wStart,wEnd]运行BIC算法检测是否有分割点;
若2中存在分割点,则移动检测窗口[wStart+BICloc,wEnd+BICloc],不改变检测窗口大小;若2中不存在分割点,则不移动检测窗口的位置,调整wEnd,检测窗口变为[wStart,wEnd+wGrow];
重复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
欢迎使用并提出建议!
相关文章推荐
- Python实现基于BIC的语音对话分割(一)
- 基于dragonboard 410c的智能魔镜设计(8)——UI的python脚本实现
- charindex()实现字段值分割-------------基于非传统思维模式的sql编程
- 基于词典的社交媒体内容的情感分析(Python实现)
- 基于Tensorflow+Python实现降噪自动编码器(DAE)
- python实现的基于蒙特卡洛树搜索(MCTS)与UCT RAVE的五子棋游戏
- python实现的基于蒙特卡洛树搜索(MCTS)与UCB的五子棋游戏
- python实现基于SVM手写数字识别功能
- python 基于小顶堆实现随机抽样
- 中文分词的python实现-基于HMM算法
- Python简单实现基于VSM的余弦相似度计算
- 基于Python 的语音重采样函数
- python实现和图灵机器人对话功能
- Python实现基于协程的异步爬虫
- 如何简单实现接口自动化测试—基于 python
- 基于python实现一个简单的神经网络
- 基于python3+selenium实现自动枪火车票
- 基于Unity3D的语音转文字功能的实现
- 基于Python使用CloudSight API实现简单的图像识别(image Recognition)
- 基于经典分割算法的图像内细胞识别与计数(matlab实现)(不定期更新完善)