最近需要在网上看英文视频,但好多视频连英文字幕都没有,幸好在网上找到了“Tern”这个软件,结合腾讯云等进行语音转文字,英文翻译中文的自动字幕生成。虽然全部是语音识别和机翻,但也解决了很大问题。
使用Tern时有个苦恼:有些视频英文说得飞快,语音识别时会弄出一个超级长的句子,字幕也就特别长,有时候会满屏,自己做了一个matlab代码对超长字幕进行分割,使用效果还不做,用者自取。
%
fclose('all');
clear
clc
path = '工作目录';
path_number = [path '\原字幕.srt'];
path_no_number = [path '\处理后字幕.srt'];
%
fid_r = fopen(path_number,'r','n','UTF-8');
fid_w = fopen(path_no_number,'w','n','UTF-8');
fprintf(fid_w,'%s\r\n','WEBVTT');
fprintf(fid_w,'%s\r\n','');
t_line = fgetl(fid_r);
%
%-----------------------处理SRT字幕---------------------
if str2num(t_line) == 1
while 1
if t_line == -1
break
end
%
%读时间
t_line = fgetl(fid_r);
t_line_zh = fgetl(fid_r);
t_line_en = fgetl(fid_r);
%
t_line = replace(t_line,',','.');
%
%判断时间长短,过长则进行分割
divid_str = [char(45) char(45) char(62)];
time_cell = textscan(t_line,['%s' divid_str '%s']);