安装ffmpeg
去官网下载FFmpeg 解压后 将bin文件夹加入环境变量就可以使用了
项目文件结构
这是要切割的20个文件 每个文件2min的人说话的wav格式语音
输出的若干个片段 每个片段我设置为5s
代码
import os
def audio_cut(audio_in_path, audio_out_path, start_time, dur_time):
"""
:param audio_in_path: 输入音频的绝对路径
:param audio_out_path: 切分后输出音频的绝对路径
:param start_time: 切分开始时间
:param dur_time: 切分持续时间
:return:
"""
os.system("ffmpeg -i {in_path} -vn -acodec copy -ss {Start_time} -t {Dur_time} {out_path}".format(in_path = audio_in_path,
out_path = audio_out_path, Start_time = start_time, Dur_time = dur_time))
def main():
audio_in_dir = "D:/dadasoft/workspace/speech_cut/test" #要切割的文件列表
audio_out_dir = "D:/dadasoft/workspace/speech_cut/output" #输入文件夹
start_time = 0 #切割开始时间
dur_time = 6 #切割的片段时长s
out_number = 0 #输出文件序号
for j in range(1, 21):
audio_in_name = "student"+"%02d"%j+".wav" #逐个要切割的文件名
print(audio_in_name)
audio_in_path = audio_in_dir+"/"+audio_in_name
print(audio_in_path)
for i in range(10):
audio_out_name = "%02d"%out_number+".wav" #切割完生成的片段名
out_number = out_number+1
print(audio_out_name)
audio_out_path = audio_out_dir + "/" + audio_out_name
print(audio_out_path)
start_time = start_time+6
audio_cut(audio_in_path, audio_out_path, start_time, dur_time)
if __name__ == "__main__":
main()
这个代码只是切割了每个student文件的前10个5s 一共生成200个5s的小片段
读者可参考一下 稍作修改处理自己的文件