Краткое изложение того, что я пытался сделать и что на самом деле делает.
В моем проекте у меня есть два простых узла: один для прослушивания и публикации, а другой для выступления и подписки. Я назвал их слушающим узлом и говорящим узлом соответственно.
Задача, которую я хотел выполнить, была довольно простой: я бы попросил пользователя сказать «запомни меня», что будет распознано как ключевое слово и опубликовано в voiceCommandCallback
метод в говорящем узле, чтобы мой робот мог сказать «Хорошо, пожалуйста, произнеси свое имя» . Затем, вернувшись к узлу прослушивания, помимо публикации этой ключевой фразы, он также вызовет метод recognize_from_mic_with_dict()
, который, как вы можете догадаться, будет запускаться с использованием словаря имен.
Этот метод recognize_from_mic_with_dict()
будет прослушивать имя и пытаться опубликовать это имя в namesCallback()
в узле прослушивания, и именно здесь я проверяю, было ли опубликованное имя фактическим или это была просто тарабарщина, и в этом случае я бы любезно спросил пользователь должен повторить свое имя и еще раз подписаться на recognize_from_mic_with_dict()
, чтобы он мог слушать еще раз.
Это звучит сложнее, чем, вероятно, должно быть, но это единственный способ, которым я мог придумать, добиться такого «переключения режимов». Проблема в том, что если он услышит тарабарщину, он скажет: «Извините, я не совсем слышал это. Пожалуйста, повторите это!» и я хотел бы знать, есть ли способ заставить слушающий узел игнорировать все, что говорит робот, потому что он пытается распознавать имена из своего собственного предложения.