2016-02-26 2 views
4

В настоящее время я работаю над инструментом, позволяющим читать все мои уведомления благодаря подключению к различным API.Распознавание речи, nodeJS

Он отлично работает, но теперь я хотел бы поместить некоторые вокальные команды для выполнения некоторых действий.

Как и когда программное обеспечение говорит «Одна почта от Боба», я хотел бы сказать «Прочтите» или «Архивировать».

Мое программное обеспечение работает через сервер узлов, в настоящее время у меня нет реализации браузера, но это может быть план.

Каков наилучший способ в узле JS включить речь в текст?

Я видел много потоков на нем, но в основном это браузер и, если возможно, я хотел бы избежать этого в начале. Является ли это возможным?

Другая проблема заключается в том, что для некоторых программ требуется вход wav-файла. У меня нет файла, я просто хочу, чтобы мое программное обеспечение всегда слушало то, что я говорю, чтобы реагировать, когда я говорю команду.

У вас есть информация о том, как я могу это сделать?

Приветствия

+0

Я видел некоторые реализации, которые подключаются к сервисам google для этого, я предполагаю, что это то, о чем вы говорите. Я сомневаюсь, что на некоторое время у вас будет собственный парсер речи. – Phix

ответ

3

Чтобы получить звуковые данные в приложение, вы можете попробовать модуль, как microphone, который я не используется, он выглядит многообещающим. Это может быть способом избежать использования браузера для аудиовхода.

Для осуществления реального распознавания речи вы можете воспользоваться службой Clouds разработчика IBM Watson Speech to Text. Эта услуга поддерживает websocket interface, так что вы можете иметь полный дуплексный сервис, передавать аудиоданные в облако и возвращать полученную транскрипцию. Возможно, вы захотите рассмотреть возможность применения формы onset detection, чтобы избежать передачи большого количества (относительной) тишины для службы - таким образом, вы можете оставаться в пределах бесплатного уровня.

Существует также услуга «текст-речь», но похоже, что у вас есть решение уже для этой части вашего инструмента.

Раскрытие информации: Я являюсь евангелистом IBM Watson.

3

Чтобы распознать несколько команд, не передавая их на сервер, вы можете использовать модуль node-pocketsphinx. Available в НПМ.

код распознавать несколько команд в непрерывном потоке должен выглядеть следующим образом:

var fs = require('fs'); 

var ps = require('pocketsphinx').ps; 

modeldir = "../../pocketsphinx/model/en-us/" 

var config = new ps.Decoder.defaultConfig(); 
config.setString("-hmm", modeldir + "en-us"); 
config.setString("-dict", modeldir + "cmudict-en-us.dict"); 
config.setString("-kws", "keyword list"); 
var decoder = new ps.Decoder(config); 

fs.readFile("../../pocketsphinx/test/data/goforward.raw", function(err, data) { 
    if (err) throw err; 
    decoder.startUtt(); 
    decoder.processRaw(data, false, false); 
    decoder.endUtt(); 
    console.log(decoder.hyp()) 
}); 

Вместо readFile вы просто прочитать данные с микрофона и передать его в распознаватель. Список ключевых слов для обнаружения должен выглядеть следующим образом:

read it /1e-20/ 
archive it /1e-20/ 

Для получения более подробной информации о накрапывал pocketsphinx см Keyword Spotting in Speech и Recognizing multiple keywords using PocketSphinx

1

Оба ответы здесь уже хорошо, но то, что я думаю, что вы ищете для является Sonus. Он заботится о кодировании аудио и потоковой передачи для вас. Он всегда прослушивает оффлайн для настраиваемого горячего слова (например, Siri или Alexa). Вы также можете инициировать прослушивание программным способом.В сочетании с модулем, как say, вы можете позволить вашему примеру, делая что-то вроде:

say.speak('One mail from Bob', function(err) { 
    Sonus.trigger(sonus, 1) //start listening 
}); 

Вы также можете использовать различные HOTWords для обработки последующих признанных речей по-другому. Например:
"Уведомления. и "Отправить сообщение. Как вы сегодня"

Бросьте это на Pi или CHIP с микрофоном на вашем столе, и у вас есть личный помощник, который читает ваши уведомления и реагирует на команды.

Простой пример:
https://twitter.com/_evnc/status/811290460174041090

Что-то немного сложнее:
https://youtu.be/pm0F_WNoe9k?t=20s

Полная документация:
https://github.com/evancohen/sonus/blob/master/docs/API.md

Отказ от ответственности: Это мой проект :)

Смежные вопросы