A voice-powered kiosk system for handling customer orders through natural language interaction.
- Voice-Activated Ordering - Hands-free customer interaction
- Natural Language Processing - Understands conversational requests
- Real-Time Confirmation - Instant receipt printing
- End-to-End Encryption - Secure communication throughout
- Windows Service Deployment - Run as background service for 24/7 operation
- Flexible Integration - Local apps via Named Pipes, remote systems via HTTP Callbacks
- Valid Gemini API key (create one at https://aistudio.google.com/api-keys)
- Valid SSL certificates (see Certificate Management section below)
- Raspberry PI 5 w/ microphone, speaker and monitor.
Before running the server, update the core.xml config file with:
- A valid
GoogleAPIKey - The
OrderConfirmationCallBackUrlfor order callbacks
kiosk-server-windows-amd64.exe Note: The server can be configured to run as a Windows service so it starts automatically on boot, you can execute "manager.bat install" on terminal. Once the service is installed, you can create a custom program to listen to pipe called "KioskOrderConfirmation". The server will send order confirmation to the pipe. You can use the sample code "program.cs" as a reference.
Generate the required keys for server and client:
Windows:
generate-certs.batLinux/Mac:
bash generate-certs.shImportant:
- Update the OpenSSL path in the script before executing it
- You can use the stored keys in the config folder but its valid for 1 year only or generate your own key.
For Client:
- The client installer includes default keys, but you should update them manually for production use
- Client configuration and keys are located in
/opt/sysrefiners/config - Copy your generated keys to this directory after installation
Install on Raspberry Pi 5 device w/ microphone, speaker and monitor connected to it. The user that will install the program must have root permission.
Important: The server must be running before installing and starting the client.
Before installation, update the /etc/environment file with the following values:
sudo nano /etc/environmentAdd these lines: (note that id will be populated during installation of debian file.)
PULSE_SERVER=/run/user/1000/pulse/native
XDG_RUNTIME_DIR=/run/user/1000
Save the file and apply the changes:
source /etc/environmentInstall the client package:
tmpfile=$(mktemp) && wget -4 -O "$tmpfile" https://raw.githubusercontent.com/ghostidentity/voice-ai-kiosk/main/client/kiosk-client_1.0.0_arm64.deb && sudo DEBIAN_FRONTEND=dialog dpkg -i "$tmpfile" && sudo apt-get install -f && rm -f "$tmpfile"Follow the instructions during installation.
sudo dpkg -r kiosk-clientYou can register at https://www.make.com/en/register?pc=mtagab to create workflows. For instance, when the callback URL receives a new request, it can be chained to add the order to Airtable.
The client can print order confirmation receipts, but this requires connecting the Raspberry Pi 5 device to a Bluetooth thermal printer first.
- Both the server and client communicate via gRPC protocol. Before they can establish a connection, the keys must be valid (e.g.,
ca.crt,ca.key,server.key, etc.). - Incoming/outgoing audio data is encrypted using Post-Quantum Cryptography except for application updates.
- The server will persistently connect to the Google Live server. This prcoess will incur additional cost if u are using paid option.
- The client will run as a service, automatically connect to the server, and will attempt to reconnect if disconnected.
- Gemini Live API offers a free tier that you can use. However, the paid options offer higher rate limits and lower latency.
- You can send funds via paypal using the email provided below
- Or subscribe to paid subscription at https://www.make.com/en/register?pc=mtagab
Mark Tagab
mtagab@outlook.com