百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

用户投稿 60 0

在word中通过VBA调用百度翻译API在线翻译

一天的时间,借助各种AI终于解决了这个问题:在word中通过VBA调用百度翻译API进行在线翻译。给我的word又添加了一项神技。

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

先上代码:

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

Sub 宏5()

'

' 宏5 宏

Dim appid As String

Dim key As String

Dim salt As String

Dim sign As String

Dim query As String

Dim fromLang As String

Dim toLang As String

Dim url As String

Dim http As Object

Dim responseText As String

Dim translatedText As String

' 设置API信息

appid = "20240903002139***" ' 您的APPID

key = "BKbLnNjh8Xc_Bps7I***" ' 您的密钥

salt = "1435660288" ' 固定随机数以简化测试

query = Selection.text

fromLang = "en"

toLang = "zh"

' 构建待加密字符串

Dim toEncrypt As String

toEncrypt = appid & query & salt & key

Debug.Print "待加密字符串: " & toEncrypt

' 使用UAPI进行MD5加密

Set http = CreateObject("MSXML2.XMLHTTP")

url = "https://uapis.cn/api/textmd5?text=" & URLEncode(toEncrypt)

http.Open "GET", url, False

http.send

Debug.Print "MD5加密请求已发送"

If http.Status = 200 Then

responseText = http.responseText

Debug.Print "MD5加密API响应: " & responseText

End If

' 清理可能的空格和换行符(可选,取决于响应的确切格式)

responseText = Replace(responseText, vbCrLf, "")

responseText = Replace(responseText, " ", "")

' 查找"text"字段的值

Dim startPos As Long

Dim endPos As Long

startPos = InStr(1, responseText, """text"":""", vbTextCompare)

If startPos > 0 Then

startPos = startPos + Len("""text"":""")

