大于〜7mb的文件将引发“未收到响应”。IBM Watson语音到文本异步createJob调用

本·卡斯曼

我正在进行服务器端语音到文本转录的工作,并且能够获得适用于较小文件的后期端点,但是任何大于〜7Mb的值都会引发错误,对我来说意义不大。

我知道此代码适用于小型文件,并且回调URL已正确注册。我尝试过将setReadout()函数中的“ visibleTranscriptStream”创建项抛出,只是为了确保这不是完整文件不传递给createJob调用的问题。我还尝试过仅将req.file.buffer用作音频参数的参数。我也知道这不是文件编码不正确的问题,因为我使用了相同的音频文件,慢慢增加文件的长度和大小,直到引发此错误为止,直到我碰到大约7.2Mb,或.wav 16位编码文件中约3分钟的音频。

我还尝试使用fs.createFileStream('./ local_test.wav')作为参数并返回相同的错误,尽管当我尝试该错误时,错误中的_requestBodyLength字段为10485760,而_requestBodyBuffers是对象数组。我意识到这10485760与maxBodyLength相同,但是API的文档说:“您可以通过请求传递最大1 GB的音频和最小100字节的音频”,测试音频再次为〜7.2 Mb。

       username: process.env.wastonUsername,
       password: process.env.watsonPassword,
       url: 'https://stream.watsonplatform.net/speech-to-text/api/'
     });

   const storage = multer.memoryStorage();
   const upload = multer({ storage: storage , limit: {fields: 1, fileSize: 209715200, files:1, parts:2}});

   upload.single('track')(req,res, (err) => {
       req.setTimeout(0);
       if (err) {
           console.log(err);
           return res.status(400).json({ message: err })
       }

       const registerCallbackParams = {
           callback_url: <my_callback_url>,
           user_secret: "Test"
       };

       const readableTranscriptStream = new Readable();
       readableTranscriptStream.push(req.file.buffer);
       readableTranscriptStream.push(null);

       const createJobParams = {
           audio: readableTranscriptStream,
           callback_url: <my_callback_url>,
           content_type: req.file.mimetype,
           events:"recognitions.completed_with_results",
           inactivity_timeout: -1
         };

       speechToText.createJob(createJobParams)
       .then(recognitionJob => {
           console.log(recognitionJob);
       })
       .catch(err => {
           console.log('error:', err);
       }); 
   }) 

我回来的错误是:

