🤔voice_recognizer_pocketsphinx
Назначение: Пакет voice_recognizer_pocketsphinx
занимается распознаванием команд из потокового аудио сигнала, публикуемого в топик /robohead_controller/respeaker_driver/audio/main
пакетом respeaker_driver.
В качестве внутреннего движка распознавания речи используется pocketsphinx.
Содержание пакета
voice_recognizer_pocketsphinx/
├── CMakeLists.txt
├── package.xml
├── launch/
│ └── cmds_recognizer.launch
│ └── kws_recognizer.launch
│ └── voice_recognizer_pocketsphinx.launch
├── config/
│ └── dictionary.dict
│ └── dictionary.dict.accent
│ └── dictionary.txt
│ └── gram.txt
│ └── gram.txt.fsg
│ └── kwslist.txt
│ └── voice_recognizer_pocketsphinx_cmds.yaml
│ └── voice_recognizer_pocketsphinx_kws.yaml
├── scripts/
│ └── cmds_recognizer.py
│ └── kws_recognizer.py
└── srv/
└── IsWork.srv
Запуск пакета
Пакет
voice_recognizer_pocketsphinxr
запускается автоматически при старте устройства.Запуск инициируется через launch-файл
robohead_controller_py.launch
из пакетаrobohead_controller
.
Основные возможности
Пакет voice_recognizer_pocketsphinx
обеспечивает два режима распознавания на основе движка Pocketsphinx:
Распознование ключевых слов (KWS — Keyword Spotting)
Топик:
/robohead_controller/voice_recognizer_pocketsphinx/kws_recognizer/keywords
Отслеживает ключевые слова из файла
config/kwslist.txt
.Публикует распознаный текст.
Подробнее про смену ключевой фразы: ->
Распознавание команд (CMDS — Command Spotting)
Топик:
/robohead_controller/voice_recognizer_pocketsphinx/cmds_recognizer/commands
Использует грамматику FSG из
config/gram.txt.fsg
для распознавания команд («Поздоровайся», «Покажи уши» и т.д.).Публикует распознанную команду.
Динамическая настройка словаря и грамматики
Поддерживает возможность обновления файла
dictionary.txt
иdictionary.dict.accent
для добавления новых слов и команд.Инструкция по генерации: Настройка собственных команд и ключевых слов
Управление состоянием работы
Сервисы:
/robohead_controller/voice_recognizer_pocketsphinx/kws_recognizer/IsWork
/robohead_controller/voice_recognizer_pocketsphinx/cmds_recognizer/IsWork
Пример использования:
rosservice call /robohead_controller/voice_recognizer_pocketsphinx/cmds_recognizer/IsWork "SetStatus: 0"
SetStatus - режим распознавания: 0 - остановить распознавание, 1 - возобновить распознавание. При передаче любого отличного от 0 и 1 значения вызов просто игнорируется
Возвращаемое значение: предыдущий статус распознавания (для получения текущего статуса распознавания без его изменения просто вызовите сервис с любым отличным от 0 и 1 значением)
Режим отладки
В режиме отладки пакет voice_recognizer_pocketsphinx
запускается изолированно (отдельно) для тестирования функций, без участия других компонентов системы.
Шаг 1. Остановка всех запущенных пакетов
Остановите фоновый Linux-сервис:
sudo systemctl stop robohead.service
Шаг 2. Запуск пакета вручную
Для того чтобы пакет voice_recognizer_pocketsphinx
смог получать голосовую информацию необходимо сначала запустить пакет respeaker_driver
:
roslaunch respeaker_driver respeaker_driver.launch
Затем в новом терминале запустите пакет voice_recognizer_pocketsphinx
через launch-файл:
roslaunch voice_recognizer_pocketsphinx voice_recognizer_pocketsphinx.launch
Шаг 3. Особенности работы в режиме отладки
Пространство имен: топики и сервисы пакета не имеет приставки
/robohead_controller/
. Используется/voice_recognizer_pocketsphinx/...
вместо/robohead_controller/voice_recognizer_pocketsphinx/...
Файл конфигурации: настройки берутся из
voice_recognizer_pocketsphinx/config/voice_recognizer_pocketsphinx... .yaml
вместоrobohead_controller/config/voice_recognizer_pocketsphinx/voice_recognizer_pocketsphinx... .yaml
Шаг 4. Возможности тестирования
Распознование ключевых слов (KWS — Keyword Spotting)
Ключевое слово по умолчанию "Слушай, Робот!"
Топик:
/voice_recognizer_pocketsphinx/kws_recognizer/keywords
Пример:
# Запустите в отдельном терминале
rostopic echo /voice_recognizer_pocketsphinx/kws_recognizer/keywords
Распознавание команд (CMDS — Command Spotting)
Распознавание команд происходит исходя из словаря
voice_recognizer_pocketsphinx/config/dictionary.txt
. Подробнее про добавление новых слов и команд: [->]
Топик:
/voice_recognizer_pocketsphinx/cmds_recognizer/commands
Пример:
# Запустите в отдельном терминале
rostopic echo /voice_recognizer_pocketsphinx/cmds_recognizer/commands
Расшифровка полученных данных
Символы кириллицы обычно приходят в формате unicode escape sequence. Для отладки и прочтения используйте любой онлайн-конвертер:
https://r12a.github.io/app-conversion/
https://dencode.com/ru/string/unicode-escape

Last updated