Raven with wav files

Hi,

I installed rhasspy 2.5.7 and wanted to test raven. But I don’t see in doc/tutorial how to set it up, where to copy files, if I ever have my three samples recorded.

I tried putting wav in profiles/fr/raven/luna/examples-0.wav etc but in the interface I don’t see this option. Tried to manually edit profile but doesn’t work at all.

What did I miss ?

Also if I try to record the samples from the interface, nothing happend, the modal never close.

You might want to try adding this to your profile:

"wake": {
  "raven": {
    "keywords": {
      "luna": {}
    }
  }
}

I’m fixing this in the next version of Rhasspy – it will autodetect directories in your raven directory and populate this list.

It should close once there’s silence. Same as the wake up button. Does that work?

I did docker latest update and the list is now ok with my folder.
But arecord -l list nothing, it seems each time I update/upgrade the OS, I have to reinstall respeaker drivers :face_with_monocle:

Have a bit of time to retry to get all up and running, will let you know.
Didn’t play a lot with it these last months :sob: But Raven put back the hope of putting it in production one day !

Ok, my microphone just doesn’t work in rhasspy

sudo apt-get update && sudo apt-get dist-upgrade
sudo apt-get install git
git clone https://github.com/respeaker/seeed-voicecard
cd seeed-voicecard
sudo ./install.sh
sudo reboot

then

aplay -l
arecord -l
arecord -f cd -Dhw:0 | aplay -Dhw:0

all works !

In rhasspy, tried previous working settings, different settings with arecord or pyaudio, can’t get anything with wake up button.

Just Pi4 + buster lite + reSpeaker PiHat

docker run -d -p 12101:12101 \
      --name rhasspy \
      --restart unless-stopped \
      -v "$HOME/.config/rhasspy/profiles:/profiles" \
      -v "/etc/localtime:/etc/localtime:ro" \
      --device /dev/snd:/dev/snd \
      rhasspy/rhasspy \
      --user-profiles /profiles \
      --profile fr

TTS commands works, so output is ok.

:sneezing_face:

This might be the same recurrent problem with docker container and ALSA.

Have you tried to also mount your ALSA conf /etc/asound.conffrom the host in the container -v /etc/asound.conf:/etc/asound.conf ?

If no /etc/asound.conf file, simply create one with an ALSA config that works on the host.

I did manage to get it working !!

And then my Raven wakeword works also.

But strange is, I had to remove UDP audio output host and port and output siteId

Why ? I always had them setup to work with satellite/master. My satellite is actually turned off anyway.

Of course, same UDP port for both mic and wake:

"microphone": {
        "arecord": {
            "siteId": "salle",
            "udp_audio_host": "salle",
            "udp_audio_port": "12240"
        },
        "system": "arecord"
    },
"wake": {
        "raven": {
            "keywords": {
                "luna": {
                    "probability_threshold": 0.7
                }
            },
            "udp_audio": "12240"
        },
        "satellite_site_ids": "salle",
        "system": "raven"
    },

With this, recording with wake up button works, but can’t wake it saying the wakeword :exploding_head:

Really hard to get back after a few months off :cold_sweat:

Is UDP audio streaming working with raven ?

No one with raven and UDP port ?
If working could you post some screen of your settings ?
:kissing:

I just tried it on my machine and it seems to be working fine. If you don’t specify a host in the Raven UDP settings, it will default to localhost (127.0.0.1) for security.

If you’re sending audio from a different machine, you may want to put the IP address of Raven’s machine in the Raven UDP settings too (like 192.168.0.140:12240) or use 0.0.0.0 to bind to all interfaces.

It seems to work yes. But I can’t get raven to work regarding sensitivity. Eother too sensitive and detect anything, even not a voice, or detect nothing.
Same wav was used for my snowboy custom hotword which worked perfect :sob:

Not a lot of time to test all this, will continue here and there … :sneezing_face:

The sensitivity threshold does not really go from 0 to 100. In general, a threshold of 0.45-0.60 is good. Below you’ll get lots of false positive, above you’ll get lots of false negatives.

My own implementation of the Snips personal wake word triggers correctly using ~0.5.

Still no way to get it working with UDP port.
Docker 2.5.8

If I let udp audio empty, raven works (will test further for reliability but it works)

Also, can be use sensitivity such as 0.478 ? Or it will be rounded anyway ?

Ok, it works with udp host as localhost, then localhost:12240:salle

All I want it audio streaming saying local on both master and satellite before wakeword recognotion to not flood network with mqtt. Both have wakeword detection on device.

Will test raven on my pi0 satellite …

It seems that the pi0 need higher sensitivty than pi4 both with respeaker. Strange, I will check volume/gain for microphone.

So I have now to test raven multiple custom keywords for both master and satellite (both same settings/files for wakeword).

Can I rename wav files ?
In doc we have:

"wake": {
  "system": "raven",
  "raven": {
      ...

      "keywords": {
          "default": {
              "probability_threshold": 0.4
          },

          "other-keyword": {
              "average_templates": False,
              "minimum_matches": 2
          }
      }
  }
}

So I guess for this to work I will need:
/profiles/fr/raven/default/example-0.wav
/profiles/fr/raven/default/example-1.wav
/profiles/fr/raven/default/example-2.wav

/profiles/fr/raven/other-keyword/example-0.wav
/profiles/fr/raven/other-keyword/example-1.wav
/profiles/fr/raven/other-keyword/example-2.wav

Can I put /profiles/fr/raven/mycustom1/mycustom-0.wav (and 1 and 2) ?

On pi0, raven with one wakeword. Saying the wakeword trigger it 3 or 4 seconds later. Not usable actually. I think I will setup another pi3b+ as satellite :confused:

Output all your amixer settings from the respeaker driver first and copy them over.
The above doesn’t shackle you to a kernel versions but doesn’t have the amixer default setttings so copy them and then no worries about OS updates if its the 2 mic.

Ok, both master and satellit on rpi4/3, a lot better. Pi0 become really not usable, too slow to boot, restart, detect hotword etc.

I have a question regarding raven multiple custom wakeword

Here are my settings in profile.json, based on the doc example

"wake": {
        "raven": {
            "average_templates": false,
            "keywords": {
                "bibi": {
                    "average_templates": false,
                    "minimum_matches": 1,
                    "probability_threshold": 0.7
                },
                "bobo": {
                    "average_templates": false,
                    "minimum_matches": 1,
                    "probability_threshold": 0.7
                },
                "bebe": {
                    "average_templates": false,
                    "minimum_matches": 1,
                    "probability_threshold": 0.7
                }
            },
            "probability_threshold": "0.482",
            "udp_audio": "localhost:12240:salle",
            "vad_sensitivity": "1"
        },
        "system": "raven"
    },

Questions:
in main raven object there is probability_threshold as string, saved by settings interface.
in each wakeword object there is also probability_threshold with an integer.

In case of multiple wakeword, which one is taken into account ? Does all should be string or int ?

Same for average_templates and minimum_matches

UDP audio is now working with localhost. Have check with mqttexplorer and no wav chunk streaming on mqtt :+1:

Last step is really getting multiple custom wakeword working reliably. Everything else works nice !!

Have you tried using the template averaging option on the Pi0?

No, it was so slow I just sitch the satellite on a pi3 :confused: