This node is responsible for handling Kuri voice interactions. Specifically,
audio_voice_delegate has two responsibilities:
If a wake word is detected, a request is made to the Houndify service to determine the spoken command, before publishing the results on a ROS topic.
If audio enters the “asleep” state as a result of the
transcribing audio) or a call to
/audio/voice_delegate/sleep, an empty
message will be published
If audio enters the “awake” state as a result of a wake word being detected or the service
/audio/voice_delegate/wake_up is called, a message will be
published. If the wake word triggered this state change, a non-zero direction
vector will be provided for the observed source of audio.
$ rostopic echo /audio/voice_delegate/awake direction: x: -97.0 y: 26.0 z: 0.0 ---
If an audio transcription or command is received from Houndify, a message will be published containing the matched command(s), the raw transcription, and any known error messages
$ rostopic echo /audio/voice_delegate/exchange commands: - name: CustomCommand params: - k: name v: Happy Birthday Song error: '' transcription: it's my birthday --- commands: - name: StopCommand params:  error: '' transcription: stop --- commands: - name: TurnCommand params: - k: direction v: -90 error: '' transcription: turn left ---
Sets mayfield_audio to the “deaf” state. This is the most common way to temporarily set Kuri to ignore wake words and voice commands. Kuri must be returned to the “asleep” state via service call in order for wake words to be recognized.
$ rosservice call /audio/voice_delegate/deafen state: deaf
Sets mayfield_audio to the “asleep” listening state. This effectively ends any ongoing voice command transcriptions and returns Kuri to a state of listening for the wake word.
$ rosservice call /audio/voice_delegate/snooze state: asleep
Reports the current audio status of mayfield_audio. Possible states include “awake” (transcribing audio), “asleep” (listening for wake words), and “deaf” (ignoring all audio inputs).
$ rosservice call /audio/voice_delegate/stat state: asleep direction: -97.000000, 26.000000, 0.000000
Sets mayfield_audio to the “awake” state. This service triggers Kuri to start transcribing audio in attempt to find a voice command match. Transcription will time out after
/audio_voice_delegate/awake_timeout and Kuri will
return to the “asleep” state (listening for wake word).
$ rosservice call /audio/voice_delegate/wake_up state: awake
The client ID provided by Houndify for identification with an account and subscribed domains. Defaults to the Mayfield client/account
The client key associated with the Houndify client ID, above. Defaults to the Mayfield client key
A unique identifier for the robot, used to authenticate the robot with the Houndify service, and provide improved location name matching for “go to” voice commands. Defaults to the Kuri UUID
Identifier for the voice transcription service to use. It is recommended that
this be set to
soundhound and not modified for the stability of voice
The duration of audio samples to send before ending transcription, measured in seconds
The number of channels associated with the audio buffer used for listening
PulseAudio source or sink-monitor associated with the processed audio input, used for wake word detection and audio transcription
The acceptable number of milliseconds of latency, used to configure the stream for listening to audio
The sample rate of the audio buffer used for listening
System audio API type. Defaults to
Identifier for the wake word library to use. It is recommended that this be
okhound and not modified for the stability of wake word detection.