繁体   English   中英

使用python获取示例中的wav文件的长度

[英]Get length of wav file in samples with python

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

>>>import os

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

>>>b       

但我不确定它是否能提供样品结果。

有人可以帮忙吗?

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?

或者,要获取以秒为单位的长度,可以使用以下方法的致命弱点:

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)

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

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)

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

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

如果你正在使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM