目录

一、需求

二、相关库

三、完整代码

四、一些问题


一、需求

请编写 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 pdfile_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实际体验没多大区别。

文件内音频的时长统计并生成csv文件相关推荐

  1. POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解...

    http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...

  2. 人脸识别(二)----如何生成CSV文件

    人脸识别(二)----如何生成CSV文件 当我们写人脸模型训练的时候,我们需要读取人脸的路径path和人脸对应的标签label.人脸的路径就是人脸图片所在你的电脑的位置,标签就是一个人对应一个标签(注 ...

  3. php录音时长统计,音频app阅读时长统计分析

    描述 分析学习喜马拉雅app阅读时长统计机制,并应用到自己app中去 分析 使用抓包工具charles观测app统计发送时机,发现切换音频源,或本地缓存有阅读数据进入首页app时发送(nyx/v2/t ...

  4. Python获取.wav音频的时长

    要求是这样的: 给你一个.wav的音频,要求获取这个音频的时长.这里需要用到两个模块,contextlib和 wave. 方法1: import contextlib import wave file ...

  5. mp3、amr、wav三种音频格式时长获取

    在平时开发过程中可能遇到需要上传相关音频文件到后台,并且计算各种音频文件的时长,因此对三种音频格式(mp3.amr和wav)的时长计算进行了简单的调研,现将相关实现记录一下,也方便需要的朋友查看. ( ...

  6. android 统计app使用时间,android开发之app在线时长统计sdk开发

    引言: 很多app的在线时长统计都是通过在activity的生命周期中埋点来完成的.我这里既然是封装成sdk,当然就不能这样来了.封装sdk的规则,我想大家都清楚,入参尽量少,回调尽量全,权限尽量不要 ...

  7. 通过video.js或原生事件统计实际观看视频时长,支持多视频时长统计

    前言:1.根据评论提问,优化了视频统计逻辑,增加了网络卡顿时暂停计时,重新播放后重新计时的功能.根据以下下载地址可以下载完整代码示例, 更新于:2022年8月26号,2.新增通过原生事件的写法统计观看 ...

  8. 编译java程序时用于指定生成class_(15 )在编译 Java 程序时,用于指定生成 .class 文件位置的选项是A ) -g B ) -d C ) -verbose D...

    (15 )在编译 Java 程序时,用于指定生成 .class 文件位置的选项是A ) -g B ) -d C ) -verbose D 更多相关问题 如图①,在△ABC中,AB=AC,∠BAC=90 ...

  9. Vivado工程路径太长导致不能生成bit文件

    1.1 Vivado工程路径太长导致不能生成bit文件 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado工程路径太长导致不能生成bit文件: 5)结束语. 1 ...

最新文章

  1. 远程服务器的环境的配置
  2. 教你快速撸一个免费HTTPS证书
  3. 李航统计学习方法视频教程
  4. 作为公司新上任的管理者,如何更好的规划工作方案
  5. 自己动手写C语言编译器(暂停)
  6. 我的react组件化开发道路(二) 分页 组件开发
  7. 轻松自动化---selenium-webdriver(python) (三)
  8. es6 next()、throw()、return() 的共同点
  9. 这组三八妇女节海报素材psd模板,你给打几分?
  10. 监控三个指标 并不代表你能监控Tuxedo
  11. Java列表add()和addAll()方法
  12. java复制类mytool,JAVA Beans复制Utils比较
  13. 传智播客javascript视频教程(杨中科)学习笔记
  14. (附源码)springboot音乐播放小程序 毕业设计 031306
  15. 关注奢交所兄弟品牌佰家当 17年积累撬动万亿民资市场
  16. kubernetes的DevOps业务(一):Jenkins,GitLab,Harbor,Tekton,GitOps
  17. Transformer,bert—t for transformers
  18. 弘辽科技:淘宝销量数据从哪查?销量怎么提升?
  19. NBOOT、EBOOT、UBOOT介绍
  20. 苹果手机怎么用流量下载大于200M的应用

热门文章

  1. IDEA----最上面的状态栏不见了的复原方法
  2. 数字时代需要怎样的“安全基座”?首批零信任/SASE标准和评估成果即将揭晓
  3. np.power()简要介绍
  4. 文件下载IOUtils
  5. 简单例子:一个孩子被母亲或父亲要求做家务的情况。父母可能会说:“嘿,亲爱的!如果您通过购物去帮助我,我会给您一些额外的津贴,以便您负担得起想要的玩具。”
  6. English Learning - Day59 作业打卡 2023.2.13 周一
  7. IT人应具备的五种能力
  8. 06.大数据技术之Hbase
  9. 详解python列表中冒号的用法
  10. ANSYSLI exited or could not read server port ANSYSli_DEMO_PORT解决方法