2017-06-30 50 views
0

我正在使用skype客户端进行bot应用程序。我使用的是语音到文本带有node.js的Skype语音识别API Bot Framework

有两种模式来处理音频讲话:提起enter link description here BY dandriscoll

  1. 客户记录一个小的音频文件(如WAV),并上传为附接到机器人
  2. 客户端发送的音频流,以机器人

大多数机器人框架通道支撑图案1中,虽然客户端支持变化。在这种情况下,您可以将WAV上传到Bing Speech API并返回转录结果。

支持模式2的唯一Bot Framework频道是Skype Calling。在这种情况下,您会收到一个音频流,并可以使用Bing Speech客户端库获取实时转录源。

这里要当我运行我接收在我的命令提示的响应上述演示用图案2实施例的代码

var restify = require('restify'); 
var builder = require('botbuilder'); 
var calling = require('botbuilder-calling'); 
var prompts = require('./prompts'); 
var speechService = require('./speech-service.js'); 

//========================================================= 
// Bot Setup 
//========================================================= 

// Setup Restify Server 
var server = restify.createServer(); 
server.listen(process.env.port || process.env.PORT || 3978, function() { 
    console.log('%s listening to %s', server.name, server.url); 
}); 

// Create chat bot 
var chatConnector = new builder.ChatConnector({ 
    appId: process.env.MICROSOFT_APP_ID, 
    appPassword: process.env.MICROSOFT_APP_PASSWORD 
}); 
var chatBot = new builder.UniversalBot(chatConnector); 
server.post('/api/messages', chatConnector.listen()); 

// Create calling bot 
var connector = new calling.CallConnector({ 
    callbackUrl: 'https://example.in/api/calls', 
    appId: process.env.MICROSOFT_APP_ID, 
    appPassword: process.env.MICROSOFT_APP_PASSWORD 
}); 
var bot = new calling.UniversalCallBot(connector); 
server.post('/api/calls', connector.listen()); 

//========================================================= 
// Chat Dialogs 
//========================================================= 
// Add root dialog 

bot.dialog('/', function (session) { 
    session.send('Headfitted Bot application... !'); 
    session.beginDialog('/record'); 
}); 

bot.dialog('/record', [ 
    function (session) { 
     session.send(prompts.record.intro); 
     calling.Prompts.record(session, prompts.record.prompt, { playBeep: true }); 
    }, 
    function (session, results) { 
     if (results.response) { 
      console.log(results.response.recordedAudio); 
      session.endDialog(prompts.record.result, results.response.lengthOfRecordingInSecs); 

     } else { 
      session.endDialog(prompts.canceled); 
     } 
    } 
]); 

{ recordedAudio: <Buffer 30 26 b2 75 8e 66 cf 11 a6 d9 00 aa 00 62 ce 6c 3d 13 00 00 00 00 00 00 06 00 00 00 01 02 a1 dc ab 8c 47 a9 cf 11 8e e4 00 c0 0c 20 53 65 68 00 00 00 ... >, 
lengthOfRecordingInSecs: 2.581 } 

现在我想用recordedAudio和通到speech to text API函数。 将是我recordedAudio

speechService.getTextFromAudioStream(stream) 
    .then(function (text) { 
     session.send(processText(text)); 
    }) 
    .catch(function (error) { 
     session.send('Oops! Something went wrong. Try again later.'); 
     console.error(error); 
    }); 

我做了谷歌搜索,BOT框架,但没有运气。

+0

有什么问题吗? –

+0

@PaulSturm问题是我如何可以将流媒体中的recordingAudio传递给speechService。 –

+0

花了一周的时间解决了这个问题后,我发现Bing Speech API只支持WAV/PCM。所以我已经开始将wma转换为wav文件,并将wav流传递给文本web api。使用ffmpeg。感谢https://github.com/Microsoft/BotBuilder-Samples/issues/52用户pcostantini发布 –

回答