Microsoft Bot Framework v4语音服务

时间:2019-11-18 11:06:24

标签: botframework speech-to-text azure-bot-service

我已经开发了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;
    }

请提出如何处理此问题的建议。提前致谢。

期待您的回复/建议。

1 个答案:

答案 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
}))

希望有帮助!