javascript - 如何通过 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&
这是什么?是声音转换成文字吗?它是如何产生的?
解决方案
Google 翻译很可能使用Web Speech API将语音转换为文本。这个 JS API 允许您在不重新发明轮子的情况下生成结果,正如您在Google 提供的教程中看到的那样。
您发现的请求已编码。使用 urldecode 函数解码后,它看起来像这样:
f.req=[[["MkEWBc","[[\"تست\",\"fa\",\"en\",true],[3]]",null,"generic"]]]&at=AD08yZm2xeWxbruXnnzNXfpl0lR9:1622098959780&
正如您所看到的,它包含一些标识符以及您的输入(تست
-> test
)。
推荐阅读
- javascript - 加载 ecmascript 模块(.mjs 文件)作为 nodejs cli 的主要入口
- html - 我无法移动图像,我该怎么办?
- purescript - purescript 卤素:将 IProp 附加到 HTML
- c# - 有没有办法将类的实际实例作为参数传递?
- java - 如何正确使用 loadtest4j
- web-scraping - 如何使用scrapy刮掉隐藏在下拉菜单中的链接?
- php - Laravel if 语句用于各种编号项目以更改样式
- javascript - 如何在 JavaScript 中添加 HTML 标签
- jenkins - Jenkins参数化构建 - 将数据发布到url而不是包含在查询参数中?
- java - 如何使用 qaf Web 服务请求调用管理具有多个请求的 cookie?