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
}))
希望得到帮助!
我开发了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
}))
希望得到帮助!