Express 大于~7mb的文件抛出“;未收到答复。”;关于IBM Watson语音到文本异步createJob调用

Express 大于~7mb的文件抛出“;未收到答复。”;关于IBM Watson语音到文本异步createJob调用,express,asynchronous,filestream,ibm-watson,speech-to-text,Express,Asynchronous,Filestream,Ibm Watson,Speech To Text,我正在进行服务器端语音到文本的转录,并且我能够得到一个用于较小文件的post端点,但是任何大于~7Mb的文件都会抛出一个对我来说没有多大意义的错误 我知道这段代码适用于小文件,并且回调URL注册正确。我尝试在setTimeout()函数中抛出“readableTranscriptStream”创建,只是为了确保没有将完整文件传递给createJob调用。我还尝试将req.file.buffer作为音频参数的参数传递。我也知道这不是文件编码不正确的问题,因为我使用的是同一个音频文件,慢慢增加文件的

我正在进行服务器端语音到文本的转录,并且我能够得到一个用于较小文件的post端点,但是任何大于~7Mb的文件都会抛出一个对我来说没有多大意义的错误

我知道这段代码适用于小文件,并且回调URL注册正确。我尝试在setTimeout()函数中抛出“readableTranscriptStream”创建,只是为了确保没有将完整文件传递给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);
       }); 
   }) 
username:process.env.wastonUsername,
密码:process.env.watsonPassword,
网址:'https://stream.watsonplatform.net/speech-to-text/api/'
});
const storage=multer.memoryStorage();
const upload=multer({存储:存储,限制:{字段:1,文件大小:209715200,文件:1,部分:2}});
上传。单轨('track')(请求、回复、(错误)=>{
请求设置超时(0);
如果(错误){
控制台日志(err);
返回res.status(400).json({message:err})
}
常量registerCallbackParams={
回调url:,
用户机密:“测试”
};
const readableTranscriptStream=new Readable();
readableTranscriptStream.push(req.file.buffer);
readableTranscriptStream.push(空);
常量createJobParams={
音频:readableTranscriptStream,
回调url:,
内容类型:req.file.mimetype,
事件:“识别。完成了带有结果的识别”,
不活动\u超时:-1
};
speechToText.createJob(createJobParams)
。然后(识别作业=>{
console.log(识别作业);
})
.catch(错误=>{
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'
   }
}
错误:{
错误:未收到响应。错误主体是HTTP ClientRequest对象
格式错误(/app/node_modules/ibmcloudsdk 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)
消息:'未收到响应。错误主体为HTTP ClientRequest对象',
正文:可写{
_可写状态:可写状态{
objectMode:false,
高水印:16384,
最终结论:错误,
李安:错,
结尾:错,
结束:错,
完成:假,
销毁:错误,
是的,
defaultEncoding:'utf8',
长度:0,
写作:错,
软木塞:0,
是的,
缓冲处理:false,
onwrite:[
函数:绑定到写
],
writeb:null,
writelen:0,
bufferedRequest:null,
lastBufferedRequest:null,
待定CB:0,
预完成:false,
错误:错误,
是的,
bufferedRequestCount:0,
软木要求自由:[
对象
]
},
可写:对,
_活动:[
对象:空原型
]      {  
答复:[
功能:HandlerResponse
],
错误:[
功能:handleRequestError
]
},
_事件提示:2,
_maxListeners:未定义,
_选项:{
maxRedirects:21,
maxBodyLength:10485760,
协议:'https:',
路径:'/speech to text/api/v1/recognitions?回调\u url=&events=recognitions。已完成\u,结果为\u不活动\u超时=-1',
方法:'post',
标题:[
对象
],
代理人:[
代理人
],
作者:未定义,
主机名:'stream.watsonplatform.net',
端口:null,
本机协议:[
对象
],
路径名:'/speech to text/api/v1/recognitions',
搜索:“?回调\u url=&events=识别。已完成\u,结果为\u非活动\u超时=-1”
},
_结束:错,
_结尾:对,
_重定向计数:0,
_重定向:[
],
_requestBodyLength:0,
_requestBodyBuffers:[
],
_onNativeResponse:[
作用
],
_当前请求:ClientRequest{
_活动:[
对象
],
_活动地点:6,
_maxListeners:未定义,
输出:[
],
输出编码:[
],
outputCallbacks:[
],
输出大小:0,
可写:对,
_最后:是的,
错误:错误,
应该保持生命:错,
useChunkedEncodingByDefault:true,
发送日期:false,
_removedConnection:false,
_removedContLen:错误,
_removedTE:错,
_contentLength:null,
_哈斯博迪:是的,
_预告片:'',
完成:假,
_海德森:错,
套接字:null,
连接:空,
_标题:null,
_待决数据:[
功能:无外观输出
],
A.
const speechToText = new SpeechToTextV1({
  username: 'user',
  password: 'pass',
  version: '2019-01-01',
  maxContentLength: Infinity,
});