How to reuse wyoming-openwakeword

Hi, I would reuse GitHub - rhasspy/wyoming-openwakeword: Wyoming protocol server for openWakeWord wake word detection system in another simple voice assistant project, but I didn’t find documentation with examples of the exposed by the wyoming API. For sure, everything is opensource, but I would really appreciate if someone guide me and point me to the files in codebase that use wake word wyoming API?

I already started the server on OrangePI PC armv7

docker run -it -p 10400:10400 rhasspy/wyoming-openwakeword     --preload-model 'ok_nabu'

So, I gues I have to form some request to the localhost:10400 in json

wake - list wake word detection services( optional )

    models - list of available models (required)
        name - unique name (required)
        languages - supported languages by model (list of string, required)
        attribution (required)
            name - name of creator (required)
            url - URL of creator (required)
        installed - true if currently installed (bool, required)
        description - human-readable description (string, optional)
        version - version of the model (string, optional)

as described here GitHub - rhasspy/wyoming: Peer-to-peer protocol for voice assistants

Could you please point me into example?

I don’t know enough about the documentation, but if you look at the satellite repo you’ll get a good view of the flow

each component registers its presence on startup, so that the main flow can tell to only call VAD if VAD is installed, etc

the mic task captures the raw audio and streams it on tcp://… whatever port
the downstream tasks take the audi stream and work on it , and signal their positive result
vad processes for voice detection (vs noise, sounds) (found voice)
wake processes for the wakeword (found wakeword) (no look for wakeword if no speech found)
each of these events trigger the other downstream processes to start their work (no speech reco if no wakeword)

and the config can add or bypass certain tasks always or for different stages

line 251 is the start of the event processing state machine.

I wrote a speech reco task, (asr) it takes in audio-chunk events and emits a transcript event with the text

I want to do the same as you , replace the hard coded ‘tasks’ in my existing app with wyoming services.
so I need to create an equivalent of the satellite.py in my app and listen for the events… same as the hard coded stuff does… (all my stuff is in javascript) …

i could use a docker setup for all this, my existing UI has visual annotations during the process
after hotword, while processing, … (sort of like a real echo device, spinning colors …)

1 Like

Interesting. I would appreciate if you post a link to your codebase when you will manage to use it.
I would use rather openwakeword directly, but it is not available on armv7 because of onnxruntime, I guess. But wyoming somehow bypassed this, so using wyoming creates more modular system desing (that is better for sure). But for a simpler prototype I would use openwakeword as I said, but I can’t do that right now.

here is the link to my google speech reco ASR

wyoming is a composite flow system… each little component can be added/enabled or not