error:{  
   Error:   Response not received. Body of error is HTTP ClientRequest object 
at formatError (/app/node_modules/ibm-cloud-sdk-core/lib/requestwrapper.js:111:17   ) 
at /app/node_modules/ibm-cloud-sdk-core/lib/requestwrapper.js:259:19   at process._tickCallback (internal/process/next_tick.js:68:7   ) 
message:'Response not received. Body of error is HTTP ClientRequest object',
   body:Writable   {  
      _writableState:WritableState      {  
         objectMode:false,
         highWaterMark:16384,
         finalCalled:false,
         needDrain:false,
         ending:false,
         ended:false,
         finished:false,
         destroyed:false,
         decodeStrings:true,
         defaultEncoding:'utf8',
         length:0,
         writing:false,
         corked:0,
         sync:true,
         bufferProcessing:false,
         onwrite:[  
            Function:bound onwrite
         ],
         writecb:null,
         writelen:0,
         bufferedRequest:null,
         lastBufferedRequest:null,
         pendingcb:0,
         prefinished:false,
         errorEmitted:false,
         emitClose:true,
         bufferedRequestCount:0,
         corkedRequestsFree:[  
            Object
         ]
      },
      writable:true,
      _events:[  
         Object:null         prototype
      ]      {  
         response:[  
            Function:handleResponse
         ],
         error:[  
            Function:handleRequestError
         ]
      },
      _eventsCount:2,
      _maxListeners:undefined,
      _options:{  
         maxRedirects:21,
         maxBodyLength:10485760,
         protocol:'https:',
         path:'/speech-to-text/api/v1/recognitions?callback_url=<my_callback_url>&events=recognitions.completed_with_results&inactivity_timeout=-1',
         method:'post',
         headers:[  
            Object
         ],
         agent:[  
            Agent
         ],
         auth:undefined,
         hostname:'stream.watsonplatform.net',
         port:null,
         nativeProtocols:[  
            Object
         ],
         pathname:'/speech-to-text/api/v1/recognitions',
         search:'?callback_url=<my_callback_url>&events=recognitions.completed_with_results&inactivity_timeout=-1'
      },
      _ended:false,
      _ending:true,
      _redirectCount:0,
      _redirects:[  

      ],
      _requestBodyLength:0,
      _requestBodyBuffers:[  

      ],
      _onNativeResponse:[  
         Function
      ],
      _currentRequest:ClientRequest      {  
         _events:[  
            Object
         ],
         _eventsCount:6,
         _maxListeners:undefined,
         output:[  

         ],
         outputEncodings:[  

         ],
         outputCallbacks:[  

         ],
         outputSize:0,
         writable:true,
         _last:true,
         chunkedEncoding:false,
         shouldKeepAlive:false,
         useChunkedEncodingByDefault:true,
         sendDate:false,
         _removedConnection:false,
         _removedContLen:false,
         _removedTE:false,
         _contentLength:null,
         _hasBody:true,
         _trailer:'',
         finished:false,
         _headerSent:false,
         socket:null,
         connection:null,
         _header:null,
         _onPendingData:[  
            Function:noopPendingOutput
         ],
         agent:[  
            Agent
         ],
         socketPath:undefined,
         timeout:undefined,
         method:'POST',
         path:'/speech-to-text/api/v1/recognitions?callback_url=<my_callback_url>&events=recognitions.completed_with_results&inactivity_timeout=-1',
         _ended:false,
         res:null,
         aborted:1558070725953,
         timeoutCb:null,
         upgradeOrConnect:false,
         parser:null,
         maxHeadersCount:null,
         _redirectable:[  
            Circular
         ],
         [  
            Symbol(isCorked)
         ]:false,
         [  
            Symbol(outHeadersKey)
         ]:[  
            Object
         ]
      },
      _currentUrl:'https://stream.watsonplatform.net/speech-to-text/api/v1/recognitions?callback_url=<my_callback_url>&events=recognitions.completed_with_results&inactivity_timeout=-1'
   }
}
宜昌

maxContentLength: Infinity在实例化SpeechToText时尝试添加为选项

const speechToText = new SpeechToTextV1({
  username: 'user',
  password: 'pass',
  version: '2019-01-01',
  maxContentLength: Infinity,
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用WebSockets的IBM Watson语音到文本

将WAV录制到IBM Watson语音到文本

语音到文本Ibm Watson C#的语音,长音频超过100 MB

Watson NarrowBand语音到文本不接受ogg文件

如何检测语音到文本中的句子检测是否已完成(Unity IBM Watson sdk)?

IBM Watson语音到文本发送麦克风数据关闭了连接

使用ibm-watson服务C#进行语音到文本

IBM Watson语音到文本Python,“ DetailedResponse”对象没有属性“ getResult”

IBM Watson语音到文本仅使用Java SDK返回第一个单词

使用ibm watson文本到语音服务处理多个查询

Twilio的IBM Watson语音到文本插件影响一个电话号码

使用 IBM Watson 的语音转文本会导致在识别关键字时多次调用方法

IBM Watson IAM令牌适合所有服务还是特定于每种服务(例如语音到文本)?

编辑python中的wav文件头以与QSound / pyqt5一起使用(Watson文本到语音TTS)

IBM Watson语音对文本的单词置信度差异

如何下载在 Watson Studio 中创建的文本转语音文件

Shiny Watson 实时文本到语音

IBM Watson语音转文本:无法使用Swift SDK转录文本

IBM Watson语音对带有IAM API密钥的WebSocket授权文本

使用IBM Watson语音文本NPM模块难以注册回调URL

如何使用curl访问IBM语音到文本api?

谷歌云语音到文本长音频响应

如何将 ibm watson 语音中的扬声器标签更改为 android 中的文本 api?

语音到文本的大型音频文件[Microsoft Speech API]

使用Microsoft认知WAV文件的Android语音到文本

Watson 语音转文本

Watson 语音到文本:无效凭据错误(代码:401)

语音到文本应用程序将旧文本替换为新文本

如何为IBM Watson的语音转文本服务Web套接字端点找到必要的访问Web令牌?