微软翻译 API 在 Python 中的回复

Response from Microsoft Translate API in Python

我最近一直在尝试创建一些软件来录制一些语音,将语音更改为文本,并将该文本翻译成另一种语言。到目前为止,我已经完成了前两个目标,但我一直在为翻译而苦苦挣扎。

我一直在尝试使用 Microsoft Translator API,并已按照所有说明设置我的环境。我设置了一个 Microsoft Azure Marketplace 帐户,设置了一个项目,启用了 API,我已经能够使用一个简单的 bash 命令来获取我的访问令牌:

curl --data "" 'https://api.cognitive.microsoft.com/sts/v1.0/issueToken?Subscription-Key=mySubscriptionKey'

我使用发送请求的请求和 argparse 库编写了一个小 python 脚本:

request = {
    'appid': ('Bearer ' + token),
    'text' : txt,
    'from' : 'en',
    'to' : 'fr'
}

response = requests.get('https://api.microsofttranslator.com/v2/http.svc', params = request)

一切似乎都很顺利,我得到了一个 200 的响应(我认为这意味着成功),但是当我尝试查看响应中的文本时,打印了数百行晦涩难懂的 html出去。在浏览了几百行之后(其中大部分列出了我选择不将我的文本翻译成的几十种语言),我找不到任何实际翻译的文本。微软在 their github 上的所有示例都使用微软正在停止作为授权 link 的过时的 DataMarket 网站。此外,我找不到任何实际使用 API 的例子——它们都只是授权例子。在他们的 'Try it Out' 示例中使用令牌给出了正确的结果(尽管作为 xml 文件?),所以这绝对是一个 python 问题。

那么,有没有人以前使用过此服务并且介意阐明如何解释或解包此响应?

谢谢!

我试图重现你的问题,但失败了,我的示例代码工作正常,可以按照文档编写 Microsoft 认知服务转换器 API & Text Translation API /Translate.

的身份验证令牌 API

作为参考,这里是我在 Python 中的示例代码及其下的输出。

import requests

# Getting the key from tab Keys on Azure portal
key = "xxxxxxxxxxxxxxxxxxxxxxx" 

# For gettting access token
# url4authentication = 'https://api.cognitive.microsoft.com/sts/v1.0/issueToken?Subscription-Key=%s' % key
# resp4authentication = requests.post(url4authentication)

url4authentication = 'https://api.cognitive.microsoft.com/sts/v1.0/issueToken'
headers4authentication = {'Ocp-Apim-Subscription-Key': key}
resp4authentication = requests.post(url4authentication, headers=headers4authentication)
token = resp4authentication.text

# For calling Translate API
#text = "happy time"
text = """
Everything seems to go smoothly, and I get a 200 response (which I gather means success), yet when I try to look at the text in the response, hundreds of lines of obscure html are printed out. After looking through a few hundred of the lines (which were, for the most part, listing the dozens of languages I chose NOT to translate my text into) I couldn't find any actually translated text. All of the examples that Microsoft has on their github use the outdated DataMarket website that Microsoft is in the process of discontinuing as the authorization link. Moreover, I couldn't find any examples of the API actually being used - they were all just authorization examples. Using the token with their 'Try it Out' example gives me the correct result (though as an xml file?), so this is definitely a python problem.

So, has anyone used this service before and mind shedding some light on how to interpret or unwrap this response?

Thank you!
"""
come = "en"
to = "fr"
# url4translate = 'https://api.microsofttranslator.com/v2/http.svc/Translate?appid=Bearer %s&text=%s&from=%s&to=%s' % (token, text, come, to)
# headers4translate = {'Accept': 'application/xml'}
# resp4translate = requests.get(url4translate, headers=headers4translate)
url4translate = 'https://api.microsofttranslator.com/v2/http.svc/Translate'
params = {'appid': 'Bearer '+token, 'text': text, 'from': come, 'to': to}
headers4translate = {'Accept': 'application/xml'}
resp4translate = requests.get(url4translate, params=params, headers=headers4translate)
print(resp4translate.text)

输出:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
Tout semble aller en douceur, et je reçois une réponse 200 (qui je suppose signifie succès), mais lorsque j’essaie de regarder le texte dans la réponse, des centaines de lignes html obscur sont imprimés. Après avoir regardé à travers quelques centaines des lignes (qui étaient, pour la plupart, répertoriant des dizaines de langues, en que j’ai choisi de ne pas traduire mon texte) je ne pouvais pas trouver n’importe quel texte en fait traduit. Tous les exemples que Microsoft a sur leur github utilisent le site DataMarket dépassé que Microsoft est en train d’interrompre le lien d’autorisation. En outre, je ne pouvais pas trouver des exemples de l’API effectivement utilisés - ils étaient tous exemples juste autorisation. En utilisant le jeton avec leur exemple « Essayer » me donne un résultat correct (même si, comme un fichier xml ?), donc c’est certainement un problème de python.

Ainsi, quiconque a utilisé ce service avant et l’esprit certains éclairant sur la façon d’interpréter ou de dérouler cette réponse ?

Merci !
</string>

希望对您有所帮助。