Talking buttons + ggwave #27
ggerganov
started this conversation in
Show and tell
Replies: 1 comment
-
Here is another video demonstration of this: talking-buttons-demo-0.mp4If you have buttons, you can try this out using the following page: |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Description
You have probably seen one of these small buttons that allow you to record a short audio message and then replay it as many times as you want:
Img. Talking buttons (image taken from Amazon.com)
There are different models available on the market, but the functionality is pretty much the same - you can record audio up to 30 seconds by holding the button pressed and speaking into the built-in microphone. You can then press the button again and the last recorded message will be replayed.
I was recently asked if
ggwave
can work with such buttons - i.e. be able to record aggwave
audio message, replay it and decode it successfully. It turns out it can and it works pretty ok. Here is a quick example:ggwave-buttons-1.mp4
Vid. Using 2 different talking buttons to transmit `ggwave` messages.
The frequency range of these buttons seems to be capped at around 5kHz or less. The original
ggwave
audible protocols work in the range of1875 Hz - 6375 Hz
, so I had to make modified protocols at lower frequency so the messages could be successfully replayed by the buttons. The newggwave
Dual-Tone protocols work in the range1125 Hz - 2625 Hz
:ggwave/include/ggwave/ggwave.h
Lines 270 to 272 in 80e99d3
In contrast to the old protocols which used 6 tones, these DT protocols now use just 2 tones, at the expense of some bandwidth. The rest of the encoding is the same.
Performance
The main limiting factor for successful communication of the messages seems to be the quality of the audio produced by the buttons. I have experimented with 2 different models:
In good conditions (low background noise, proper recording of the audio message) the success rate for receiving the replayed messages is quite high. I tried transmitting the message from various corners of my room and it works most of the time. It sometimes fails for longer messages or if I am using the
[DT] Fastest
protocol.The next limiting factor is probably the decoding algorithm - maybe some improvements can be made to better distinguish the signal from the background noise.
Trying it out
If you are interested in trying this form of communication yourself, you can very easily do it using the Waver application that I made. Simply run the application on your phone or computer and set the settings like this:
Img. Using the Waver app. Left: settings for fixed-length transmission. Center: record the message. Right: receive the message
Next, go to the
Messages
tab, type in a short message and send it while keeping the button in record mode near the speakers of your device.Waver
should then be able to receive back the message from the button - just make sure you mic is on.Using the
Fixed-length
option makesggwave
to not transmit the sound markers at the start and end of the audio message. The sound markers are used to determine the length of the transmitted message and allow this length to be variable. I've mentioned before that the sound markers currently sound a bit annoying and ideally I would like to eliminate then completely from the modulation. WithFixed-length
enabled, the markers are not transmitted, but the drawback is that you need to set the message length in advance. Note that shorter messages will be decoded with higher success rate.The
Pitch shift
option is needed for some buttons that seem to distort the audio. In such cases, you should enable the option and adjust the slider before recording the message to the button. Finding the correct "shift" currently is done via trial and error.Img. Waver settings for Fluent Pet buttons
Acknowledgments + feedback
Special thanks to Leo for giving me the idea about using talking buttons with
ggwave
. Make sure to checkout his project at https://fluent.petAs usual, I would love hearing about your experience with
ggwave
so if you give it a try make sure to leave a message below and let me know how it worked for you.Beta Was this translation helpful? Give feedback.
All reactions