javascript - IBM Watson JavaScript SDK for Speech-To-Text WebSocket 问题
问题描述
我正在编写一个 Vue.js Web 应用程序并尝试访问 Watson Speech-To-Text API。我在文档中找到了一个使用 JavaScript SDK (watson-speech) 的非常简单的实现。这是我正在使用的代码:
execute () {
var stream;
fetch('/api/speech-to-text/token').then(function(response) {
return response.text();
}).then(function (token) {
stream = WatsonSpeech.SpeechToText.recognizeFile({
token: token,
file: document.querySelector('#audiofile').files[0],
play: true, // play the audio out loud
outputElement: '#output', // CSS selector or DOM Element (optional)
}
});
stream.on('error', function(err) {
console.log(err);
});
}).catch(function(error) {
console.log(error);
});
}
有一个按钮,当单击时(文件上传后)运行此 execute() 函数。
当我在找到它的链接 ( https://watson-speech.mybluemix.net/file-upload.html ) 上运行它时,它工作得很好。我已将环境变量配置为使用我的 API 用户名和密码(并通过从另一个 Watson 存储库下载示例 React 项目来确认它们可以正常工作)。但是,当我尝试在自己的项目中这样做时,它不起作用。我收到以下错误:
Error during WebSocket handshake: Unexpected response code: 403
我不确定这是否是一个 CORS 问题,或者这是否不能在所有客户端完成或什么。是否需要安装 WebSocket?我原以为这一切都是由 Watson 函数处理的,所以我很茫然。任何帮助将不胜感激!
解决方案
发现您无法检索授权令牌客户端。您必须有某种服务器端代码来检索令牌,然后客户端才能使用它。Watson 也有一个 Node.js SDK,可用于此目的,并且可以轻松处理身份验证。
推荐阅读
- python - 如何使用 pymysql 保存 numpy 数组?
- r - R中的“order”函数无法正常使用重复值
- python - 查找多个客户端之间的所有常见范围查找
- node.js - 当项目目录在主机中时,是否可以执行 npm start ?
- android - CookieManager.getCookie() 始终返回 null(版本 <= API 28 (Pie))
- pandas - 如何使用旧数据框的 shape[] 从另一个数据框制作数据框
- javascript - 如何在 JS 的深层对象/数组中保留除“未定义”之外的所有值?
- laravel - Laravel Homestead 卡在运行 npm install
- swift - Swift:启用切片时 UIImage 的大小
- gradle - 是否有用于 jenkins 管道代码的 CPS 静态分析检查器