当前位置: 首页 > news >正文

调用腾讯云批量文本翻译API翻译srt字幕

上一篇文章介绍了调用百度翻译API翻译日文srt字幕的方法。百度翻译API是get方式调用,参数都放在ur中,每次调用翻译文本长度除了接口限制外,还有url长度限制,而日文字符通过ur转码后会占9个字符长度,其实从这个角度来讲,get方式传参效率确实不高。不过百度翻译API,申请过程简单,免费额度不少,也还是推荐之选。
本篇介绍下调用腾讯云服务/机器翻译/批量文本翻译API来翻译字幕,那它跟百度翻译api比有什么不同呢?
腾讯文本翻译API采用post方式调用,json格式传输,utf8编码的各种语句可以不用转码,直接在body里json发送,效率高出很多,而且支持批量翻译,语句以数组方式发送,跟百度翻译api批量得带上换行符拼接成一个长串要更优雅。此外腾讯文本翻译有封装好的tencentcloud-sdk-nodejs-tmt库,更方便node.js中直接调用,不用手写签名实现代码。
这看起来都是优点,那么有什么缺点么?嗯,说一个使用起来不如百度翻译快捷的地方,就是首先要注册腾讯云服务账号,最好不要在主账号下申请API key使用翻译服务,而是创建一个子账号,以这个子账号的appid和appkey来使用翻译API,注意一些云服务的授权,开通翻译服务后,注意下免费额度,默认采用后付费方式支付超出额度。经过一系列配置授权后,就可以在程序中使用腾讯云翻译api了。
同样是翻译一个日文srt字幕(文件以utf8 without bom编码存放),跟使用百度翻译api比要简单不少,示例如下:

const fs=require('fs');
const srtpath="yoursrtpath"
const srtContent = fs.readFileSync(srtpath+process.argv.slice(2)[0]+'.srt', 'utf8');
const SubtitlesParser = require('subtitles-parser');
const subtitles = SubtitlesParser.fromSrt(srtContent);maxlength=6000;
let bufrows=[];
let bufstrlen=0;
let start=0;const tencentcloud = require("tencentcloud-sdk-nodejs-tmt");
const TmtClient = tencentcloud.tmt.v20180321.Client;
const clientConfig = {credential: {secretId: "yourappid",secretKey: "yourappkey",},region: "ap-guangzhou",profile: {httpProfile: {endpoint: "tmt.tencentcloudapi.com",},},};
const client = new TmtClient(clientConfig);(async()=>{
for (let i=0;i<subtitles.length;i++) {if (bufstrlen+subtitles[i]["text"].length+2>maxlength) {let data=await client.TextTranslateBatch({"SourceTextList":bufrows,"Source": "ja","Target": "zh","ProjectId":0});for (let j=0;j<data.TargetTextList.length;j++) {subtitles[start+j]["text"]=data.TargetTextList[j];}bufrows=[subtitles[i]["text"]];bufstrlen=subtitles[i]["text"].length+2;start=i;}else {bufrows.push(subtitles[i]["text"]);bufstrlen+=subtitles[i]["text"].length+2;}}let data=await client.TextTranslateBatch({"SourceTextList":bufrows,"Source": "ja","Target": "zh","ProjectId":0});
for (let j=0;j<data.TargetTextList.length;j++) {subtitles[start+j]["text"]=data.TargetTextList[j];}const newSrtContent = SubtitlesParser.toSrt(subtitles);
fs.writeFileSync(srtpath+process.argv.slice(2)[0]+'.cn.srt', newSrtContent);
})();

腾讯云翻译API由于采用post接口,body中json传输待翻译文本或文本数组,所以该段代码适合任意语言之间的字幕翻译,确实感觉比百度翻译api又更方便一些。
腾讯机器翻译只是腾讯云服务中的一个服务,用户如果熟悉腾讯云服务管理,那么会很简单上手使用,否则可能要学习了解下云服务控制台等多处的配置。

http://www.lryc.cn/news/531427.html

相关文章:

  • 车载软件架构 --- 软件定义汽车面向服务架构的应用迁移
  • Baklib引领内容中台与人工智能技术的创新融合之路
  • 想品客老师的第十一天:模块化开发
  • 接入DeepSeek大模型
  • 基于遗传算法的256QAM星座图的最优概率整形matlab仿真,对比优化前后整形星座图和误码率
  • JavaScript系列(57)--工程化实践详解
  • Linux-CentOS的yum源
  • 【大数据技术】案例03:用户行为日志分析(python+hadoop+mapreduce+yarn+hive)
  • LeetCode 0680.验证回文串 II:两侧向中间,不同就试删
  • 第二十章 存储函数
  • 架构规划之任务边界划分过程中承接分配
  • 【C++】线程池实现
  • vsnprintf的概念和使用案例
  • 解读隐私保护工具 Fluidkey:如何畅游链上世界而不暴露地址?
  • Linux环境Kanass安装配置简明教程
  • 数据分析常用的AI工具
  • 项目中常用中间件有哪些?分别起什么作用?
  • kaggle视频行为分析1st and Future - Player Contact Detection
  • 1. junit5介绍
  • (脚本学习)BUU18 [CISCN2019 华北赛区 Day2 Web1]Hack World1
  • Caxa 二次开发 ObjectCRX-1 踩坑:环境配置以及 Helloworld
  • 【自然语言处理(NLP)】生成词向量:GloVe(Global Vectors for Word Representation)原理及应用
  • bable-预设
  • 回顾生化之父三上真司的游戏思想
  • 无公网IP 外网访问青龙面板
  • 中国证券基本知识汇总
  • C基础寒假练习(2)
  • Baklib如何提升内容中台智能化推荐系统的精准服务与用户体验
  • 【Java】位图 布隆过滤器
  • 【专业标题】数字时代的影像保卫战:照片误删拯救全指南