簡體   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