API распознавания речи Skype с помощью node.js Bot Framework

Я использую клиент Skype для приложения бота. Я использую преобразование речи в текст

Есть два шаблона для работы со звуковой речью: упоминание введите здесь описание ссылки BY dandriscoll

  1. клиент записывает небольшой аудиофайл (например, WAV) и загружает его как вложение в бот
  2. клиент отправляет боту аудиопоток

Большинство каналов Bot Framework поддерживают шаблон 1, хотя поддержка клиентов различается. В этой ситуации вы можете загрузить WAV в Bing Speech API, и он вернет записанный результат.

Единственный канал Bot Framework, поддерживающий шаблон 2, - это 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 }

Теперь я хотел использовать записанный аудио и перейти к функция 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, но не повезло.


person Mukesh S    schedule 30.06.2017    source источник
comment
Здесь есть вопрос?   -  person Paul Sturm    schedule 03.07.2017
comment
@PaulSturm Вопрос: как я могу передать записанный звук в SpeechService в потоке.   -  person Mukesh S    schedule 04.07.2017
comment
Потратив неделю на решение этой проблемы, я обнаружил, что Bing Speech API поддерживает только WAV / PCM. Итак, я начал преобразовывать wma в файл wav и передавать поток wav в речь в текстовый веб-API. используя ffmpeg. спасибо пользователю github.com/Microsoft/BotBuilder-Samples/issues/52 сообщение pcostantini   -  person Mukesh S    schedule 10.07.2017


Ответы (1)


Я считаю, что вам нужно отправлять аудио как Base64. По крайней мере, остальные API BING SPEECH используют аудио как base64. Вы можете протестировать их демоверсии браузера и понюхать сеть. Они отправляют что-то вроде ниже.

Запрос URL: https://api.mixpanel.com/track/?data=eyJldmVudCI6ICIkY3JlYXRlX2FsaWFzIiwicHJvcGVydGllcyI6IHsiJG9zIjogIk1hYyBPUyBYIiwiJGJyb3dzZXIiOiAiQ2hyb21lIiwiJHJlZmVycmVyIjogImh0dHBzOi8vYXp1cmUubWljcm9zb2Z0LmNvbS90ci10ci9zZXJ2aWNlcy9jb2duaXRpdmUtc2VydmljZXMvc3BlZWNoLyIsIiRyZWZlcnJpbmdfZG9tYWluIjogImF6dXJlLm1pY3Jvc29mdC5jb20iLCIkY3VycmVudF91cmwiOiAiaHR0cHM6Ly9henVyZS5taWNyb3NvZnQuY29tL3RyLXRyL3NlcnZpY2VzL2NvZ25pdGl2ZS1zZXJ2aWNlcy9zcGVlY2gvIiwiJGJyb3dzZXJfdmVyc2lvbiI6IDYyLCIkc2NyZWVuX2hlaWdodCI6IDEwNTAsIiRzY3JlZW5fd2lkdGgiOiAxNjgwLCJtcF9saWIiOiAid2ViIiwiJGxpYl92ZXJzaW9uIjogIjIuMTQuMCIsImRpc3RpbmN0X2lkIjogIjE1ZmYxZGY2YjIwYWZlLTA0MzVjYmVmNDA2N2IxLTE3M2Y2ZDU2LTFhZWFhMC0xNWZmMWRmNmIyMWQxMSIsIiRzZWFyY2hfZW5naW5lIjogImdvb2dsZSIsIiRpbml0aWFsX3JlZmVycmVyIjogImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20udHIvIiwiJGluaXRpYWxfcmVmZXJyaW5nX2RvbWFpbiI6ICJ3d3cuZ29vZ2xlLmNvbS50ciIsImFsaWFzIjogIjk1NTI3ZTI1LTA2M2MtNDE5ZS04NzkzLTNkYTNkMGVmNDQ4YSIsInRva2VuIjogIjFkOTJlM2FiZDE0YTJkNjVmNzQ4ZDEzMTRkZDI0Yjk5In19&ip=1&_=1511591715549

Просмотрите ссылку: Пример страницы Azure

person Gultekin    schedule 25.11.2017