为了研究如何将语音转换成视频,以便以后把自己想说的话发到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")