如何使用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)音频文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python 脚本停止/关闭音频文件(mp3/.wav)