有可以翻译视频字幕的软件么??

有可以翻译视频字幕的软件么??,第1张

有时从网上下载到新的电影,却没有中文字幕,好不容易找到个字幕却是英文版的,本程序原理是调用谷哥的翻译功能,仅调用了英翻汉功能,如果需要其他语言可回贴说明一下,改起来应该不难。为便于修改,使用了VBS来写,随时随地可修改.....

1、生成程序:把下列语句存于一个纯文本文件(比如用你系统的“记事本”粘贴进去再存成“字幕翻译.vbs”即可使用。

2、使用方法:把英文字幕的“.srt”文件租蔽薯用鼠标拖到这个程序上松手即可开始自动翻译,翻译完成后自动生成一个同名文件的汉字字幕文件。

'程序调用谷哥的翻译功能,仅调用了英翻汉功能,如果需要其他语言请回并指贴说明一下,改起来应该不难。

'为便于修改,使用了VBS来写,随时随地可修改……

'使用方法是把“英文字幕。srt”用鼠标拖到这个程序上松手即可开始自动翻译。

'[程序开始]

Dim WshShell,file_name,str,val(5000,3),reg,wmi

Set WshShell=WScript.CreateObject("WScript.Shell")

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objShell = CreateObject("弊者Shell.Application") '建立Shell.Applciation 对象

Set Shell=CreateObject("Shell.Application")

Set objArgs=WScript.Arguments'取得拖入的文件名

on error resume next

Set wmiService = GetObject("winmgmts:\\.\root\cimv2") '关闭内存中未完全退出占用小于8M的IE

Set wmiObjects = wmiService.ExecQuery("SELECT * FROM Win32_process where caption='iexplore.exe'")

if wmiObjects.count >0 then

For Each wmiObject In wmiObjects

if (wmiObject.workingsetsize/1048576) <80 then wmiObject.terminate()

next

End if

file_name=""

if objArgs(0)=Empty then file_name="No"

WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Window Title","","REG_SZ" '去除标题栏后IE说明

on error goto 0

start_time=now()

if file_name="No" then msgbox "未找到匹配文件,请拖动字幕文件到本程序。":Wscript.Quit

set ie=wscript.createobject("internetexplorer.application","event_") '创建ie对象'

Set google = WScript.CreateObject("InternetExplorer.Application")

google.visible = false

WshShell.RegDelete "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Window Title"'恢复IE标题栏说明为Internet Exporer

'ie.fullscreen=0:ie.menubar=0:ie.addressbar=0:ie.toolbar=0:ie.statusbar=0:ie.resizable=1

' 不使用全屏 '取消菜单栏 '取消地址栏 '取消工具栏 '取消状态栏 '允许用户改变窗口大小

ie.width=500:ie.height=500:ie.top=2:ie.navigate "about:blank" '宽 高 打开空白页面

ie.document.write "<html><head><title> - 字幕英翻汉程序</title></head><body>"

ie.document.write "<div id=right> "

ie.document.write "<a target=_BLANK href=http://bbs.dp168.com/thread-108654-1-1.html style=font-size:12px>论坛</a></div><br>"

set wnd=ie.document.parentwindow '设置wnd为窗口对象'

set id=ie.document.all '设置id为document中全部对象的集合'

tmp1=InstrRev(objArgs(0),".")-1 '计算中间应使用的中文字幕文件名

if tmp1>0 then

if instr(objArgs(0),"eng") then

file_name=replace(objArgs(0),"eng","chs")

else

file_name=left(objArgs(0),tmp1) &".chs" &right(objArgs(0),len(objArgs(0))-tmp1)

end if

else

file_name=objArgs(0) &"chs.txt"

end if

on error resume next

objFSO.deletefile file_name,true

on error goto 0

'msgbox file_name

txt=""

Set tmp1 = objFSO.OpenTextFile ( objArgs(0),1) '打开英文字幕原始文件准备读取

txt = trim(tmp1.ReadAll) '读所有进内存

set tmp1=nothing

for i=1 to 3 '修正头部出错

line=mid(txt,i,1)

if asc(line)=31 then exit for

next

txt="1" &vbCrLf &right(txt,len(txt)-i)

reg=split(txt,vbCrLf)'在内存中提取已读入的注册表关键字并放入val

count=1

ie.document.write " <textarea rows=15 cols=35 id=txt></textarea>"

ie.visible=1 '窗口可见

for i=0 to UBound(reg)'翻译开始:读一行处理一行

for j=1 to UBound(reg)

if IsNumeric(reg(i)) then if cint(reg(i))=count then exit for

i=i+1

next'出循环时已找到第count句

i=i+1:if i>UBound(reg) then exit for

on error resume next

while instr(reg(i),"-->")=0 and i<UBound(reg)

i=i+1

wend'如果行号是第i,并且下行有表示时间轴的"-->"则后面是文字

if err.number<>0 then

msgbox err.number

err.clear

end if

on error goto 0

val(count,0)=reg(i)'出循环时已找到有"-->"的时间轴

i=i+1:str=""

if i>UBound(reg) and count<2 then

if count<2 then

ie.document.write "这个字幕格式不能被识别:<br>" &file_name &"。<br>"

Wscript.Quit

end if

exit for

end if

for j=1 to UBound(reg)

if trim(reg(i))>"" then str=str &reg(i) &vbCrLf

if (i+1)>UBound(reg) then exit for

if IsNumeric(reg(i+1)) then if int(reg(i+1))=count+1 then exit for

i=i+1:if i>UBound(reg) then exit for

next

if j=UBound(reg) then str="Not find then string."

if right(str,1)=chr(10) or right(str,1)=chr(13) then str=left(str,len(str)-1)

if right(str,1)=chr(10) or right(str,1)=chr(13) then str=left(str,len(str)-1)

val(count,1)=str

val(count,2)=trans(str)

ie.document.getElementById("txt")。value=count &vbCrLf &val(count,1) &vbCrLf &val(count,2) &vbCrLf

count=count+1

next

txt=""

for i=1 to count-1

txt=txt &i &vbCrLf &val(i,0) &vbCrLf &val(i,1)

txt=txt &vbCrLf &val(i,2) &vbCrLf &vbCrLf

next

Set tmp1=objFSO.OpenTextFile(file_name,8,True,0) '打开TXT准备写入

txt=txt &vbCrLf &vbCrLf

tmp1.write(txt)

tmp1.close

i=datediff("s",start_time,now()) :if i>60 then j=(i mod 60) &"分" &int(i/60) &"秒" else j=i &"秒"

k=int(i/(count-1)*100)/100:if k<1 then k="0" &k

j=j &"平均每句" &k &"秒"

ie.document.write "<br><br> 翻译" &count-1 &"句用去" &j &",请直接"

ie.document.write "关闭本窗口。<br>已生成" &file_name &"。<br><br><br>"

ie.document.parentwindow.scrollby 0,150

Wscript.Quit

'程序是否在运行

FunctiOn is_Process(ProcessName) '程序是否在运行

dim Process_n,prog

Set prog=getobject("winmgmts:\\.")。instancesof("win32_process")

For Each Process_n In prog

If LCase(Process_n.name)=LCase(ProcessName) Then

is_Process=1

Else

is_Process=0

End If

Next

set prog=nothing

End Function

'使用谷歌翻译对应的句子,请注意之前使用了以下两句

'Set google = WScript.CreateObject("InternetExplorer.Application")

'google.visible = false

FunctiOn trans(str_in)

dim i,j,str_out,strURL,ping_time,tmpval

if trim(str_in)="" then trans="翻译字符串不能为空":Exit Function

str_in=trim(replace(str_in,vbCrLf,""))

strURL=trim(replace(str_in," ","%20"))

strURL = "http://translate.google.cn/?sl=auto&tl=zh-CN#en/zh-CN/" &strURL &""

google.navigate strURL

Set objWMI = GetObject("winmgmts:\\.")

Set colPings = objWMI.ExecQuery ("Select * From Win32_PingStatus where Address = '" &"translate.google.cn" &"'")

ping_time=9999

On error resume next

For Each objPing in colPings

ping_time=objPing.ResponseTime+0

Next

On error goto 0

if ping_time >2000 then trans="翻译服务器太慢,请改时段翻译":Exit Function

for i=1 to 5

trans="":str_out="":tmpval=0

wscript.sleep ping_time*3

on error resume next

trans = google.document.body.innerText

on error goto 0

tmpval=instr(trans,"地址,或者上传文档")+32 '之前定义39结果少取了3个,36也少取4个?

if tmpval>0 then

trans=right(trans,len(trans)-tmpval)

tmpval=instr(trans,"正式用语")-3

if tmpval>0 then

trans=left(trans,tmpval)

tmpval=instr(trans,"仍然翻译")+4

trans=right(trans,len(trans)-tmpval)

tmpval=instr(trans,str_in)

if tmpval>0 then trans=right(trans,len(trans)-tmpval-len(str_in))

while right(trans,1)=chr(10) or right(trans,1)=chr(13)

trans=left(trans,len(trans)-1)

wend

tmpval=instr(trans,vbCrLf &vbCrLf)

if tmpval>0 then trans=right(trans,len(trans)-tmpval)

while len(trans)>len(replace(trans,vbCrLf &vbCrLf,vbCrLf))

trans=replace(trans,vbCrLf &vbCrLf,vbCrLf)

trans=trim(trans)

wend

trans=replace(trans,"<I>","<i>")

trans=replace(trans,"</ I>","</i>")

if left(trans,1)=chr(10) or left(trans,1)=chr(13) then trans=right(trans,len(trans)-1)

if left(trans,1)=chr(10) or left(trans,1)=chr(13) then trans=right(trans,len(trans)-1)

if left(trans,1)=chr(10) or left(trans,1)=chr(13) then trans=right(trans,len(trans)-1)

if left(trans,1)=chr(10) or left(trans,1)=chr(13) then trans=right(trans,len(trans)-1)

if right(trans,1)=chr(10) or right(trans,1)=chr(13) then trans=left(trans,len(trans)-1)

if right(trans,1)=chr(10) or right(trans,1)=chr(13) then trans=left(trans,len(trans)-1)

if trans>"" then exit for

end if

end if

next

if trans="" then trans="不知道为什么,反复试了5次都取不出翻译结果"

End Function

'[程序结束]

例如:百度翻译、有道英语等。

以下是百度翻译的相关介绍:

百度翻译拥有稿数网页、APP、百度小程序等多种产品形态,此外还针对开发者提供开放云接口服务,日均响应千亿字符翻译请求。

除文本、网页翻译外,推出了文档翻指稿译、图片翻译、拍照翻译、语音翻译等多模态的翻译功能,以及海量例句、权威词典等丰富的外语资源,实用口语、英语跟读、英语短视频、AI背单词等外语学习功能,满足用户多样性的翻译需求和学习需求。

针对具有音频转写、字幕翻译需求的用户,推出AI视频翻译一键生成双语字幕;针对个人学习、企业内部参考等需求,结合机器的快捷与人工的精准优势,提供“AI翻译键逗首+人工校对”服务;针对商业发布、播出级影视翻译制作需求,提供一对一定制方案。

以上资料参考百度百科——百度翻译


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12307982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存