File size: 4,076 Bytes
c1a368a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | ---
language:
- de
- en
license: mit
tags:
- audio
- speech
- hotword
- wake-word
- voice
- keyword-spotting
- on-device
- private
- edge
pipeline_tag: audio-classification
library_name: wakecore
---
# WakeCore
> **Open hotword detection for private voice systems.**
> Lokale Hotword-Erkennung für private KI-Systeme.
WakeCore is a cross-language SDK family for embedding always-listening
hotword ("wake-word") detection into your applications. Detection runs
entirely on-device — no cloud calls, no API keys, no telemetry — so you
stay in control of the microphone signal.
**Drop a `.wake` file into your app, point WakeCore at it, and you get
on-device hotword detection.** Custom `.wake` files for your own phrases
are produced by the WakeCore generator at <https://wakecore.de>.
## Quick start
### Python
```bash
pip install wakecore[audio]
wakecore install-engine
```
```python
from wakecore import Runtime, AudioCapture
with Runtime.load("hey_computer.wake") as rt, \
AudioCapture(rt.sample_rate, rt.frame_length) as mic:
for frame in mic:
if rt.process(frame):
print("wake!")
```
### Node.js
```bash
npm install wakecore
```
```javascript
const { Runtime } = require("wakecore");
const rt = Runtime.load("hey_computer.wake");
// feed PCM-16 mono frames of rt.bytesPerFrame bytes
rt.close();
```
### Rust
```toml
[dependencies]
wakecore = "0.1"
```
```rust
let mut rt = wakecore::Runtime::load("hey_computer.wake")?;
let frame = [0i16; 512];
if rt.process(&frame)? { println!("wake!"); }
```
## Supported platforms (8 OS families, 17 binary variants)
| Family | Architectures |
|-------------------|---------------------------------------------------|
| Linux | x86_64, i386 |
| macOS | x86_64, arm64 |
| Windows | amd64, i686 |
| Raspberry Pi | cortex-a7, cortex-a53, arm11 |
| ARM Linux | a9-neon (generic ARMv7+NEON) |
| Android | x86, x86_64, armeabi-v7a, arm64-v8a |
| iOS | universal static |
| watchOS | universal static |
## What's in this repository
| Path | Purpose |
|-----------------------------------|------------------------------------------------|
| `hotwords/*.wake` | Ready-to-use sample hotword files |
| `engine/<plat>/<arch>/<ver>/` | Native engine binary per platform |
| `engine/<plat>/<arch>/<ver>/SHA256SUMS` | Integrity manifest |
## The `.wake` file format
`.wake` files are sealed binary containers — opaque to user code. The
SDK simply hands the body to the bundled inference engine. New `.wake`
files are produced by the WakeCore generator service.
## Audio format
- Sample rate: **16,000 Hz**
- Channels: **mono**
- Sample format: **16-bit signed little-endian PCM**
- Frame size: **512 samples** per `process()` call (~32 ms)
## Why WakeCore
| | WakeCore | Cloud APIs | Other open SDKs |
|-|----------|------------|------------------|
| On-device | ✓ | ✗ | ✓ |
| No API key | ✓ | ✗ | ✓ |
| Cross-language | ✓ Python · Node.js · C · C++ · C# · Rust | varies | usually single-language |
| Free tier | ✓ first hotword free | rare | training-yourself |
| German-aware | ✓ | rarely | rarely |
| `.wake` files portable across platforms | ✓ | n/a | varies |
## Tags
`audio` · `speech` · `hotword` · `wake-word` · `keyword-spotting` ·
`voice-assistant` · `private-voice` · `german` · `on-device` ·
`edge-ai` · `iot`
## Links
- GitHub: <https://github.com/keyvan-ai/wakecore>
- Website: <https://wakecore.de>
- Generator: <https://api.wakecore.de>
- License: [MIT](https://github.com/keyvan-ai/wakecore/blob/main/LICENSE)
|