respeaker_driver
Last updated
Last updated
В Робо-Голове используется - это сборка микрофонов (далее - микрофон), имеющая следующие возможности:
фильтровать шумы входного сигнала
отсекать звуки, проигрываемые устройством
определять направление, откуда идет звук
Бонус: управлять светодиодами на плате
Для взаимодействия с этим микрофоном используется пакет respeaker_driver.
Запуск пакета через CLI:
Перед экспериментами отключите все запущенные пакеты. В частности, остановите , чтоб отключить пакеты, запущенные автоматичеси: sudo systemctl stop robohead.service
/respeaker_driver/audio/channel_0 Тип сообщения: audio_common_msgs/AudioData Звук, аппаратно-обработанный на микрофоне
/respeaker_driver/audio/channel_1 Тип сообщения: audio_common_msgs/AudioData Звук с микрофона №1 из сборки микрофонов
/respeaker_driver/audio/channel_2 Тип сообщения: audio_common_msgs/AudioData Звук с микрофона №2 из сборки микрофонов
/respeaker_driver/audio/channel_3 Тип сообщения: audio_common_msgs/AudioData Звук с микрофона №3 из сборки микрофонов
/respeaker_driver/audio/channel_4 Тип сообщения: audio_common_msgs/AudioData Звук с микрофона №4 из сборки микрофонов
/respeaker_driver/audio/channel_5 Тип сообщения: audio_common_msgs/AudioData Звук, подающийся на воспроизведение через динамики
/respeaker_driver/audio/main Тип сообщения: audio_common_msgs/AudioData Главный аудио-канал, использующийся для дальнейшей программной обработки (распознавания команд). По факту, дублирует один из каналов 0-5 (По-умолчанию канал 0).
/respeaker_driver/doa_angle Тип сообщения: std_msgs/Int16 Содержит направление, откуда пришел звук, единицы измерения - градусы: -180...180 doa - Direction of Arrival. На корпусе красный светодиод указывает направление.
Топики/сервисы управления светодиодным кольцом и harware настройками ReSpeaker: coming soon
#TODO: UPDATE PHOTO
Просмотр doa_angle (направление, откуда пришел звук)
Пример работы с топиками аудио на Python (запись звука из топиков в .wav файл):
После записи в терминале будут выведены пути до сохраненных файлов.
Конфигурационный файл respeaker_driver/config/respeaker_driver.yaml:
usb/vendor_id - идентификатор вендора ReSpeaker`а (см. офиц. документацию ReSpeaker)
usb/product_id - идентификатор устройства ReSpeaker (см. офиц. документацию ReSpeaker)
usb/reset_time_sleep - задержка при программном переподключении к ReSpeaker (если случилась ошибка при первичной инициализации)
usb/timeout - таймаут при передаче данных с/на ReSpeaker
audio/rate — частота дискретизации сигнала с микрофона (см. офиц. документацию ReSpeaker)
audio/chunk - количество frame`ов в буфере, то же самое что: period, framebuffer и т.д.
led/brightness - стандартная яркость светодиодного кольца
led/A_color - цвет А в палитре светодиодного кольца (светодиод, указывающий направление звука, по умолчанию - красный)
led/B_color - цвет Б в палитре светодиодного кольца (заливка, по умолчанию - белый)
ros/topic_audio_main_name - название топика для 'основного' аудио-канала (по факту, дублирующего какой-то из каналов 0..5)
ros/topic_audio_channel_0_name - название топика для аудио-канала №0
ros/topic_audio_channel_1_name - название топика для аудио-канала №1
ros/topic_audio_channel_2_name - название топика для аудио-канала №2
ros/topic_audio_channel_3_name - название топика для аудио-канала №3
ros/topic_audio_channel_4_name - название топика для аудио-канала №4
ros/topic_audio_channel_5_name - название топика для аудио-канала №5
ros/topic_doa_angle_name - название топика для doa_angle
ros/main_channel - определяет, какой канал (0..5) будет дублироваться в "основной" main_channel
doa_yaw_offset - "поворачивает" приходящий doa_angle на заданное количество градусов (>0 - против часовой стрелки, <0 - по часовой стрелке). Полезно при физическом изменении ориентации ReSpeaker`а