问题
各大平台都有长语音转写的服务,但是收费昂贵,而且有次数和时间限制。
因此我想到了一个白嫖的好办法。将长音频根据语句停顿切割得到短音频,使用他们提供的短音频识别服务来识别长音频不是更好吗?粗略计算了下,可以使用的时长为50000分钟,白嫖。
至于视频声音的停顿时间也是很容易得到的。
最后根据文字与文字出现的时间很容易就得到了视频的srt字幕
解决
工程路径:voice_to_text.zip-互联网文档类资源-CSDN下载
注意字幕导出的地址,自己修改一下,你要是直接复制控制台信息我也无话可说
思路
导出视频声音,根据声音停顿得到短句,同时导出短句的时间信息
短句语音识别得到识别文字
识别文字与短句的时间信息处理得到视频srt字幕文件
导入srt字幕文件即可得到效果,如图
播放器推荐暴风影音,文字可以调节变色,大小,位置都比较方便。
原先视频是没有字幕的,经过上述处理得到srt文件就如同看字幕电影一样了。
得到的srt文件如图
接下来就一步一步开始吧,srt文件格式原理是什么,看我另一篇有关视频声音转为字幕的。那篇使用的长录音转文字接口,优惠力度不大,用几次就没了,所以特意写了这一篇可以白嫖而且时间非常长的,用个几个月都没有问题。
只需要关注srt格式就可以了
python-视频声音根据语音识别自动转为带时间的srt字幕文件_lidashent的博客-CSDN博客
导出音频分片,导出音频时间信息
先将视频声音导出,设定标准为16bit,8000hz,这里使用的au,adobe audition
(—解释—:)【这是短语音识别要求的】
(—解释—:)【这里需要注意的是,虽然切片对人声进行了保留,但是不乏切割到的音频有的是空白,因此需要一个大小判断,低于100kb可以默认为无声】
自动识别停顿,对声音切片
效果-诊断-标记音频
设置静默阈值,时长越低分片越多,反向同理
声音阈值,时长越长,分片越少,反向同理
设置合适的阈值,注意自动分割的音频片,极限60s,最好不要超过45s
有音频片长度过长也不行,影响字幕观看,你不想看视频的时候视频上都是字幕吧?我一般看到分片间隔10s就够了
然后点击扫描,
再点击全部标记,就会显示灰色的标记信息
点击到标记条,可以看到分片信息,
ctrl a全选,然后右键选择导出音频,导出csv
编写函数,对语音分片实现语音识别,得到文字信息
import os
from aip import AipSpeech#这是百度的aip包,
def get_need_music_file(file_path):
file_list=os.listdir(file_path)
real_list=[]
for i in file_list:
if i[-3:]=="wav":
real_list.ap