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:/config
Untuk pengujian dan eksperimen, Anda dapat menjalankan proyek ini secara lokal:
git clone [email protected]:dalehumby/openWakeWord-rhasspy.git
python3 -m venv env
source env/bin/activate
pip3 install -r requirements.txt
python3 detect.py
config.yaml
, misalnya nano /path/to/config/config.yaml
config.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 : 12204
Jika 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:/config
openWakeWord 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.