Microsoft bot 框架 v4 语音服务

Microsoft bot framework v4 speech service

我开发了Microsoft bot framework node js bot并连接到Facebook。当我尝试使用 Facebook 麦克风向机器人添加语音服务时,出现以下错误。

我已经完成 link 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;
    }

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

期待你的response/suggestions。

您可以通过在调用 fs.createReadStream 时将 fd 属性 作为选项传递来控制从创建的流中读取的路径值(您可以阅读更多相关信息here)。将其设置为 0 告诉系统不要在流路径前添加本地路径。请注意,传入 fd 时不会调用 open 事件。

经测试,这解锁了我的代码。由于与您相似的预置路径(例如 "c:\...\...\https:\someSite.com\someFile"),我收到了相同的错误。

let readStream = fs.createReadStream(inputStream, {
  fd: 0
});

将您的代码调整为此应该适合您。

request(filename).pipe(fs.createWriteStream('userInputVoice.wav', {
  fd: 0
}))

希望得到帮助!