起因
在支持实验室进行音频数据处理的时候,用剪辑软件太慢了,所以使用python脚本进行处理。
效果:




效果可以的。
过程中使用pickel保存中间数据,chunks500.pickel里保存文件分割后的文件。是一个list[dir{name,faudio}]。可以自己使用pickel打开看看,500的意思是沉默500ms为断句点,创建目的是不用再次分割,分割花时间。即用即调。
有语音转文本功能,但是效果不是很好,仅作参考!!text.pickel保存语音转文本的内容,是list[dir{name,list[]}],可以用pickel打印看看。
1、需要的库支持
pydub
ffmpeg
tqdm
pickle
conda install 或者 pip install 安装。
2、文件目录结构
一开始:

展开后:

Mp3:按命名规则保存未裁剪的mp3文件。
res:需要创建对应的文件夹,名字对应命名格式,里面保存结果。
main:程序主文件
chunks500.pickel:保存裁剪后的音频
text.pickel :保存语音识别的文本
3、完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import os from pydub import AudioSegment from pydub.silence import split_on_silence import tqdm import pickle
Faudio_ls = [] file_faudio = open("./chunks500.pickle","wb")
wenjian = os.listdir("./Mp3") j = 0 for item in tqdm.tqdm(wenjian,desc="处理的文件中"+str(wenjian[j]),unit="item",unit_scale=True,leave=True,position= 0): sound = AudioSegment.from_mp3("./Mp3/" + item) loudness = sound.dBFS chunks = split_on_silence( sound, min_silence_len=500, silence_thresh= -50, keep_silence= 500, ) temp = {"name":item, "chunks":chunks} Faudio_ls.append(temp) i = 0 for chunk in tqdm.tqdm(chunks,position=0,desc="文件"+str(wenjian[j])+"分割好的句子数为:"+str(len(chunks))+"处理中",unit="item",unit_scale=True): chunk.export("./res/"+str(item[0:8])+"/"+str(item[0:8])+"-class-"+ str(i)+".wav", format="wav") i = i + 1 j = j+1
pickle.dump(Faudio_ls, file_faudio) file_faudio.close()
|