我已经开发了Microsoft bot框架节点js bot并连接到Facebook。当我尝试使用Facebook mic向Bot添加语音服务时,出现以下错误。
我已经通过链接sample code,但是通过FB麦克风进行语音输入时出现错误。
错误:ENOENT:没有此类文件或目录,请打开'D:\ home \ site \ wwwroot \ https:\ cdn.fbsbx.com \'
下面是代码片段,函数“ fs.createReadStream()”产生错误:
async function openPushStream(filename) {
// create the push stream we need for the speech sdk.
console.log('---from open push stream funcion ----',filename);
var pushStream = sdk.AudioInputStream.createPushStream();
// open the file and push it to the push stream.
request(filename).pipe(fs.createWriteStream('userInputVoice.wav'))
fs.createReadStream(filename).on('data', function(arrayBuffer) {
pushStream.write(arrayBuffer.buffer);
}).on('end', function() {
pushStream.close();
});
var audioConfig = sdk.AudioConfig.fromStreamInput(pushStream);
var speechConfig = sdk.SpeechConfig.fromSubscription(subscriptionKey, serviceRegion);
// Setting the recognition language to English.
speechConfig.speechRecognitionLanguage = "en-US";
// Create the speech recognizer.
var recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);
recognizer.recognizeOnceAsync(
function (result) {
console.log(result);
recognizer.close();
recognizer = undefined;
return result;
},
function (err) {
console.trace("err - " + err);
recognizer.close();
recognizer = undefined;
});
return null;
}
请提出如何处理此问题的建议。提前致谢。
期待您的回复/建议。
答案 0 :(得分:0)
调用fd
时,可以通过传递fs.createReadStream
属性作为选项来控制从创建的流中读取的路径值(您可以详细了解here) 。将其设置为0
会告诉系统不要在流路径之前添加本地路径。请注意,传入open
时不会调用fd
事件。
经过测试,这将阻止我的代码。由于与您的前置路径相似,我收到了相同的错误(例如“ c:\ ... \ ... \ https:\ someSite.com \ someFile”)。
let readStream = fs.createReadStream(inputStream, {
fd: 0
});
将代码调整为该应该对您有用。
request(filename).pipe(fs.createWriteStream('userInputVoice.wav', {
fd: 0
}))
希望有帮助!