如何使用python将长音频(EX:1小时)文件拆分为多个短长度(5s)音频文件

Posted

技术标签:

【中文标题】如何使用python将长音频(EX:1小时)文件拆分为多个短长度(5s)音频文件【英文标题】:How to split long audio (EX:1hour ) file into multiple short length (5s) audio file using python 【发布时间】:2020-08-29 09:08:03 【问题描述】:

我有一些长音频文件。我想使用 python 将此音频文件拆分为多个短长度音频文件。例如:音频长度超过 1 小时,并希望拆分为多个短长度 5s 文件。我想在每 5 秒内提取整个音频文件的特征。

【问题讨论】:

你可以查看下面的链接来获得你想要的。***.com/questions/36632511/… 【参考方案1】:

你的问题有两个问题。

    分割音频 提取特征。

它们都具有相同的基本关键信息:采样频率。

音频信号的持续时间(以秒为单位)和用于音频文件的采样频率定义了音频文件具有的样本量。音频样本(简而言之)是硬盘或计算机内存中音频信号的一个值。

对于典型的 wav 文件,音频样本的数量是根据公式 sr * dur 计算的,这里 sr 是以 Hz 为单位的采样频率(例如,44100 用于 CD 质量信号),dur 是音频文件的持续时间(以秒为单位)。例如,2 秒的 CD 音频文件有 44100 * 2 = 88200 个样本。

所以:

要在 Python 中拆分音频文件,您首先必须在变量中读取它。那里有很多库和函数,例如(以随机顺序):

scipy.io.wavfile.read wave模块

和其他人。您可以查看SO post 了解有关读取 wav 文件的更多信息。

然后,您只需要获取 N 个样本,例如my_audio_1 = whole_audio_file[0:5*sr].

但是!!!

如果您只想每 X 秒提取一次特征,则无需手动拆分音频。大多数音频特征提取库都可以为您完成。

例如,在librosa 中,您可以控制 FFT 点的数量,大致相当于您要从中提取特征的音频的长度。例如,您可以在此处查看:https://librosa.org/doc/latest/feature.html

【讨论】:

以上是关于如何使用python将长音频(EX:1小时)文件拆分为多个短长度(5s)音频文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将实时stdout流拆分成几个文件?

1.[python]怎样将二进制音频转为mp3文件

如何使用 python 脚本停止/关闭音频文件(mp3/.wav)

如何下载播放音频

如何在 Python 中读取类似于 Matlab audioread 的音频文件?

如何将长文本文件字段放入列表框?