起因

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

效果:

1709733798286

1709733244821

1709733256893

1709733267079

效果可以的。

过程中使用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、文件目录结构

一开始:

1709732988766

展开后:

1709732943194

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, # 500ms没声音表示就分割
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()