9.3 Создание словарного запаса

Создать новый словарь или корпус легко, как указано в PocketSphinx. Сначала создайте простой текстовый файл с одним словом или фразой в строке. Вот корпус, который можно использовать для управления роботом с помощью голосовых команд. Мы будем хранить его в файле с именем nav_commands.txt в подкаталоге config пакета rbx1_speech. Чтобы просмотреть его содержимое, выполните команды:

$ roscd rbx1_speech/config 
$ more nav_commands.txt

Вы должны увидеть следующий список фраз (они будут отображаться в одном столбце на вашем экране):

Вы также можете перенести файл в ваш любимый редактор и добавить, удалить или изменить некоторые из этих слов или фраз, прежде чем переходить к следующему шагу. Когда вы вводите свои фразы, старайтесь не смешивать прописные и строчные буквы и не используйте знаки препинания. Кроме того, если хотите включить число, например 54, обозначьте его как «пятьдесят четыре».

Прежде чем мы сможем использовать этот корпус с PocketSphinx, нам нужно скомпилировать его в специальный словарь и файлы произношения. Это можно сделать с помощью онлайн-модели языковой модели CMU (lm), расположенной по адресу:

http://www.speech.cs.cmu.edu/tools/lmtool-new.html

Следуйте инструкциям по загрузке файла nav_commands.txt, нажмите кнопку «Compile Knowledge Base», затем загрузите файл с пометкой «COMPRESSED TARBALL», содержащий все файлы языковой модели. Извлеките эти файлы в подкаталог config из пакета rbx1_speech. Все файлы будут начинаться с одного и того же номера, например 3026.dic, 3026.lm и т. Д. Эти файлы определяют ваш словарный запас как языковую модель, понятную PocketSphinx. Вы можете переименовать все эти файлы во что-нибудь более запоминающееся, используя команду, подобную следующей (4-значный номер, вероятно, будет другим в вашем случае):

$ roscd rbx1_speech/config
$ rename -f 's/3026/nav_commands/' *

Далее, посмотрите на файл voice_nav_commands.launch, находящийся в подкаталоге rbx1_speech / launch. Это выглядит так:

<launch> <node name="recognizer" pkg="pocketsphinx" type="recognizer.py"

output="screen"> <param name="lm" value="$(find rbx1_speech)/config/nav_commands.lm"/>

<param name="dict" value="$(find rbx1_speech)/config/nav_commands.dic"/> </node>

</launch>

Как вы можете видеть, файл запуска запускает узелognizer.py из пакета pocketsphinx, и мы указываем параметры lm и dict на файлы nav_commands.lmandnav_commands.diccreatedinthestepsabove. Также обратите внимание, что параметр output = "screen" - это то, что позволяет нам видеть результаты распознавания в реальном времени в окне запуска.

Запустите этот файл и проверьте распознавание речи, контролируя тему /ognizer / output. Сначала нажмите Ctrl-C, чтобы завершить предыдущую демонстрацию RoboCup, если она все еще работает. Затем запустите команды:

$ roslaunch rbx1_speech voice_nav_commands.launch

И в другом терминале:

$ rostopic echo /recognizer/output

Попробуйте произнести несколько навигационных фраз, таких как «двигаться вперед», «замедлить» и «остановить». Вы должны увидеть, что ваши команды отражены в теме /ognizer / output.

Last updated