获取 .wav 文件长度或持续时间
我正在寻找一种方法来找出 python 中音频文件(.wav)的持续时间。到目前为止,我查看了 python wave
库、mutagen
、pymedia
、pymad
我无法得到wav 文件的持续时间。 Pymad
给了我持续时间,但它不一致。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
持续时间等于帧数除以帧速率(每秒帧数):
关于 @edwards 的评论,这里有一些生成 2 通道波形文件的代码:
如果您在音频播放器中播放生成的文件,您会发现持续时间是 40 秒。如果运行上面的代码,它还会计算出持续时间为 40 秒。所以我相信帧数不受通道数的影响,并且上面的公式是正确的。
The duration is equal to the number of frames divided by the framerate (frames per second):
Regarding @edwards' comment, here is some code to produce a 2-channel wave file:
If you play the resultant file in an audio player, you'll find that is 40 seconds in duration. If you run the code above it also computes the duration to be 40 seconds. So I believe the number of frames is not influenced by the number of channels and the formula above is correct.
librosa 库可以执行此操作: librosa
the librosa library can do this: librosa
一个非常简单的方法是使用 soundfile (以前的 pysoundfile)。
以下是如何执行此操作的一些示例代码:
该特定文件的输出是:
这与 soxi 一致:
A very simple method is to use soundfile (formerly pysoundfile).
Here's some example code of how to do this:
The output for that particular file is:
This aligns with soxi:
我们可以使用 ffmpeg 来获取任何视频或音频文件的持续时间。
要安装 ffmpeg,请点击此链接
we can use ffmpeg to get the duration of any video or audio files.
To install ffmpeg follow this link
令 T 为两个连续样本之间的持续时间。因此,我们可以写成
t = nT
或t = n/Fs
。Let,T be the duration between 2 consecutive samples. So, we can write
t = nT
ort = n/Fs
.我试图获取除“.wav”之外的不同格式的音频文件的长度,我尝试了上述一些解决方案,但对我不起作用
这对我有用:
I was trying to get the length of different format of an audio file other than '.wav' and I tried a few of the above solution but didn't work for me
This is what worked for me :
要查找音乐文件的长度,可以使用audioread模块,
安装audioread:
pip install audioread
然后使用以下代码:
To find length of music file, audioread module can be used,
install audioread:
pip install audioread
then use this code:
pydub 的另一个解决方案:
Another solution with pydub:
如果你的机器上安装了 mediainfo,你也可以使用类似这样的东西(Python 3):
返回的结果以毫秒为单位。
And if you have
mediainfo
installed on your machine, you can also use something like this (Python 3):The returned result is given in milliseconds.
您可以使用 soundfile.info:
info< /code> 对象还具有其他有用的属性,例如
channels
、samplerate
和frames
。要安装
soundfile
,请使用pip install soundfile
。You can use soundfile.info:
The
info
object also has other useful attributes likechannels
,samplerate
, andframes
.To install
soundfile
, usepip install soundfile
.它很短,不需要模块,适用于所有操作系统:
This is short and needs no modules, works with all operating systems: