Python-将一整段音频按步长切割,切割的段之间有重叠部分

由于有网友在我这篇Python-将一整段音频批量切成一小段一小段的博客下,问我如何实现按步长切割,切割的段之间有重叠部分,所以写了这个脚本

1.代码如下:
from pydub import AudioSegment
import numpy as np

audio = AudioSegment.from_file("电视剧.wav", "wav")
audio_time = len(audio)#获取待切割音频的时长,单位是毫秒
cut_parameters = np.arange(10,audio_time/1000,10)  #np.arange()函数第一个参数为起点,第二个参数为终点,第三个参数为步长(10秒)
start_time = int(0)#开始时间设为0
########################根据数组切割音频####################
for t in cut_parameters:
    stop_time = int(t * 1000)  # pydub以毫秒为单位工作
    audio_chunk = audio[start_time:stop_time] #音频切割按开始时间到结束时间切割
    audio_chunk.export("dianshiju-{}.wav".format(int(t/10)), format="wav")  # 保存音频文件,t/10只是为了计数,根据步长改变。步长为5就写t/5
    start_time = stop_time - 4000  #开始时间变为结束时间前4s---------也就是叠加上一段音频末尾的4s
    print('finish')
2.效果图:

第二段有第一段结尾4s的音频
在这里插入图片描述
希望可以解决你的问题,如果还有问题欢迎留言~我尽量解答

2021/6/16更新

有些同学有很多文件需要这样子处理,但不会批处理,在这里贴上批处理的代码:

import os
from pydub import AudioSegment
import numpy as np
########################开始批处理######################
file_path1 = r"E:\untitled1\audio_test\input" #输入路径
file_path2 = r"E:\untitled1\audio_test\output" #输出路径
for file in os.listdir(file_path1): #遍历文件
    path1 = file_path1+'\\'+file
    filename = file.split('.')[0] #不带 .wav的文件名
########################处理音频文件#######################
    audio = AudioSegment.from_file(path1, "wav")
    audio_time = len(audio)  # 获取待切割音频的时长,单位是毫秒
    cut_parameters = np.arange(1, audio_time / 1000, 10)  # np.arange()函数第一个参数为起点,第二个参数为终点,第三个参数为步长(10秒)
    start_time = int(0)  # 开始时间设为0
########################根据数组切割音频####################
    for t in cut_parameters:
        stop_time = int(t * 1000)  # pydub以毫秒为单位工作
        # print(stop_time)
        audio_chunk = audio[start_time:stop_time]  # 音频切割按开始时间到结束时间切割
        print("split at [{}:{}] ms".format(start_time, stop_time))
        audio_chunk.export(file_path2 + '\\' + filename + "-{}.wav".format(int(t / 1)), format="wav")  #保存音频文件
        start_time = stop_time - 4000  # 开始时间变为结束时间前4s---------也就是叠加上一段音频末尾的4s
        print('finish')

多说一点,学pyhon我觉得要学习怎么去批处理,把批处理代码搞清楚!!!因为很多时候你在网上看到一些功能示例都是对一个文件进行处理的。只要学会了批处理,那你会发现工作轻松很多~
加油!!!

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值