Skip to content

Introduction

Jürgen Pabel edited this page Jun 17, 2024 · 3 revisions

You probably selected the "Help" item on your HAL9000 and opened this URL from the QRcode - which means you've got a fully running digital voice assistant now: great!

Now what?

Assuming you installed the HAL9000 using the HAL9000-installer, you have a small set of voice commands that are pre-configured (in english language). Aside from interacting via voice with the HAL9000 (we'll get to that in the next sections), you can use the rotaries/buttons (if your HAL9000 has those) to navigate a small menu on the display. Whenever your HAL9000 is not in an active interaction (voice or rotaries/buttons), it will be in 'idle' mode - showing just the current time on its display (if the time is shown in red color, this means that the time is not synchronized...and might be wrong). Any time your HAL9000 is in an active interaction, it'll show this on the display - for voice interactions it'll be one of a few animations showing the glowing red "eye".

Let's now start from the beginning (of a voice based user-interaction)...

Voice activation (a.k.a. wake-word)

The wake-word is "OK, HAL". The installed wake-word-engine (openwakeword) has a pretty low false-positive rate but that comes with a only-good-enough false-negative rate, so you might have to repeat that wake-word every now and than. As an alternative, the voice activation can also be triggered from the user-interface: it should be the second menu item ("Voice command") listed when you use the control (left physical) rotary. Once the voice activation has occurred (via wake-word detection or via UI-menu), the display will switch the 'idle' screen to an animation screen showing the glowing red "eye".

Voice commands

Important: The TTS model is (currently on-demand) loaded when the first voice command is about to be spoken - on a Pi Zero this takes about 10 seconds; currently there is no UI indication about this (busy-)state. It's probably easiest to just wait until the timeout triggers and HAL responds with "I am sorry, I did not understand you" - and just trigger a new prompt. This happens only on the very first interaction after system startup and will be adressed (soon'ish) by pre-loading the TTS model during startup.

The installed container images comes with a few "demo" commands. Multiple command variants are usually configured as listed below - some variations are just simply different ways of phrasing the same intent but some variations exist because the text-to-speech (TTS) engine might churn out slightly different wordings (for example: "shutdown" vs. "shut down")

Command group: Date/time query

  • Let HAL tell you the current time
    • What time is it?
    • What's the time?
    • How late is it?
  • Let HAL tell you the current date
    • What date is today?
    • What day is today?
    • What is todays date?

Command group: Reminder

  • Let HAL remind you in a number of minutes
    • Set a timer for <X> minutes

Command group: System shutdown/reboot

  • Linux shutdown
    • Turn yourself off
    • Power off
    • Shut down
    • Shutdown
  • Linux reboot
    • Restart yourself
    • Reboot

Changing voice commands

<TODO>

tl;dr:

  • Option 1: Use the "console" HTML user-interface on port 8080, first screen in the first column (warning: these changes aren't persisted).
  • Option 2: SSH into the system, switch to the application user (sudo -i -u hal9000) and edit kalliope's configuration in ~/HAL9000/kalliope (refer to kalliope's documentation for guidance). The podman container 'hal9000-kalliope' needs to be restarted for changes to become effective (reboot the system or systemctl --user restart pod-hal9000.service as user hal9000).