python+ffmpeg实现wav文件切割

python+ffmpeg实现wav文件切割

  • 安装ffmpeg
    • 项目文件结构
    • 代码

安装ffmpeg

去官网下载FFmpeg 解压后 将bin文件夹加入环境变量就可以使用了

项目文件结构

这是要切割的20个文件 每个文件2min的人说话的wav格式语音
python+ffmpeg实现wav文件切割_第1张图片
输出的若干个片段 每个片段我设置为5s
python+ffmpeg实现wav文件切割_第2张图片

代码

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的小片段
读者可参考一下 稍作修改处理自己的文件

你可能感兴趣的:(python+ffmpeg实现wav文件切割)