Mycroft-core: Bounty: Menerapkan pembatalan kebisingan pada perangkat keras berbasis RPi-3 (Mark 1 dan Picroft)

Dibuat pada 14 Mar 2018  ·  20Komentar  ·  Sumber: MycroftAI/mycroft-core

_CATATAN: Masalah ini menggantikan Isu # 57_

Pernyataan masalah

Bus audio saat ini pada gambar Mark 1 dan Picroft tidak menghilangkan audio speaker dari mikrofon. Hal ini menyebabkan perilaku perangkat yang tidak diinginkan, terutama saat streaming audio diputar dan pengguna tidak dapat "menerobos" dengan mudah dengan Hey Mycroft .

Perangkat mengetahui audio apa yang sedang dikeluarkan dari speaker. Ide penting yang diinginkan adalah mengurangi speaker audio-out dari mikrofon audio-in menggunakan pendekatan yang tepat - seperti mengubah waktu audio keluar dan mencocokkannya dengan audio masuk dari mikrofon.

Kriteria penerimaan

  • Solusinya harus bekerja pada perangkat keras referensi Mark 1. Picroft bisa digunakan untuk pengujian atau pembuktian konsep, tetapi solusinya harus berfungsi dalam lingkungan akustik enklosur Mark 1
  • Solusinya harus berfungsi dengan aliran audio yang sedang diputar pada volume 3/4, seperti Pandora, Spotify, Mopidy atau audio streaming lainnya
  • Solusinya harus bekerja dengan perangkat lunak pendeteksi Precise Wake Word default.
  • Seorang pengguna harus dapat menginterupsi aliran input / output audio dengan mengucapkan Wake Word - yaitu 'Hey Mycroft' pada volume normal (yaitu tidak berteriak).
  • Solusinya harus bekerja dalam batasan CPU dari perangkat keras RPi 3 (perangkat keras yang digunakan untuk Mark 1 dan Picroft). Yakni, tidak melebihi rata-rata beban 3.0 saat menjalankan perintah teratas.

Informasi berguna

Kontak teknis utama - Steve Penrod (@penrods) (@ steve-mycroft di https://chat.mycroft.ai)

Karunia

Bounty untuk permintaan fitur ini adalah $ USD1000, serta Mark 1 gratis dan Koin Gold Mycroft Challenge.

medium Enhancement - proposed help wanted

Komentar yang paling membantu

Saya telah mengerjakan proyek dengan menggunakan chipset Broadcom tidak berbeda dengan BCM2837 (yang digunakan dalam RPi3) dan kami telah melihat kesuksesan yang baik menggunakan pembatalan gema Opus. Itu memang membutuhkan CPU untuk melakukannya, tetapi itu tidak terlalu buruk. Sayangnya, saya tidak memiliki waktu luang yang diperlukan untuk berkontribusi dalam perburuan hadiah, tetapi saya pikir mungkin menyarankan ini akan membantu orang lain.

Semua 20 komentar

Saya akan segera melihatnya

Informasi lebih bermanfaat:
PulseAudio mendukung pembatalan modul-echo .
Informasi lebih lanjut di sini ... https://arunraghavan.net/2016/05/improvements-to-pulseaudios-echo-cancellation/

Beberapa link semoga bermanfaat tentang modul pulsa:
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#index45h3
https://wiki.archlinux.org/index.php/PulseAudio/Troubleshooting#Enable_Echo.2FNoise -Cancelation
Modul pembatalan gema juga dapat melakukan beamforming ...

@KathyReid @penrods
Adakah yang pernah menjelajahi opsi ini (pembatalan gema audio pulsa) sebelumnya? Saya bersedia mencobanya meskipun saya hanya memiliki picroft untuk dikerjakan.

Saya yakin sudah dicoba beberapa tahun yang lalu tetapi tekanan cpu cukup tinggi. (Ini yang saya dengar jadi tidak ada pengalaman pribadi di Pi). Pembatalan gema audio pulsa berfungsi dengan baik di stasiun kerja saya sehingga akan keren jika dapat berfungsi di Pi juga. Jika terlalu intensif pada perangkat keras mungkin ada tweak yang bisa dilakukan.

Cobalah, dan lihat hasilnya!

Saya telah mengerjakan proyek dengan menggunakan chipset Broadcom tidak berbeda dengan BCM2837 (yang digunakan dalam RPi3) dan kami telah melihat kesuksesan yang baik menggunakan pembatalan gema Opus. Itu memang membutuhkan CPU untuk melakukannya, tetapi itu tidak terlalu buruk. Sayangnya, saya tidak memiliki waktu luang yang diperlukan untuk berkontribusi dalam perburuan hadiah, tetapi saya pikir mungkin menyarankan ini akan membantu orang lain.

Terima kasih atas tanggapan Anda, @roadriverrail - saran bagus!

Berpotensi menarik:
https://github.com/xiph/rnnoise
dan berdasarkan itu:
https://github.com/werman/noise-suppression-for-voice
(di atas secara signifikan lebih lambat daripada yang layak, sayangnya: ~ peningkatan pemrosesan 8: 1)

@forslund , Saat bekerja di workstation dengan sumber mycroft, apakah pembatalan gema pulsa dimuat secara otomatis atau kita harus melakukannya sendiri?

Apakah perangkat speakerphone USB seperti Jabra 410 (populer di forum) melakukan pembatalan gema? Saya menggunakan satu dengan RPi 3B + dan "Hey Mycroft, stop" sepertinya berfungsi. Meskipun, saya tidak yakin apakah ini bekerja "dengan baik" pada "volume normal".

Saat ini, tidak ada distro yang memuat pembatalan gema pulsa (yang saya ketahui).
Sesuai dengan https://www.jabra.com/business/speakerphones/jabra-speak-series/jabra-speak-410 "teknologi Digital Signal Processing (DSP)
Suara sejernih kristal tanpa gema atau atau suara terdistorsi bahkan pada tingkat volume maksimal "yang terdengar sangat mirip dengan semacam peredam gema.

@tlc karena @ el-tocino menyatakan pembatalan gema tidak dimuat secara default. Memuatnya membuat mikrofon virtual yang perlu Anda setel sebagai default untuk digunakan dengan mycroft. (pada dasarnya memilihnya di kontrol volume audio pulsa)

Bagaimana kita semua pergi dengan yang satu ini - ada pertanyaan? Adakah informasi yang dapat kami berikan untuk membantu?

Bukan pekerjaan saya, tapi hanya menabraknya;

https://github.com/voice-engine/ec

Terlihat menarik dan mencentang kotak.

Saya telah bereksperimen dengan mesin suara / ec (yang pada dasarnya merupakan pembungkus untuk speex) dan modul pembatalan gema PulseAudio (Anda harus menginstal PA 7.1 dari Debian-Jessie-Backports untuk itu) menggunakan algoritme "webrtc" dan "speex" (adrian sama sekali tidak dapat digunakan) tetapi sejauh ini tidak berhasil. Saya melihat dua alasan utama:
1) ketika musik dimainkan melalui speaker Mark-I, mikrofon Mark-I hampir hanya mengambil musik (ini disebabkan oleh konstruksi fisik), selain itu mikrofon / preamp mengambil banyak suara listrik / radio . Ini membuatnya sangat sulit untuk algoritme noise / echo-cancel apa pun.
2) Pengaturan waktu RPI3 dari jam internal tidak cukup stabil untuk jenis pemrosesan waktu nyata ini - timedrift permanen juga membingungkan algoritma pembatalan gema.
Saya akan segera mencoba "rnnoise" (sudah dikompilasi untuk RPI tetapi beberapa masalah saat mengkonfigurasinya untuk PA) tetapi tidak harus terlalu ekspektasi karena alasan di atas

