使用python获取样本中wav文件的长度

时间:2016-11-17 10:03:52

标签: python wav

我正在尝试运行一个处理wav文件的python代码。它要求在样本中给出文件的长度。 经过研究,我找到了这个命令

>>>import os

>>>b=os.path.getsize('/somepath')

>>>b       

但我不确定它是否会给出样本结果。

任何人都可以提供帮助吗?

4 个答案:

答案 0 :(得分:1)

os.path.getsize将获得以字节为单位的文件大小。

>>> import os
>>> b = os.path.getsize('C:\\Users\\Me\\Desktop\\negley.wav')
>>> b
31449644 #This is in bytes, in megabytes it would be 31.45 Megabytes (which is accurate)

想要获得以兆字节为单位的大小?

>>> b = int(os.path.getsize('C:\\Users\\Will\\Desktop\\negley.wav')) / 1024 / 1024
>>> b
29.992717742919922 #Close enough?

或者以秒为单位获得长度,您可以使用Achilles方法:

import wave
import contextlib
audiofile = 'C:\\Users\\Will\\Desktop\\negley.wav'
with contextlib.closing(wave.open(audiofile,'r')) as f: 
  frames = f.getnframes()
  rate = f.getframerate()
  length = frames / float(rate)    
  print(length)

答案 1 :(得分:0)

音频或波形文件的长度取决于它的帧速率。要获得长度,请尝试以下操作:

import wave
import contextlib
audiofile = '/pathto/your.wav' 
with contextlib.closing(wave.open(audiofile,'r')) as f: 
  frames = f.getnframes()
  rate = f.getframerate()
  length = frames / float(rate)    
  print(length)

答案 2 :(得分:0)

您可以简单地使用scipy库。试试这个:

from scipy.io.wavfile import read
audiofile = '/path/to/file.wav'
sample_rate_in_s, data = read(audiofile)
print(len(data))

答案 3 :(得分:0)

如果您使用的是scipy,则可以使用scipy.io

获得以秒为单位的长度
import scipy.io.wavfile as wav

file_path = "/path/to/yourfile.wav"
(source_rate, source_sig) = wav.read(file_path)
duration_seconds = len(source_sig) / float(source_rate)

如果您使用的是pydub,则只需阅读音频片段并获取持续时间即可。

from pydub import AudioSegment
audio = AudioSegment.from_file(file_path)
print audio.duration_seconds