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中操作列表之List.pop()方法的使用
May 21 Python
python使用super()出现错误解决办法
Aug 14 Python
python使用Pycharm创建一个Django项目
Mar 05 Python
python替换字符串中的子串图文步骤
Jun 19 Python
Python-Tkinter Text输入内容在界面显示的实例
Jul 12 Python
三个python爬虫项目实例代码
Dec 28 Python
Python实现不规则图形填充的思路
Feb 02 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
python中get和post有什么区别
Jun 19 Python
python 实现控制鼠标键盘
Nov 27 Python
python 字典和列表嵌套用法详解
Jun 29 Python
关于python爬虫应用urllib库作用分析
Sep 04 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分页实例代码分享
2011/07/28 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
如何使用python传入不确定个数参数
2020/02/18 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
精选奢华:THE LIST
2019/09/05 全球购物
应届毕业生求职信范例分享
2013/12/17 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
具结保证书范本
2015/05/11 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
工作一年自我鉴定
2019/06/20 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
详解MySQL的内连接和外连接
2023/05/08 MySQL