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 31 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 Python
对python中的高效迭代器函数详解
Oct 18 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
人工神经网络算法知识点总结
Jun 11 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
python3下pygame如何实现显示中文
Jan 11 Python
python3.6使用SMTP协议发送邮件
May 20 Python
详解python with 上下文管理器
Sep 02 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 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 分页函数multi() discuz
2009/06/21 PHP
PHP PDO函数库详解
2010/04/27 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
php实现每日签到功能
2018/11/29 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
跟老齐学Python之for循环语句
2014/10/02 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
给老婆大人的检讨书
2014/02/24 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
低碳环保标语
2014/06/12 职场文书
医学求职自荐信
2014/06/21 职场文书
社会工作专业自荐信
2014/09/26 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
资料员岗位职责
2015/02/10 职场文书
2016年学校招生广告语
2016/01/28 职场文书
Java移除无效括号的方法实现
2021/08/07 Java/Android
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
使用 Apache 反向代理的设置技巧
2022/01/18 Servers