首页 > 解决方案 > 如何通过 JavaScript 使用浏览器录制声音?

问题描述

如果你调用这个请求(使用 bash),你会得到一个响应:

curl 'https://translate.google.com/_/TranslateWebserverUi/data/batchexecute?rpcids=MkEWBc&f.sid=5613576154274168367&bl=boq_translate-webserver_20210525.06_p0&hl=en&soc-app=1&soc-platform=1&soc-device=1&_reqid=1641564&rt=c' \
  -H 'authority: translate.google.com' \
  -H 'sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"' \
  -H $'x-goog-batchexecute-bgr: ' \
  -H 'x-same-domain: 1' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36' \
  -H 'content-type: application/x-www-form-urlencoded;charset=UTF-8' \
  -H 'accept: */*' \
  -H 'origin: https://translate.google.com' \
  -H 'x-client-data: ' \
  -H 'sec-fetch-site: same-origin' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-dest: empty' \
  -H 'referer: https://translate.google.com/' \
  -H 'accept-language: en-US,en;q=0.9,fa;q=0.8' \
  -H 'cookie: ' \
  --data-raw 'f.req=%5B%5B%5B%22MkEWBc%22%2C%22%5B%5B%5C%22%D8%AA%D8%B3%D8%AA%5C%22%2C%5C%22fa%5C%22%2C%5C%22en%5C%22%2Ctrue%5D%2C%5B3%5D%5D%22%2Cnull%2C%22generic%22%5D%5D%5D&at=AD08yZm2xeWxbruXnnzNXfpl0lR9%3A1622098959780&' \
  --compressed

什么情况?该请求是由google.translator(网络)提出的。此外,它是一个语音到文本的 API。换句话说,我所做的只是点击左下角的麦克风图标并说:“测试”(通过我的声音)。然后将其发送到服务器并在文本区域中看到“测试”字(作为文本)。

我的问题是,JavaScript 如何处理以下部分(我猜这是我的声音):

f.req=%5B%5B%5B%22MkEWBc%22%2C%22%5B%5B%5C%22%D8%AA%D8%B3%D8%AA%5C%22%2C%5C%22fa%5C%22%2C%5C%22en%5C%22%2Ctrue%5D%2C%5B3%5D%5D%22%2Cnull%2C%22generic%22%5D%5D%5D&at=AD08yZm2xeWxbruXnnzNXfpl0lR9%3A1622098959780&

这是什么?是声音转换成文字吗?它是如何产生的?

标签: javascriptrequest

解决方案


Google 翻译很可能使用Web Speech API将语音转换为文本。这个 JS API 允许您在不重新发明轮子的情况下生成结果,正如您在Google 提供的教程中看到的那样。

您发现的请求已编码。使用 urldecode 函数解码后,它看起来像这样:

f.req=[[["MkEWBc","[[\"تست\",\"fa\",\"en\",true],[3]]",null,"generic"]]]&at=AD08yZm2xeWxbruXnnzNXfpl0lR9:1622098959780&

正如您所看到的,它包含一些标识符以及您的输入(تست-> test)。


推荐阅读