Python音频自动分隔示例

为了研究如何将语音转换成视频,以便以后把自己想说的话发到B站,所以今天看了下如何将语音切割的代码。代码算法很简单,会点音频知识即可。测试代码如下:

"""
利用split_on_silence(sound,min_silence_len,
                      silence_thresh,    keep_silence=400)函数

第一个参数为待分割音频,第二个为多少秒“没声”代表沉默,
第三个为分贝小于多少dBFS时代表沉默,第四个为为截出的每个音频添加多少ms无声

"""
from pydub import AudioSegment
from pydub.silence import split_on_silence
 
sound = AudioSegment.from_mp3("李兴球的音频介绍.wav")
loudness = sound.dBFS  # 响度
 
chunks = split_on_silence(sound,
    # 沉默一定时间的间隔,用于分隔一段语音
    min_silence_len=430, 
    # 沉默的阈值
    silence_thresh=-45,
    keep_silence=400
 
)
print('总分段:', len(chunks))
 
# 放弃长度小于2秒和大于10秒的音频片段
for i in list(range(len(chunks)))[::-1]:
    if len(chunks[i]) <= 2000 or len(chunks[i]) >= 10000:
        chunks.pop(i)
print('取有效分段(大于2s小于10s):', len(chunks))
 
'''
for x in range(0,int(len(sound)/1000)):
    print(x,sound[x*1000:(x+1)*1000].max_dBFS)
'''
 
for i, chunk in enumerate(chunks):
    chunk.export("cutFilter300/chunk{0}.wav".format(i), format="wav")

关于李兴球

李兴球的博客是Python创意编程原创博客
此条目发表在python分类目录。将固定链接加入收藏夹。

发表回复