Saya bersedia mempertimbangkan solusi yang memerlukan tambahan kecil dan murah atau modifikasi pada Mark 1, misalnya busa akustik yang memisahkan mikrofon dan speaker atau perutean ulang kabel. Tapi tidak ada perubahan level dewan.

Beamforming berdasarkan posisi mic plus mic usb yang murah mungkin bisa jadi pilihan. Satu atau dua mikrofon mini ini (cari "overfly portable usb 2.0 mic") yang dipasang di port yang digabungkan dengan audio dari mikrofon yang ada yang dijalankan melalui beamformer seharusnya dapat melakukan aec dan meningkatkan kemampuan mendengarkan. Saya belum mencobanya sendiri, sayangnya.

Setelah beberapa percobaan lagi, saya memiliki konfigurasi dengan modul pembatalan gema PulseAudio yang bekerja secara wajar * dengan level volume hingga 5 (maksimum Mark-1 adalah 11) dalam jarak kira-kira. 4 kaki. Ada lebih banyak ruang untuk mengubah parameter yang mungkin meningkatkan keandalan.
Saya belum mencoba tweaker perangkat keras (busa akustik). Selain itu, saya sedang mempertimbangkan perubahan dalam Layanan Audio Mycroft, misalnya musik bebek / bisu segera setelah kata bangun terdeteksi untuk mendapatkan ucapan yang bersih ...

* tergantung pada materi musiknya, semakin banyak kompresi (lihat " perang kenyaringan ") semakin kurang dapat diandalkan kerjanya.

Saya percaya @forslund sudah melakukan beberapa pekerjaan di bagian merunduk. Percaya itu sudah ada di bagian PR / Masalah di suatu tempat.

Dengan Anda, AEC harus dikombinasikan dengan audio ducking.

Saya menggunakan busa isolasi pintu / jendela (serupa: https://www.homedepot.com/p/Frost-King-3-4-in-x-5-16-in-x-10-ft-Black-Rubber -Foam-Weatherseal-Tape-R534H / 202262324) untuk membuat penghalang di sekitar bagian depan mikrofon antara papan sirkuit muka dan pelat depan. Selain itu, saya juga menutupi bagian belakang speaker dengan busa.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat