试想一下,当我们在观看一段视频时,如果遇上字幕缺失,观感是不是会大打折扣?
近些年,短视频、直播等线上娱乐方式快速发展,直接拉动了旅游、电商、影视创作等行业新风潮;而要呈现出一段好的视频效果,不仅仅考验好的拍摄技法,后期处理也是重中之重。以视频字幕为例,有字幕的视频总能“一气呵成”的顺畅看完,而无字幕的,总令人觉得缺失了一种味道。事实上,纯手工添加字幕,也费时费力,面对较大时长与批量化字幕处理的,多少有些苦不堪言,那有没有更智能化的方式呢?
接下来,本文将分享一下,如何借助录音文件识别服务给无字幕视频自动生成字幕。
一、分析调研
给无字幕视频自动生成字幕,其实就是先对视频文件导出的音频文件进行识别,得到识别文字,再根据识别得到的文字与短句的时间信息处理得到视频srt字幕文件,在视频文件中导入srt字幕文件即可得到效果。
实现思路如下:
1.借助ffmpeg从视频中提取音频
2.调用录音文件识别服务,对音频文件进行识别
3.对识别得到的文字与短句的时间信息进行处理得到视频srt字幕文件
4.将命名相同的视频文件与srt文件放在同一目录下,用暴风影音或其他播放器打开,即可得到有字幕的视频。
二、代码开发
1.借助ffmpeg从视频中提取音频
项目使用了ffmpeg依赖,需先下载安装,并设置环境变量。之后就可通过引入subprocess库,执行ffmpeg命令,启动一个新进程,完成对音频的提取。
import subprocess
def extract_audio(video, tmpAudio):
ret = subprocess.run('ffmpeg -version', shell=True)
if ret.returncode != 0:
print("请先安装 ffmpeg 依赖 ,并设置环境变量")
return
ret = subprocess.check_call(['ffmpeg', '-i', video, '-vn', '-ar', "16000", tmpAudio], shell=False)
if ret.returncode != 0:
print("error:", ret)
2.识别音频文件
在这里笔者选择的录音文件识别服务是腾讯云ASR的录音文件识别,通过调研,腾讯云的录音文件识别,可以在调用时直接根据语句之间的停顿智能断句、加标点,无需再调用其他接口进行语句拆分,同时返回结果数据也可根据不同需求进行多种选择,如是否过滤脏词、是否过滤语气词等。
服务具体详细信息这里不再赘述,详情见官方文档见腾讯云ASR。
(1)要访问腾讯云的服务,则需要SecertId与SecretKey,该API密钥可在