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

调用腾讯云批量文本翻译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.kler.cn/a/534617.html

相关文章:

  • langchain教程-6.TextSplitter/文档切分
  • 【C语言系列】深入理解指针(5)
  • Python爬虫-如何正确解决起点中文网的无限debugger
  • Python-基于PyQt5,Pillow,pathilb,imageio,moviepy,sys的GIF(动图)制作工具
  • Denavit-Hartenberg DH MDH坐标系
  • java项目全局拦截器
  • Text2Sql:开启自然语言与数据库交互新时代(3030)
  • postgresql-COALESCE函数、NULLIF函数、NVL函数使用
  • 腾讯云 TI 平台部署与调用DeepSeek-R1大模型的实战指南
  • docker常用基础
  • 【极简模式】deepseek文案+剪映图文成片
  • 使用媒体查询确保网页能够在手机、平板和电脑上正常浏览
  • AI回答 | spring,springboot,spring MVC,servlet, spring web之间的联系与支持
  • Java面试:a+=a-=aa原理解析
  • 国产编辑器EverEdit - 工具栏说明
  • SpringBoot 整合 Mybatis:注解版
  • 深度学习|表示学习|卷积神经网络|NIN 相比普通 CNN|17
  • mysql慢查询工具explain
  • MySQL 的 binlog 作用
  • 11.10 LangChain对话记忆管理实战:从入门到生产级ConversationBufferMemory应用指南
  • 查看设备uuid
  • 【EdgeAI实战】(2)STM32 AI 扩展包的安装与使用
  • 【技术追踪】DiffMIC:用于医学图像分类的双引导扩散网络(MICCAI-2024)
  • 了解linux-5.4.31/drivers/gpio/gpiolib-devres.c中的devm_gpiod_get_optional()函数
  • MD5 简介 以及 C# 和 js 实现【加密知多少系列_1】
  • 新版AndroidStudio 修改 jdk版本