要求是这样的:
给你一个.wav的音频,要求获取这个音频的时长。这里需要用到两个模块,contextlib和 wave。
方法1:
import contextlib
import wave
file_path = r"Z:\projectm\822.wav"
with contextlib.closing(wave.open(file_path, 'r')) as f:
frames = f.getnframes()
rate = f.getframerate()
wav_length = frames / float(rate)
print("音频长度:",wav_length,"秒")
结果:
音频长度: 3.771 秒
方法2:
def get_file_duration(path):
"""
获取单个wav文件时长
:param path: 文件路径
:return:
"""
popen = os.popen('sox {file_path} -n stat 2>&1'.format(file_path=path))
content = popen.read()
li = re.findall('Length \(seconds\):(.*?)Scaled by:', content, re.DOTALL)
try:
wav_len_str = li[0].strip()
except Exception:
wav_len_str = popen.readlines()[1].split()[-1]
wav_len = float(wav_len_str)
popen.close()
return wav_len