Python pydub实现语音停顿切分 您所在的位置:网站首页 怎么把一整段音频拆成一小段 Python pydub实现语音停顿切分

Python pydub实现语音停顿切分

2024-04-09 16:55| 来源: 网络整理| 查看: 265

将pcm文件批量处理成wav文件 import wave import os filepath = "data/" # 添加路径 filename = os.listdir(filepath) # 得到文件夹下的所有文件名称 #f = wave.open(filepath + filename[1], 'rb') #print(filename) for i in range(len(filename)): with open("data/"+failename[i], 'rb') as pcmfile: pcmdata = pcmfile.read() with wave.open("data/"+filename[i][:-3] + '.wav', 'wb') as wavfile: wavfile.setparams((1, 2, 16000, 0, 'NONE', 'NONE')) wavfile.writeframes(pcmdata) 利用语音停顿切分

利用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("movie300.wav") loudness = sound.dBFS #print(loudness) chunks = split_on_silence(sound, # must be silent for at least half a second,沉默半秒 min_silence_len=430, # consider it silent if quieter than -16 dBFS silence_thresh=-45, keep_silence=400 ) print('总分段:', len(chunks)) # 放弃长度小于2秒的录音片段 for i in list(range(len(chunks)))[::-1]: if 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") #print(i)

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有