我正在尝试运行一个处理wav文件的python代码。它要求在样本中给出文件的长度。 经过研究,我找到了这个命令
>>>import os
>>>b=os.path.getsize('/somepath')
>>>b
但我不确定它是否会给出样本结果。
任何人都可以提供帮助吗?
答案 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