在视频创作、内容归档或多语言传播场景中,为音频生成字幕(SRT文件)是一项常见需求。借助开源语音识别工具FunASR,我们可以快速实现从音频到字幕的自动化转换。
FunASR能轻松的识别音频,并切分好句子,但是我试了几种方式,都不能生成srt字幕文件,所以我就自己写了一个脚本来生成,大家可以看看!
什么是FunASR?
FunASR是阿里巴巴达摩院推出的开源语音识别工具包,支持多语言语音识别、语音活动检测(VAD)、标点预测等功能,且模型轻量化、精度高,非常适合开发者快速搭建语音处理应用。
本文的脚本正是基于FunASR的能力,实现“音频输入→语音识别→时间戳提取→SRT字幕生成”的全流程自动化。
准备工作:环境搭建
在使用脚本前,需先安装FunASR。通过pip即可快速安装:
pip install funasr # 基础版本
安装完成后,即可运行本文的脚本。
脚本完整解析
以下是基于FunASR生成SRT文件的完整脚本,我们将逐段解析其功能:
# -*- coding: utf-8 -*-
import os
# os.environ['MODELSCOPE_CACHE']='./models' # 可选:指定模型缓存路径
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
1. 时间戳格式化函数
SRT字幕的时间戳格式为HH:MM:SS,mmm(时:分:秒,毫秒),需要将FunASR返回的“毫秒”时间转换为该格式:
def format_time_ms(milliseconds):
"""将毫秒数格式化为SRT时间戳格式 (HH:MM:SS,mmm)"""
# 拆分毫秒为“秒”和“剩余毫秒”
seconds, ms = divmod(milliseconds, 1000)
# 拆分总秒数为“时、分、秒”
hours, remainder = divmod(seconds, 3600)
minutes, seconds = divmod(remainder, 60)
# 格式化输出(确保两位数/三位数)
return f"{
hours:02d}:{
minutes:02d}:{
seconds:02d},{

最低0.47元/天 解锁文章
5263

被折叠的 条评论
为什么被折叠?



