首页 > 解决方案 > 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 函数处理的,所以我很茫然。任何帮助将不胜感激!

标签: javascriptvue.jswebsocketspeech-to-textibm-watson

解决方案


发现您无法检索授权令牌客户端。您必须有某种服务器端代码来检索令牌,然后客户端才能使用它。Watson 也有一个 Node.js SDK,可用于此目的,并且可以轻松处理身份验证。


推荐阅读