文件内音频的时长统计并生成csv文件

该博客介绍了如何使用Python编写脚本来统计zip压缩文件中音频的时长,并按时长和MD5值进行排序。主要涉及os、librosa、hashlib和pandas库。作者强调了在处理mp3文件时可能存在的问题,并提供了完整的代码实现。
摘要由CSDN通过智能技术生成

目录

一、需求

二、相关库

三、完整代码

四、一些问题


一、需求

请编写 Python 脚本,统计附属压缩文件“wav.zip”中音频的时长,并将统计结果保存在与 “wav.zip”同级目录下,结果文件中音频的时长由高往低的顺序依次排列,A 列为音频文件名称,B 列为 时长(精确到毫秒,时长相同按文件的 MD5 值排序)

二、相关库

  • os
  • librosa
  • hashlib

hanshlib安装时报错,解决办法:更改版本号即可这里用的是0.8.0

pip install hanshlib==0.8.0

  • pandas

三、完整代码

因为作者偷懒所以直接放代码,具体步骤:

  1. 使用os把文件夹内所有的文件名遍历出来
  2. 把文件名拼上路径
  3. 用hashlib给文件生成对应的MD5值
  4. 调用librosa.get_duration来取得音频时长
  5. 用pandas对结果根据时长和MD5值来排序
  6. pandas存储到csv文件里
import os
import librosa
import hashlib
import pandas as pd

file_list = []
data_list = []
def get_duration_mp3_and_wav(file_path):
    # 文件夹路径file_path是文件名os自动遍历的
    file_paths = f'./wav2count/{file_path}'
    md5 = hashlib.md5()
    f = open(file_paths,'rb')
    md5.update(f.read())
    f.close()
    MD5 = md5.hexdigest()
    duration = librosa.get_duration(filename=file_paths)
    data_list.append([file_path,duration,MD5])

# 文件夹路径
for a,s,k in os.walk('./wav2count'):
    file_list.append(k)

for i in file_list[0]:
    get_duration_mp3_and_wav(i)
data = pd.DataFrame(data_list)
datas = data.sort_values([1,2],ascending=False)
# 保存的文件名
datas.to_csv('./wav_result.csv')

 

四、一些问题

我只试过wav文件,mp3文件一个也可以,前提是文件夹里的文件全是要参与的文件,安装库的时候遇到问题简易回退一个大版本0.9.0=>0.8.0实际体验没多大区别。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值