Python教程

python 批量切割语音

本文主要是介绍python 批量切割语音,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

python批量切割语音文件(可以灵活控制切割长度)

话不多少,直接上代码:

def file_name(file_dir):
    '''
    输入文件夹名称,并返回该文件夹下所有语音文件的完整路径(list类型)
    :param file_dir:
    :return:
    '''
    L = []
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            if file.split('.')[-1] == 'wav':
                L.append(os.path.join(root, file))
        return L

def cut_to_3s(src_dir,des_3s_dir,seconds_per_split_file):
    '''
    切割语音长度
    :param src_dir: 用户需要切割的某个语音文件夹
    :param des_3s_dir: 切割后文件存储文件夹
    :param seconds_per_split_file: 切割后每个语音长度
    :return:
    '''

    # 获取该文件夹下所有语音数据
    filenames = file_name(src_dir)

    # 对每一个语音数据进行切片
    for filename in filenames:

        # 获取文件名字
        print("当前切割语音文件:    ", filename)
        sound = AudioSegment.from_wav(filename)

        # 获取音频持续时间(单位为秒s),并计算可以切割多少段?

        seconds_of_file = sound.duration_seconds
        print("该音频持续时间为:", int(seconds_of_file), "秒")


        times = int(int(seconds_of_file) / seconds_per_split_file)
        print("当前语音共可切割:  ", times, " 次")

        # # 语音切割,以毫秒为单位
        start_time = 0
        internal = seconds_per_split_file*1000
        end_time = seconds_per_split_file*1000
        name=re.split(r'[\\ .]', filename)[-2]


        for i in range(times):
            # 语音文件切割
            part = sound[start_time:end_time]
            data_split_filename=os.path.join(des_3s_dir,name + '_' + str(i) + '.wav')

            # 保存切割文件
            part.export(data_split_filename, format="wav")

            start_time += internal
            end_time += internal

2. 说明

这里我将语音切割封装为一个函数def,调用时需要引入该函数中使用的包

import re
import os
from pydub import AudioSegment

cut_to_3s函数中使用到file_name 函数(该函数则主要是获取某文件夹下所有的 .wav语音文件),内容大致如下,大家有需要可以对代码灵活修改。

这篇关于python 批量切割语音的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!