过长机翻字幕分段处理(基于Tern和Matlab)

最近需要在网上看英文视频,但好多视频连英文字幕都没有,幸好在网上找到了“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']);
        
### 使用MATLAB绘制包含一个中心节点六个子节点的通信网络拓扑图 为了创建这样的图形,可以通过定义各个无人机的位置并利用`plot`函数以及`gplot`函数来展示这些节点及其连接情况。下面提供了一种方法来实现这一目标。 ```matlab % 定义无人机数量及中心节点坐标 numDrones = 6; centerNodePosition = [0, 0]; % 计算各无人机相对于中心节点的角度间隔 angleInterval = linspace(0, 2*pi*(1-1/numDrones), numDrones); % 设定半径大小以决定无人机离中心的距离 radius = 5; % 初始化存储所有节点坐标的矩阵 nodePositions = zeros(numDrones+1, 2); nodePositions(1,:) = centerNodePosition; % 中心节点位置 for i=1:numDrones nodePositions(i+1, :) = radius*[cos(angleInterval(i)), sin(angleInterval(i))]; end % 创建邻接矩阵描述哪些节点之间存在链接;这里假设所有的无人机都直接与中心相连 adjacencyMatrix = eye(numDrones+1); adjacencyMatrix(1,2:end) = 1; adjacencyMatrix(2:end,1) = 1; figure(); hold on; scatter(nodePositions(:,1), nodePositions(:,2), 'filled'); % 绘制节点 text(nodePositions(:,1)+0.3, nodePositions(:,2), strsplit(['Center'; sprintf('Drone%d\n', 1:numDrones)])); % 添加标签 gplot(adjacencyMatrix,nodePositions,'-*') ; % 绘制连线 axis equal; title('Communication Topology of One Center Node and Six Drones'); xlabel('X Position'); ylabel('Y Position'); legend({'Nodes','Links'},'Location','BestOutside') ``` 这段代码首先设置了七个点——一个是位于原点处作为指挥中枢的中心节点,另外六个均匀分布在圆周上的代表不同方向上部署的无人飞行器。接着计算了它们各自的极角,并据此确定具体的空间布局。最后通过调用`gplot()`函数按照给定的邻接矩阵画出了整个通讯网状结构[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值