问题是我使用的是v1和最新的@ 0.10.2。它完美地工作了6个月(甚至v1beta),直到昨天它只是随机(并且默默地!)停止工作。我的意思是一个streamingRecognize的调用可能会很好并且识别开始,但是然后第二次或第三次调用streamingRecognize只是没有收到任何输入(我正在让你流式传输以减慢错误)。使用相同的代码!
即使在认可开始时,质量也很低。通常导致完全错误的结果。
我想,从Beta发布V1后问题就开始了,但我不确定。
环境详情
OS: amazon linux 4.4.44-39.55.amzn1.x86_64
Node.js version: v7.2.1
npm version: 3.10.10
using google-cloud/speech@0.10.2
代码:
var Speech = require('@google-cloud/speech')({
credentials: require(_base + '/google_cloud_credential.json')
});
self.recognizeStream = Speech.streamingRecognize({
config: {
encoding: 'MULAW',
sampleRateHertz: 8000,
languageCode: "ru-RU",
},
singleUtterance: false,
interimResults: true
});
self.iStream.pipe(self.recognizeStream)
.on('error', function(err) {
logger.error('google-speech error:', err);
self.restartRecognizing(); //GOOGLE BUG: randomly crashes https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1894
})
.on('end', function(err) {
logger.trace('google-speech end:', err);
})
.on('close', function(err) {
logger.error('google-speech close: ', err);
self.restartRecognizing(); //GOOGLE BUG: randomly crashes https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1894
})
.on('data', function(data) {
//logger.warn(data);
require('tracer').setLevel('info');
if(data.results && data.results[0] && data.results[0].alternatives)
logger.warn("isFinal: %s, conf: %s, stab: %s, trans: %s, delay=%s", data.results[0].isFinal, data.results[0].alternatives[0].confidence, data.results[0].stability, data.results[0].alternatives[0].transcript, Number(self.thisDate-self.prevDate));
if(!self.isListeningEmitted && data && data.results && data.results[0] && !data.results[0].isFinal)
{
self.isListeningEmitted = true;
self.emit('started_hearing_speech');
}
if(data && data.results && data.results[0] && data.results[0].alternatives && !data.results[0].isFinal)
{
self.thisDate = Date.now();
if(!self.prevDate)
self.prevDate = self.thisDate;
logger.debug("isFinal: %s, conf: %s, stab: %s, trans: %s, delay=%s", data.results[0].isFinal, data.results[0].alternatives[0].confidence, data.results[0].stability, data.results[0].alternatives[0].transcript, Number(self.thisDate-self.prevDate));
self.prevDate = self.thisDate;
if(self.timer)
clearTimeout(self.timer);
if(!self.isFired)
self.timer = setTimeout(self.onRecognizedText.bind(self), 800, data.results[0].alternatives[0].transcript);
}
});
我的Google云端控制台中也存在很多错误: 30 days
也发布在这里:https://github.com/GoogleCloudPlatform/google-cloud-node/issues/2541