今天来完成后面的一个小需求:完成PCM语音分割,根据中间的静音来分割为一段段的语音方便输入到模型中进行语音分类识别。那么笔者先使用wav语音来做个测试,然后后续再将转换也是很方便。
功能基于模块pydub,此模块基于ffmpeg工具提供了简洁的高层接口,ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。所以使用pydub之前需要安装ffmpeg,并且ffmpeg需要在默认路径中。
1、导入pydub 模型以及核心的切割函数split_on_silence
2、查看语音的平均分贝,这个是作为分割最低语音的参考
3、使用split_on_silence? 查看函数的使用方法
4、使用函数split_on_silence进行分割
min_silence_len,持续多少时间可认定为静默,默认值1000ms
silence_thresh,声音大小小于多少时可认定为静默,默认值为-16dBFS,根据平均值-23,那么默认值无疑会导致没有输出,笔者调整为-30后,切分的总数位51 。
keep_silence,为切分结果前端添加一段静默音频,默认值为100ms
seek_step,两次切分处理的间隔时间,默认值1ms
5、创建文件夹,使用export输出写入到文件中
函数split_on_silence最重要的参数就是silence_thresh,那么针对文件夹下不同的语音,存在不同的分贝值,可能就需要根据各个语音来动态的判断了。
网友评论