Python3.7 根据音频文件名批量生成SRT字幕脚本及校对技巧

Alice
Alice
发布时间:2026-10-13| 6人浏览过
原创

本文介绍利用Python3.7和Librosa库,根据包含时间信息的音频文件名批量生成SRT字幕文件的方法。脚本通过解析文件名中的分隔符,按音频时长均分时间轴并写入字幕内容。此外,提供了基于Windows PowerShell和Excel VLOOKUP函数的快速校对方案,用于高效检查缺失字幕文件。

适用场景与注意事项

注意:此方法仅适用于文件名本身即包含字幕文本,且通过音频总时长平均拆分来生成字幕的场景。若音频时长与文件名结构不匹配,或文件名不含字幕信息,则不适用此方案。

音频文件名转SRT字幕脚本实现

以下示例演示如何读取 mp3 文件夹下的音频文件,并根据文件名中的分隔符(如 a-pp-le.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列。在 Sheet2 中,批量将 .srt 后缀替换为空字符串。最后,利用 Excel 的 VLOOKUP 函数,在 Sheet1 B列输入公式 =IFERROR(VLOOKUP(A1,Sheet2!A:A,1,FALSE),"") 。若 B 列填充为空,则说明该文件未生成对应的字幕文件。通过筛选 B 列,即可快速定位缺失字幕的文件。

总结

总结

本文介绍了 Python3.7 读取音频并根据文件名生成 SRT 字幕脚本的代码实现。更多相关 Python3.7 读取音频文件名字幕脚本的内容,请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。