Python3.7 读取音频根据文件名生成脚本的代码


Posted in Python onApril 07, 2020

Warning: 仅适用于文件名即字幕本体,按音频时常平均拆分来生成字幕,其他情况不适合。

以下为读取 mp3 文件夹下的音频,然后按市场,平均来生成字幕,例如文件名 a-pp-le.mp3,字幕也将是 a pp le 三行。

make_srt.py 代码

import librosa
import os

g = os.walk(r"mp3")

def calTime(time):
  sec = int(time)
  micSec = time - sec
  
  timeStr = ''
  if (sec < 10):
    timeStr += '0' + str(sec)
  else:
    timeStr += str(sec)

  if micSec == 0:
    timeStr += ',000'
  else:
    timeStr += ',' + str(round(micSec * 1000))

  return timeStr

for path,dir_list,file_list in g: 
  for file_name in file_list:
    filename = str('mp3/') + file_name
    time = librosa.get_duration(filename = 'mp3/' + file_name)
    split = file_name.strip('.mp3').split('-')
    count = file_name.count('-') + 1
    average = time / count
    # y, sr = librosa.audioread('phonics_demo/' + file_name, sr=None)
    # print(sr)
    if count > 1:
      for inx, val in enumerate(split):
        # print(time)
        f = open("srt/" + file_name + ".srt",'a')
        f.write(str(inx + 1))
        f.write('\n')
        start = calTime((inx + 1) * average)
        end = calTime((inx + 2) * average)
        if inx == 0:
          f.write("00:00:00,000" + " --> " + "00:00:" + start)
        else:
          f.write("00:00:" + start + " --> " + "00:00:" + end)
        f.write('\n')
        f.write(val)
        f.write('\n\n')

大概效果如下:

1
00:00:00,000 --> 00:00:01,659
a

2
00:00:01,659 --> 00:00:03,318

broad

在大量音频文件生成字幕之后,需要校对缺失的字幕,有个快速的手段(以Windows 10为例): 在 mp3 目录下,按住 Shift 键点击右键吊起 Powershell 命令行工具,输入 ls > mp3.txt 将整个目录的文件,一行行的输出到 mp3.txt,直接复制进一个Excel 的 Sheet1 A列中待用,同样的操作将 srt 文件中的目录复制到 Sheet2 A列中,然后批量将 .srt 替换为空,然后使用 Excel 提供的 vlookup 方法,在 Sheet1 B列 =IFERROR(VLOOKUP(A1,Sheet2!A:A,1,FALSE),"") ,未找到结果的在B列将填充空,筛选一下就知道哪个文件没生成字幕文件了。

总结

到此这篇关于Python3.7 读取音频根据文件名生成脚本的代码的文章就介绍到这了,更多相关Python3.7 读取音频文件名字幕脚本内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中利用函数装饰器实现备忘功能
Mar 30 Python
简单的Python的curses库使用教程
Apr 11 Python
从头学Python之编写可执行的.py文件
Nov 28 Python
PyQt5每天必学之拖放事件
Aug 27 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
Python之时间和日期使用小结
Feb 14 Python
python多线程扫描端口(线程池)
Sep 04 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
python实现人机五子棋
Mar 25 Python
Python pandas如何向excel添加数据
May 22 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
Django中从mysql数据库中获取数据传到echarts方式
Apr 07 #Python
PyCharm 在Windows的有用快捷键详解
Apr 07 #Python
python实现控制台输出彩色字体
Apr 05 #Python
python学生管理系统的实现
Apr 05 #Python
python实现一个猜拳游戏
Apr 05 #Python
python实现对变位词的判断方法
Apr 05 #Python
python如何判断IP地址合法性
Apr 05 #Python
You might like
杏林同学录(九)
2006/10/09 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
2016/05/31 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
Python 类的继承实例详解
2017/03/25 Python
Python中的元组介绍
2019/01/28 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
德国电子产品购物网站:TechInTheBasket德国
2018/12/07 全球购物
手术室护士自我鉴定
2013/10/14 职场文书
产品促销活动策划书
2014/01/15 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
2015年小学生暑假总结
2015/07/13 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js