繁体   English   中英

带有node.js Bot框架的Skype语音识别API

[英]Skype Speech Recognition API with node.js Bot Framework

我正在将Skype客户端用于机器人应用程序。 我正在使用语音转文字

有两种处理语音的模式:提及在此处输入链接描述 BY dandriscoll

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

大多数Bot Framework渠道均支持模式1,尽管客户端支持有所不同。 在这种情况下,您可以将WAV上传到Bing Speech API,它将返回转录的结果。

支持模式2的唯一Bot Framework渠道是Skype呼叫。 在这种情况下,您会收到音频流,并可以使用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并将语音传递到文本API函数。 将是我录制的音频

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);
    });

我没有在Google和Bot Framework上搜索,但是没有运气。

我认为您需要将音频作为Base64发送。 至少BING SPEECH的其余api使用音频作为base64。 您可以测试他们的浏览器演示并嗅探网络。 他们发送如下内容。

请求网址: https : //api.mixpanel.com/track/?data=&ip=1& _ =1511591715549

签出链接: Azure示例页面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM