将音频文件切割成十秒段

3 投票
2 回答
5692 浏览
提问于 2025-04-16 06:22

欢迎大家推荐一些方法,教我怎么用Python库把一个.wav1文件切割成按时间分段的片段。

1 其实文件类型并不是特别重要,如果需要的话,我肯定能把不同类型的文件转换过来。

2 个回答

3

我会使用wave模块来打开文件,先读取文件的头部信息,然后计算出10秒钟里有多少帧数据。接着,我会读取这么多帧的数据。最后,把这些帧的数据写到新的文件里,保留相同的头部信息(除了长度),一直做到完成为止。

2

我建议你先看看一个文件的数据结构,然后在合适的地方“切割”数据,这样就不会把某些帧提前切掉。

这意味着你需要查看录音的频率和比特率,利用这些信息来计算每一帧的大小(以比特为单位)。然后你就可以在不切割单独帧数据的情况下,提取音频的片段。

可以看看这个StackOverflow的帖子。它建议把你的音频当作一个二进制读取的字符串。因为它是一个字符串,你可以随意复制、切割和移动这个字符串到新的输出文件中。

再看看这个链接:http://docs.python.org/library/binascii.html

还有这个也值得一看:https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

或者你也可以保持数据为二进制格式,使用字节数组。需要考虑一下头文件以及它会发生什么,虽然每种格式都不同。MP3格式比较简单,因为它的头信息是和数据交错在一起的:

http://en.wikipedia.org/wiki/Mp3#File_structure

好吧,这里有很多信息。


最后:你肯定已经见过的一个链接:http://sourceforge.net/projects/audiotools/

更新了……

使用sourceforge.net上音频工具的bits_per_sample()方法

--返回这个音频文件每个样本的比特数,结果是一个正整数。

然后根据这些信息和上面的信息,把你的音频分割成字节数组。这样你至少可以准确重建一些原始音频数据。

你可以计算文件的长度(以比特为单位),然后除以16。接着可以使用一种方法根据时间(以毫秒为单位)来划分数组。听起来复杂,但其实只是基础的数学运算。

撰写回答