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.x中自定义比较函数
Apr 24 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
python+django加载静态网页模板解析
Dec 12 Python
利用python实现简单的邮件发送客户端示例
Dec 23 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
Python键盘输入转换为列表的实例
Jun 23 Python
Python高斯消除矩阵
Jan 02 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
Python求正态分布曲线下面积实例
Nov 20 Python
Python实现密码薄文件读写操作
Dec 16 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 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定义字符串的四种方式详解
2018/02/06 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
面包屑导航详解
2017/12/07 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
决策树的python实现方法
2014/11/18 Python
详解python基础之while循环及if判断
2017/08/24 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
python多线程分块读取文件
2019/08/29 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
Structs界面控制层技术
2013/10/11 面试题
安全检查验收制度
2014/01/12 职场文书
珠宝店促销方案
2014/03/21 职场文书
三八妇女节致辞
2015/07/31 职场文书
初一军训感言
2015/08/01 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android