endPos = InStr(startPos, responseText, """", vbTextCompare)

If endPos > startPos Then

sign = Mid(responseText, startPos, endPos - startPos)

Debug.Print "生成的MD5签名: """ & sign & """"

Else

Debug.Print "提取MD5签名时出错:无法找到有效的结束位置"

sign = "错误的签名"

End If

Else

Debug.Print "提取MD5签名时出错:无法找到'text'字段"

sign = "错误的签名"

End If

' 构建请求URL

url = "https://fanyi-api.baidu.com/api/trans/vip/translate?q=" & URLEncode(query) & _

"&from=" & fromLang & "&to=" & toLang & "&appid=" & appid & _

"&salt=" & salt & "&sign=" & sign

Debug.Print "翻译请求URL: " & url

' 发送百度翻译API请求

Set http = CreateObject("MSXML2.XMLHTTP")

http.Open "GET", url, False

http.send

Debug.Print "翻译请求已发送"

If http.Status = 200 Then

responseText = http.responseText

Debug.Print "翻译API响应: " & responseText

' 提取翻译结果

startPos = InStr(1, responseText, """dst"":""", vbTextCompare)

If startPos > 0 Then

startPos = startPos + Len("""dst"":""")

endPos = InStr(startPos, responseText, """", vbTextCompare)

If endPos > startPos Then

translatedText = Mid(responseText, startPos, endPos - startPos)

' 转换 Unicode 转义字符到实际中文字符

translatedText = DecodeUnicode(translatedText)

' 将翻译结果插入到选定文本的后面

Selection.Collapse Direction:=wdCollapseEnd

Selection.TypeText text:=" " & translatedText

Debug.Print "翻译结果: " & translatedText

End If

Else

MsgBox "无法找到翻译结果。"

End If

Else

MsgBox "翻译API请求失败,HTTP状态码:" & http.Status

End If

' 释放对象

Set http = Nothing

End Sub

' URL 编码函数

Function URLEncode(ByVal text As String) As String

Dim i As Integer

Dim result As String

Dim c As String

result = ""

For i = 1 To Len(text)

c = Mid(text, i, 1)

Select Case asc(c)

Case 48 To 57, 65 To 90, 97 To 122

result = result & c

Case Else

result = result & "%" & Right("0" & Hex(asc(c)), 2)

End Select

Next i

URLEncode = result

End Function

' 将 \uXXXX 形式的 Unicode 转义序列转换为实际字符

Function DecodeUnicode(text As String) As String

Dim i As Long

Dim result As String

Dim unicodeChar As String

i = 1

Do While i <= Len(text)

If Mid(text, i, 2) = "\u" Then

' 读取 Unicode 代码

unicodeChar = Mid(text, i + 2, 4)

' 转换为字符并添加到结果

result = result & ChrW("&H" & unicodeChar)

' 跳过 \uXXXX

i = i + 6

Else

' 非 Unicode 转义字符,直接添加

result = result & Mid(text, i, 1)

i = i + 1

End If

Loop

DecodeUnicode = result

End Function

上述代码成功的解决了在word中调用百度翻译API进行在线翻译的问题。虽然代码可能不是那么健壮,但是目前测试下来还是可以使用的。

这个代码是提出需求后让AI给编写的。

首先在百度翻译平台申请了账号,获得了APPID和密钥。然后成功的利用UAPI提供的接口解决了字符串MD5加密的问题。最后进行了百度翻译响应的转化,最后得到了期望的结果。

这个代码基本上是AI给编写的。但是在编写过程中,发现,AI会陷入一种死循环,开始的时候,我使用的是ChatGPT-4o,在解决字符串的MD5加密过程中,第一次陷入了死循环,开始他希望调用系统自带的一些功能,但是我的系统有问题,不行,于是他就改为自己用VBA编写程序计算字符串的MD5哈希值,结果还是不行,然后,就开始在这两两种方式之间进行了来回的切换。后来我想到了利用网上提供的在线功能,找到了一个计算MD5的API接口。然后,在提取API给出的密码时,又出现了死循环,先是希望调用VBA-JSON库,结果不行,然后开始手动解析JSON代码,还是不行。最后,开始换别的AI进行实验,先是换了通义,结果和ChatGPT一样,再换Kimi,也是一样。最后换了文心一言,终于走出了思维误区。

通过这个过程,也发现,不同的AI在解决问题的时候还是容易陷入思维误区里面出不来的。这时候,人一定要有想法,否则,就很难解决问题了。

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

#VBA##chatGTP人工智能##百度翻译##API##MD5#

#word中调用VBA#

#word#

百度翻译API结合Potplayer实现字幕翻译详细步骤

这两天研究了下,百度翻译API结合Potplayer播放器实现对外文视频字幕的翻译功能,具体配置步骤整理如下,供参考:

一、申请百度API密钥

1、首先,在百度翻译官网,注册个人开发者,在产品服务-通用文本翻译API,点击立即使用,填写相关信息,这里看各位需求,建议选择标准版即可(2022年8月1日起,通用翻译API标准版免费调用量调整为5万字符/月,高级版免费调用量调整为100万字符/月),注意超过部分是需要收费的哈!

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

2、获取百度API密钥

在管理控制台,找到开发者信息,开通通用文本翻译API,填写相关信息,然后在开发者中心你就会看到APPID和密钥(这里建议自己可以复制下来保存一份)

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

切回到界面菜单,在通用文本翻译-服务概括这里,看到显示启动就OK了

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

二、下载百度翻译插件

这个插件网上很多哈,很方便下载,注意需要SubtitleTranslate - baidu.as、SubtitleTranslate - baidu.ico这两个文件。

将这两个文件,复制到你电脑里安装的Potplayer相应文件夹(路径\PotPlayer\Extension\Subtitle\Translate)

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

三、Potplayer配置

打开菜单,字幕-实时字幕翻译-字幕-实时字幕翻译

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

如下配置:

翻译引擎,选择百度翻译;使用条件和翻译位置,自行根进情况设置就行

下面可以灵活设置你要翻译的语言(即目标语言)

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

四、效果测试

我这边选了一段英语电影片段,没有做翻译配置前就是显示英文字幕,选择翻译后就可以翻成中文了

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

原视频英文字幕

百度ai翻译工具api 在word中通过VBA调用百度翻译API在线翻译

翻译后的中文字幕

需要说明的是,这个字幕翻译,并不是对所有视频有效,有一定使用条件,如果是原视频和字幕本身就合成在一起那种,是不行的,针对如外挂字幕的视频,是可以用的。

以上,供各位参考~

#字幕翻译#

相关问答

国内对接谷歌翻译API-OSCHINA-中文开源技术交流社区

国内对接谷歌翻译API如果国内IP的服务器想对接谷歌翻译API接口,有没有什么办法?如果国内IP的服务器想对接谷歌翻译API接口,有没有什么办法?

抱歉,评论功能暂时关闭!