openWakeWord adalah perpustakaan sumber terbuka untuk mendeteksi kata-kata bangun yang umum seperti "alexa", "hey mycroft", "hey jarvis", dan model lainnya. Rhasspy adalah asisten suara sumber terbuka.
Proyek ini menjalankan openWakeWord sebagai layanan yang berdiri sendiri, menerima audio dari Rhasspy melalui UDP, mendeteksi ketika kata bangun diucapkan, dan memberi tahu Rhasspy menggunakan protokol Hermes MQTT.
Saya menjalankan Rhasspy dalam mode Basis/Satelit. Saat ini setiap Satelit menangkap audio, melakukan deteksi kata bangun secara lokal dan mengalirkan audio ke Pangkalan yang melakukan hal lainnya. Satelit Pi4 menjalankan container Rhasspy Docker, diluncurkan dengan composer. Kontainer Base Rhasspy berjalan pada i7 yang lebih bertenaga (menjalankan perangkat lunak otomatisasi rumah lainnya.)
Menjalankan openWakeWord di Docker memudahkan distribusi dan pengaturan (dependensi Python), memungkinkan openWakeWord berkembang dengan kecepatan yang berbeda dari Rhasspy (bukan dibundel dan dirilis dengan Rhasspy.) Satu contoh openWakeWord memusatkan konfigurasi, dan memungkinkan satelit berdaya rendah (misalnya ESP32) pilihan kata bangun yang lebih kaya.
Di masa depan saya berencana menambahkan UI web untuk konfigurasi: kata mana yang harus dideteksi, ambang batas, model pemverifikasi khusus, dan mungkin identifikasi pembicara. Ini juga dapat mencakup visualisasi langsung untuk pengujian dan diagnostik.
Menggunakan Docker CLI
docker run -d --name openwakeword -p 12202:12202/udp -v /path/to/config/:/config dalehumby/openwakeword-rhasspy Di docker-compose.yml (atau file tumpukan Docker Swarm)
openwakeword :
image : dalehumby/openwakeword-rhasspy
restart : always
ports :
- " 12202:12202/udp "
volumes :
- /path/to/config:/configUntuk pengujian dan eksperimen, Anda dapat menjalankan proyek ini secara lokal:
git clone [email protected]:dalehumby/openWakeWord-rhasspy.gitpython3 -m venv envsource env/bin/activatepip3 install -r requirements.txtpython3 detect.py config.yaml , misalnya nano /path/to/config/config.yamlconfig.yaml.example ke config.yaml untuk memulai Rhasspy mengalirkan audio dari mikrofonnya ke openWakeWord melalui jaringan menggunakan protokol UDP. Pada setiap perangkat Rhasspy yang memiliki mikrofon terpasang (biasanya Satelit) buka Rhasspy - Pengaturan - Perekaman Audio dan di UDP Audio (Output) masukkan alamat IP host yang menjalankan openWakeWord, dan pilih nomor port, biasanya dimulai dari 12202 . Jika Anda memiliki beberapa perangkat Rhasspy maka setiap perangkat memerlukan nomor portnya sendiri, 12202 , 12203 , 12204 , dll.

Di openWakeWord config.yaml , udp_ports memiliki pasangan kay:value. Kuncinya adalah siteId yang ditampilkan di bagian atas Rhasspy - Pengaturan. Mungkin: base , satellite , kitchen , atau bedroom , dll. Nilainya adalah port yang tercantum di bawah Rhasspy - Pengaturan - Perekaman Audio.
udp_ports :
base : 12202
kitchen : 12203
bedroom : 12204Jika Anda menggunakan Docker, Anda perlu membuka port untuk mengizinkan lalu lintas jaringan UDP masuk ke dalam container.
Menggunakan Docker CLI
docker run -d --name openwakeword -p 12202:12202/udp -p 12203:12203/udp -p 12204:12204/udp -v /path/to/config/:/config dalehumby/openwakeword-rhasspy Atau di docker-compose.yml
openwakeword :
image : dalehumby/openwakeword-rhasspy
restart : always
ports :
- " 12202:12202/udp " # base
- " 12203:12203/udp " # kitchen
- " 12204:12204/udp " # bedroom
# ... etc
volumes :
- /path/to/config:/configopenWakeWord memberi tahu Rhasspy bahwa kata bangun telah diucapkan menggunakan protokol Hermes MQTT. Broker MQTT harus dapat diakses oleh Rhasspy dan openWakeWord. Broker MQTT internal Rhasspy tidak dapat dijangkau dari luar Rhasspy, jadi Anda perlu menjalankan broker bersama, seperti Mosquitto.
Setelah broker berjalan, buka Rhasspy - Pengaturan - MQTT. Pilih Broker External , atur alamat IP Host tempat broker berjalan, nomor Port , dan Username / Password jika diperlukan, seperti:

openWakeWord config.yaml kemudian akan memiliki:
mqtt :
broker : 10.0.0.10
port : 1883
username : yourusername # Delete row if not required
password : yourpassword # Delete row if not required
Pada setiap Rhasspy, di Rhasspy - Settings - Wake Word, atur Hermes MQTT , like

openWakeWord mendengarkan kata-kata bangun seperti "alexa", "hey mycroft", "hey jarvis", dan lainnya. Gunakan model_names untuk menentukan kata bangun mana yang akan didengarkan. (Lihat dokumentasi Model Terlatih, dan model_names mana yang akan digunakan.)
Hapus kata-kata bangun yang tidak ingin Anda aktifkan. Atau hapus seluruh bagian model_names untuk menggunakan semua model terlatih.
oww :
model_names : # From https://github.com/dscripka/openWakeWord/blob/main/openwakeword/__init__.py
- alexa # Delete to ignore this wake-word
- hey_mycroft
- hey_jarvis
- timer
- weather
activation_samples : 3 # Number of samples in moving average
activation_threshold : 0.7 # Trigger wakeword when average above this threshold
deactivation_threshold : 0.2 # Do not trigger again until average falls below this threshold
# OWW config, see https://github.com/dscripka/openWakeWord#recommendations-for-usage
vad_threshold : 0.5
enable_speex_noise_suppression : false Pengaturan oww lainnya memastikan Rhasspy hanya diaktifkan sekali per kata bangun, dan membantu mengurangi aktivasi palsu.
Dalam contoh di atas, 3 sampel audio terbaru yang diterima melalui UDP dirata-ratakan, dan jika rata-rata keyakinan bahwa kata bangun telah diucapkan di atas 0,7 (70%), maka Rhasspy akan diberi tahu. Rhasspy tidak akan diberitahu lagi sampai kepercayaan rata-rata turun di bawah 0,2 (20%), yaitu kata bangun telah berakhir.
Pengaturan untuk deteksi aktivitas suara (VAD) dan peredam bising juga disediakan. (Lihat Rekomendasi Penggunaan openWakeWord.)
Jangan ragu untuk membuka Masalah jika Anda memiliki masalah, butuh bantuan, atau punya ide. PR selalu diterima.