如何将.wav文件拆分为多个.wav文件?

2024-05-19 14:43:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.wav文件,几分钟长,我想分成不同的10秒.wav文件。

这是目前为止我的python代码:

import wave
import math

def main(filename, time):
    read = wave.open(filename, 'r')

#get sample rate
    frameRate = read.getframerate()

#get number of frames
    numFrames = read.getnframes()

#get duration
    duration = numFrames/frameRate

#get all frames as a string of bytes
    frames = read.readframes(numFrames)

#get 1 frame as a string of bytes
    oneFrame = read.readframes(1)

#framerate*time == numframesneeded
    numFramesNeeded=frameRate*time

#numFramesNeeded*oneFrame=numBytes
    numBytes = numFramesNeeded*oneFrame

#splice frames to get a list strings each representing a 'time' length
#wav file
    x=0
    wavList=[]
    while x+time<=duration:
        curFrame= frames[x:x+time]
        x=x+time
        wavList.append(curFrame)

打印wavList产生:

['\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00']

我知道这是一个框架列表。如何为此列表中的每个元素创建一个wav文件(第一个.wav文件将是'\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00')?Python的wave模块不清楚如何使用帧创建.wav文件。

编辑:这是一个重复的问题How to splice an audio file (wav format) into 1 sec splices in python? 但是,如果有人有一个不需要pydub的答案,我非常希望看到它。


Tags: 文件ofreadgetframestimewaveduration
1条回答
网友
1楼 · 发布于 2024-05-19 14:43:59

这是一个python代码片段,我根据需要用于分割文件。
我使用来自https://github.com/jiaaro/pydub的pydub库。 您可以修改代码段以满足您的要求。

from pydub import AudioSegment
t1 = t1 * 1000 #Works in milliseconds
t2 = t2 * 1000
newAudio = AudioSegment.from_wav("oldSong.wav")
newAudio = newAudio[t1:t2]
newAudio.export('newSong.wav', format="wav") #Exports to a wav file in the current path.

相关问题 更多 >