用FunASR轻松实现音频转SRT字幕:完整脚本与解析

在视频创作、内容归档或多语言传播场景中,为音频生成字幕(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},{
     
     
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值