You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -12,12 +12,17 @@ Based on STM32WB55, it leverages [Picovoice](https://picovoice.ai/) to process s
12
12
13
13
The INMP441 MEMS microphone is used for voice input.
14
14
15
+
**Pre-built firmware:**[Download latest](https://github.com/edholmes2232/Speech2Touch/actions/workflows/build-firmware.yml) (select latest successful run → Artifacts)
16
+
17
+
**Coverage:** This project has been written about on [Hackaday](https://hackaday.com/2025/09/24/coffee-by-command-the-speech2touch-voice-hack/) and [Hackster.io](https://www.hackster.io/news/espresso-yourself-with-your-voice-b83a2757f170).
-[STM32Cube for Visual Studio Code](https://www.st.com/content/st_com/en/stm32-mcu-developer-zone/software-development-tools/stm32cubevscode.html) extension
49
+
-Qt (for HIL testing)
50
+
- VSCode with [STM32Cube extension](https://www.st.com/content/st_com/en/stm32-mcu-developer-zone/software-development-tools/stm32cubevscode.html)
51
+
-See `Dockerfile`for toolchain and package requirements
46
52
47
53
### 🚀 Container Build & Flash (Recommended)
48
-
Coming soon...
54
+
55
+
1. Open in VSCode and reopen in dev container (`F1` → "Dev Containers: Reopen in Container")
cmake --build /workspaces/Speech2Touch/build/Release --target all
62
+
```
63
+
3. Flash `build/Release/Speech2Touch.bin` to your STM32WB55
49
64
50
65
### 🛠️ Manual Build & Flash
51
66
52
-
1. Clone this repository.
53
-
2. Set up the project in VSCode using the STM32Cube extension.
54
-
3. Build and flash the firmware from VSCode menus.
55
-
4. Connect the device to the coffee machine via USB.
67
+
1. Clone this repository
68
+
2. Set up the project in VSCode using the STM32Cube extension
69
+
3. Build and flash the firmware from VSCode
70
+
4. Connect the device to the coffee machine via USB
56
71
57
72
### 🧪 HIL Testing
58
73
59
-
The Hardware-In-Loop test creates a QT GUI window which emulates the position of touch targets to match the Franke A600. It utilizes Linux text-to-speech utilities to trigger the device, and tests that the correct corresponding touch target is triggered.
74
+
The Hardware-In-Loop test suite uses a Qt GUI to emulate the Franke A600 touchscreen layout. It leverages Linux text-to-speech utilities to trigger the device and validates that commands activate the correct touch targets.
-**Processing:** Picovoice library processes audio and extracts commands.
82
-
-**Translation:** Commands are mapped to touchscreen coordinates.
83
-
-**Output:** Custom USB HID packets simulate touch events on the target device.
95
+
96
+
-**Input:** INMP441 microphone captures audio
97
+
-**Processing:** Picovoice library performs speech recognition and command extraction
98
+
-**Translation:** Commands are mapped to touchscreen coordinates
99
+
-**Output:** Custom USB HID packets simulate touch events
84
100
85
101
### 🧵 Threading
86
102
@@ -100,26 +116,14 @@ sequenceDiagram
100
116
end
101
117
102
118
activate Speech
103
-
Speech->>Speech: Speech Regognition
104
-
Speech->>Speech: Convert to target co-ords
119
+
Speech->>Speech: Speech Recognition
120
+
Speech->>Speech: Convert to Target Coords
105
121
deactivate Speech
106
122
107
123
Speech->>Touch: Touch Coordinates
108
124
Touch->>USB: USB HID Report
109
-
110
125
```
111
126
112
-
113
-
114
-
115
-
---
116
-
117
-
## 🔬 HIL Testing Suite
118
-
119
-
-**QT-based GUI** replicates the Franke A600 touchscreen.
120
-
-**Automated tests** ensure voice commands map to correct on-screen buttons.
121
-
-**Continuous integration** ready.
122
-
123
127
---
124
128
125
129
## 🔮 Extending
@@ -139,14 +143,13 @@ The Picovoice precompiled binary at `Core/Lib/picovoice/libpicovoice.a` is pulle
139
143
The configuration files in `Core/Lib/picovoice/include` are specifically set up for a Franke A600, including using "Franke" as the wake-word. New configuration files can be generated from the [Picovoice Console](https://console.picovoice.ai/).
140
144
141
145
---
142
-
## ☑️ To Do
143
-
- Create .devcontainer for firmware builds within a container.
144
-
- Replace Dev Board + Protoboard with a PCB.
146
+
147
+
## ☑️ Roadmap
148
+
149
+
- Replace Dev Board + Protoboard with a PCB
145
150
- Unit testing.
146
-
- CI/CD with GitHub Actions for generating firmware, running unit tests.
147
151
- Extract audio over RTT for tuning.
148
-
- Decouple Franke A600 specific functionality for easier adapting of Speech2Touch to different applications.
149
-
152
+
- Decouple Franke A600-specific functionality for easier adapting of Speech2Touch to different applications.
0 commit comments