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 相关文章推荐
详解Python3操作Mongodb简明易懂教程
May 25 Python
基于hashlib模块--加密(详解)
Jun 21 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
Python实现屏幕截图的两种方式
Feb 05 Python
Python中交换两个元素的实现方法
Jun 29 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
Django组件content-type使用方法详解
Jul 19 Python
Python实现名片管理系统
Feb 14 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
Nov 28 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 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
PHP 编程的 5个良好习惯
2009/02/20 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
Javascript document.referrer判断访客来源网址
2020/05/15 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
python装饰器初探(推荐)
2016/07/21 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
python求解汉诺塔游戏
2020/07/09 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
Footshop法国:购买运动鞋
2020/01/19 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
大学生农村教师实习自我鉴定
2013/09/21 职场文书
小学教师管理制度
2014/01/18 职场文书
调解协议书
2014/04/16 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
出纳试用期自我评价
2015/03/10 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
2015年销售人员工作总结
2015/04/07 职场文书