SEPIA-Framework / sepia-docs

Documentation and Wiki for SEPIA. Please post your questions and bug-reports here in the issues section! Thank you :-)
https://sepia-framework.github.io/
237 stars 16 forks source link

Mikrofon nicht eingerichtet/keine Berechtigung trotz Reboot auf RPi #62

Open Kackpappe opened 4 years ago

Kackpappe commented 4 years ago

Hallo,

soeben habe ich die Anleitung (SEPIA-Framework Client Installation zur Installation des SEPIA-Clients auf dem Raspberry Pi durchgeführt (benutzt wird ein ReSpeaker 4-Mic Array). Die unter Punkt 4 (Configure the Client via Remote Connection) habe ich alle durchgeführt. Auch die Antworten über die Soundausgabe erhalte ich. Im SEPIA Control HUB habe ich mir entsprechend die ID geholt und per test client erhalte ich "It's working" als Antwort. Wenn ich jedoch das Mikrofon triggern will, erscheint folgendes im Terminal:

Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-wake-word":{"state":"error","msg":"Could not start audio source"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-wake-word":{"state":"inactive"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-wake-word":{"state":"active"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-state":{"state":"idle"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-speech":{"type":"asr_error","msg":"Microphone has not been recognized properly or access was denied."}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-state":{"state":"listening"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-state":{"state":"loading"}}} HTTP event: {"name":"remote-button","data":{"deviceId":"rpi1","button":"mic"}}

Habe ich etwas übersprungen bzw. übersehen bei der Einrichtung ?

PS: Auch 3 mal neustarten hat noch keinen Erfolg gebracht :D

neporamone commented 4 years ago

hi,

bin noch ganz neu in der Materie und habe gerade meinen ersten Client erfolgreich installiert "ohne" Microphone. Deshalb bin ich die Anleitung rauf und runter gegangen - dementsprechend hast du auch Variant 2: ReSpeaker 2 Mic HAT - Speakers via ReSpeaker audio jack durchgeführt. Siehe dazu https://github.com/SEPIA-Framework/sepia-installation-and-setup/blob/master/sepia-client-installation/rpi/README.md#variant-2-respeaker-2-mic-hat---speakers-via-respeaker-audio-jack

Ist zwar laut Name für audio-jack, aber wenn ich das Script anschaue, könnte es auch für deinen fall sein. Eventuell muß noch das Script _update_respeakerboot.sh an deiner hardware angepasst werden. Alles ohne gewähr !!!

tschau nepo

Kackpappe commented 4 years ago

Hi,

Danke für den Hinweis, aber alles schon durchgeführt :-) Ich denke dass ich auch einen Schritt weiter bin: Im Script run.sh sehe ich, dass der im SEPIA-Client mitgelieferte Chromium im Kiosk-Mode ausgeführt werden soll (im headless mode). Durch weitere Zusätze soll dann wohl auch Zugriff auf das Mikrofon gewährt werden. Das Script wird zwar durchlaufen, Chromium wird beim Start jedoch nicht ausgeführt.

Die Aktivitäten im Control Hub habe ich mit "normalen" Chromium durchgeführt.

Mit ein bisschen Experimentieren bin ich zur folgender Erkenntnis gekommen: Abändern des Scripts, so dass nur Chromium aufgerufen wird (unabhängig vom mode). chromium-browser funktioniert. chromium-browser --allow-insecure-localhost funktioniert. chromium-browser --allow-insecure-localhost --kiosk "$client_url?isApp=true funktioniert.

Sobald der Zusatz --user-data-dir=$chromedatadir aufgenommen wird, startet chromium nicht mehr.

neporamone commented 4 years ago

hi, funktioniert es jetzt ? Reines Eigeninteresse ;) Möchte mir genau das gleiche Micrphone zulegen und es wäre natürlich perfekt, wenn du es ans laufen gebracht hast. Wie gesagt, habe noch kein Mikrofon und habe eine "normale" Installation durchgeführt mit 2: Set SEPIA Client mode to 'headless'

Das Script wird zwar durchlaufen, Chromium wird beim Start jedoch nicht ausgeführt

Laut status.sh bei mir bash status.sh Chromium with SEPIA is: active Xvfb server is: active CLEXI server is: active

Tschau nepo

Kackpappe commented 4 years ago

Laut status.sh ist bei mir auch alles aktiv.

Startet bei Dir denn beim Boot direkt der chromium im Kiosk-Mode?

neporamone commented 4 years ago

Startet bei Dir denn beim Boot direkt der chromium im Kiosk-Mode?

Ähm ??? Wie kann man das feststellen bzw. in welchem Log-File unter chromium finde ich die Infos - es gibt so einige logfiles ...

sepia-assistant commented 4 years ago

Hallo,

Im Script run.sh sehe ich, dass der im SEPIA-Client mitgelieferte Chromium im Kiosk-Mode ausgeführt werden soll (im headless mode). Durch weitere Zusätze soll dann wohl auch Zugriff auf das Mikrofon gewährt werden. Das Script wird zwar durchlaufen, Chromium wird beim Start jedoch nicht ausgeführt.

Ja genau, das ganze funktioniert so, dass beim ersten Start von Chromium der Ordner --user-data-dir=$chromedatadir angelegt wird. Danach ist es wichtig dass man die Neustart Befehle präzise nach Anleitung ausführt, denn erst beim zweiten Start von Chromium können die entsprechenden Mikrofon Berechtigungen gesetzt werden. Chromium ohne --user-data-dir=$chromedatadir wird nur funktionieren, wenn du die Mikrofon Berechtigungen per Hand über ein Display setzt. Diese Schritte konnte ich leider noch nicht userfreundlicher gestalten :-/

Ich würde empfehlen den Ordner ~/sepia-client/chromium einmal zu löschen und dann neu zu erstellen via:

Danach einmal den RPi neustarten lassen und das Setup via SEPIA Control HUB wiederholen.

Über ~/sepia-client/setup.sh könntest du auch mal den "pseudo-headless" Modus versuchen und via angeschlossenem Display und Keyboard debuggen. Das kommende Update des Client gibt noch mehr Details zu den Fehlern aus, ich hoffe dadurch wird es etwas leichter.

Ähm ??? Wie kann man das feststellen bzw. in welchem Log-File unter chromium finde ich die Infos - es gibt so einige logfiles ...

Die Chromium Logs sind leider nicht zugänglich :-/. Wichtigste Orte zum Debuggen sind die ~/clexi/log.out , das Status Skript in ~/sepia-client/status.sh (falls das schon existiert in deiner Version) und das Remote Terminal im SEPIA Control HUB. Wenn die Verbindung über den Control HUB schon geklappt hat, dann war der Bootvorgang wohl korrekt.

Grüße, Florian

Kackpappe commented 4 years ago

Hi,

habe die kleine Anleitung mal befolgt. Ordner gelöscht, beides Scripts gestartet inkl. reboot. CLEXI-Verbindung funktioniert wunderbar, auch der Satz "ready for setup" ertönt. Der Befehl call login [...] funktioniert auch, nach einem anschließenden Reboot nun eine sehr ähnliche Fehlermeldung:

Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-wake-word":{"state":"error","msg":"Could not start audio source"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-wake-word":{"state":"inactive"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-wake-word":{"state":"active"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-state":{"state":"idle"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-speech":{"type":"asr_error","msg":"Microphone has not been recognized properly or access was denied."}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-state":{"state":"listening"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-state":{"state":"loading"}}} HTTP event: {"name":"remote-button","data":{"deviceId":"rpi1","button":"mic"}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-wake-word":{"state":"error","msg":"Could not start audio source"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-wake-word":{"state":"inactive"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","sepia-wake-word":{"state":"active"}}} Broadcaster event: {"broadcast":{"client":"rpi1_chrome_app_v0.22.0","deviceId":"rpi1","event":{"state":"active","user":"uid1011"}}}

Neu: Beim Event sepia-wake-work steht nun Could not start audio source. Evtl. hilft dieser kleine Zusatz schon weiter :)

sepia-assistant commented 4 years ago

Neu: Beim Event sepia-wake-work steht nun Could not start audio source. Evtl. hilft dieser kleine Zusatz schon weiter :)

Hmm ich vermute das kommt direkt vom Microphone has not been recognized properly or access was denied. Funktioniert das Mikrofon in Linux eigentlich korrekt? Da ansonsten alles klappt vermute ich, dass eventuell das Mikrofon nicht richtig als Standardgerät erkannt wird im Chromium.

Kackpappe commented 4 years ago

Das Mikrofon selbst habe ich mal mit Audacity getest und es hat soweit funktioniert. Daher stimme ich der Theorie zu, dass es wohl nicht als Standard in Chrome gesetzt ist.

Nun habe ich das ganze einfach neu aufgesetzt (geht ja relativ zügig) und nun haben wir folgende Situation:

Das Mikrofon wird erkannt und im Control Hub kann ich entsprechend das Mikrofon aktivieren und er führt die Aktivität auch aus. Klingt soweit super! 👍 Nur zwei Wermutstropfen:

  1. Ich habe zwei kleine USB-Boxen an den Pi zur Audio-Ausgabe angeschlossen. In der ersten Installation haben die noch funktioniert, nun erhalte ich gar keinen Sound.
  2. Die Spracherkennung ist auf Englisch :D (Hier aber schon mal sehr stark dass er den Befehl den ich eigentlich auf Deutsch geschrieben habe auch im Englischen versteht^^)

Ich meine das zweite Problem hatte hier schon mal jemand, da werde ich morgen mal nach den Issues schauen.

Soweit gute Nachrichten, das letzte Quäntchen bekommen wir auch noch hin! :)

neporamone commented 4 years ago

hi @Kackpappe

Soweit gute Nachrichten, das letzte Quäntchen bekommen wir auch noch hin! :)

Das hoffe ich doch auch !!!

1. Ich habe zwei kleine USB-Boxen an den Pi zur Audio-Ausgabe angeschlossen. In der ersten Installation haben die noch funktioniert, nun erhalte ich gar keinen Sound.

Hast du die _update_respeakerboot.sh ausgeführt ? Wenn ja, die ist eigentlich für ReSpeaker 2 Mic HAT gedacht, die u.a. ein Klinkenoutput hat. Laut Script wird der Klinkenoutput vom Rasperry deaktiviert und dafür soll der ("bessere") vom Respeaker genommen werden. ... bootfile="/boot/config.txt" sed -i 's/^dtparam=audio=on/dtparam=audio=off/' $bootfile ... Vielleicht liegt es daran, du kannst mal die config.txt nach dtparam=audio=off durchsuchen. Vielleicht reicht dann schon ein auskommentieren.

2\. Die Spracherkennung ist auf Englisch :D (Hier aber schon mal sehr stark dass er den Befehl den ich eigentlich auf Deutsch geschrieben habe auch im Englischen versteht^^)

habe bisher es noch nicht richtig am laufen bekommen (noch keine Befehle gesendet ...), aber bei der Sepia Client Connections antwortet er mir auf deutsch

Broadcaster event: {"broadcast":{"client":"o1_chrome_app_v0.22.0","deviceId":"o1","sepia-speech":{"type":"tts_speak","msg":"Hab ich doch schon gesagt, es funktioniert!"}}}

Schau mal hier, einzurichten z.B. mit dem Web-Client unter http://Server-IP:20721/app/index.html natürlich mit deinem User-Account angemeldet Tschau nepo

rubipopubi commented 4 years ago

Hat jemand eine Lösung für das Problem? Konnte es genauso wie oben beschrieben bei einem Rpi3 mit 4Mic-Array reproduzieren. Allerdings hat das Mic zuerst problemlos funktioniert, der Sound über die Rpi-Klinkenbuchse jedoch nicht. Laut Seeedstudio soll nach der Installation des Mic Arrays die Soundausgabe in der raspi-config auf den headset output gestellt werden. Das funktioniert auch, danach funktioniert jedoch das Mikrofon im Sepiaclient nicht mehr. Das Löschen von chromium wie oben beschrieben löst bei mir das Problem nicht. Mir scheint, dass es irgendwie daran liegt, dass das 4-Mic-Array keine eigene Soundausgabe hat und dass dennoch bei der Installation die Standardklinke vom Rpi deaktiviert wird und anschließend wieder aktiviert werden muss. Kann es sein, dass Sepia irgendwo damit in Konflikt gerät? Bzw. kann man Ausgabe und Aufnahme im Client manuell einstellen? Kenne mich mit alsa etc. nicht wirklich aus.

neporamone commented 4 years ago

Mir scheint, dass es irgendwie daran liegt, dass das 4-Mic-Array keine eigene Soundausgabe hat und dass dennoch bei der Installation die Standardklinke vom Rpi deaktiviert wird und anschließend wieder aktiviert werden muss

laut update_respeaker_boot.sh, die du wahrscheinlich ausgeführt hast, passiert genau das: bootfile="/boot/config.txt" sed -i 's/^dtparam=audio=on/dtparam=audio=off/' $bootfile

In deiner config.txt kannst du es wieder rückgängig machen. Ob damit dein Problem gelöst ist, weiß ich nicht. Man braucht schon eine passende .asoundrc. Bin da auch gerade am verzweifeln siehe https://github.com/SEPIA-Framework/sepia-docs/issues/63#issue-671595661

Viel Glück noch und tschau neporamone

rubipopubi commented 4 years ago

Hey, danke für den Tipp bzgl. update_respeaker_boot.sh, die hatte ich allerdings gar nicht ausgeführt. :/ seltsam das alles...

EDIT: Ich habe jetzt das 4Mic Array mit USB-Lautsprechern (nicht über Klinke!) zum laufen gebracht, indem ich folgendes in /usr/share/alsa/alsa.conf eingetragen habe

defaults.ctl.card 0 defaults.pcm.card 0

und das Beta Script von hier verwendet habe um Audio Input und Output zu definieren:

((https://github.com/SEPIA-Framework/sepia-docs/issues/27#issuecomment-682402414))

fquirin commented 4 years ago

EDIT: Ich habe jetzt das 4Mic Array mit USB-Lautsprechern (nicht über Klinke!) zum laufen gebracht, indem ich folgendes in /usr/share/alsa/alsa.conf eingetragen habe

Vielleicht eine nützliche Info dazu. Gemäß dem Blog Artikel zum Raspberry Pi OS vom Mai wurde im Update Folgendes geändert:

"Up until now, both the internal audio outputs on Raspberry Pi – the HDMI socket and the headphone jack – have been treated as a single ALSA device, with a Raspberry Pi-specific command used to choose which is active. Going forward, we are treating each output as a separate ALSA device; this makes managing audio from the two HDMI sockets on Raspberry Pi 4 easier and should be more compatible with third-party software."

Demnach heißt defaults.ctl.card 0 -> 'ALSA uses “card 0” – which is HDMI'

rubipopubi commented 4 years ago

Demnach hätte ich dann den Output zu HDMI geändert? Warum funktioniert dann damit der USB Speaker (also ausschließlich über USB angeschlossen, nicht über Klinke)? Bin grade etwas verwirrt XD

fquirin commented 4 years ago

So ganz verstehe ich es auch nicht, vielleicht wird dadurch die Klinke deaktiviert und das USB Gerät kriegt Priorität :thinking:

rubipopubi commented 4 years ago

Interessant... Ich werde mal ein bisschen rumexperimentieren.

dirtydother commented 3 years ago

Neu: Beim Event sepia-wake-work steht nun Could not start audio source. Evtl. hilft dieser kleine Zusatz schon weiter :)

Hmm ich vermute das kommt direkt vom Microphone has not been recognized properly or access was denied. Funktioniert das Mikrofon in Linux eigentlich korrekt? Da ansonsten alles klappt vermute ich, dass eventuell das Mikrofon nicht richtig als Standardgerät erkannt wird im Chromium.

Hallo,

ich habe dasselbe Problem, allerdings habe ich das System mittlerweile mehrfach neu aufgesetzt, habe jedoch stets immer das Problem, dass das Mikrofron (Respeaker 4-Mic) nicht erkannt wird: Broadcaster event: {"broadcast":{"client":"o1_chrome_app_v0.22.0","deviceId":"o1","sepia-speech":{"type":"asr_error","msg":"Microphone has not been recognized properly or access was denied."}}}

Eine Aufnahme via arecord oder audacity funktioniert tadellos. Vermutlich wird bei mir tatsächlich das Mikro nicht im Chromium erkannt. Aktiviere ich wieder die OS-GUI und öffne dort Chrome, wird unter chrome://settings/content/microphone überhaupt kein Dropdown zur Standard-Mikro-Auswahl angezeigt.

Hat jemand eine Idee, was ich falsch gemacht haben könnte oder wie ich das Mikrofon doch noch als Standard-Mikro in das Chromium im Kiosk Mode gesetzt bekomme?

rubipopubi commented 3 years ago

Hallo,

ich habe dasselbe Problem, allerdings habe ich das System mittlerweile mehrfach neu aufgesetzt, habe jedoch stets immer das Problem, dass das Mikrofron (Respeaker 4-Mic) nicht erkannt wird: Broadcaster event: {"broadcast":{"client":"o1_chrome_app_v0.22.0","deviceId":"o1","sepia-speech":{"type":"asr_error","msg":"Microphone has not been recognized properly or access was denied."}}}

Hey @dirtydother,
Versuch mal, mit den beta scripts ( von hier: #27) den audio input über das setup script auf "ac108" zu ändern.

dirtydother commented 3 years ago

Hi,

das Skript hat geholfen! Einwandfrei! Vielen Dank! :-)

Viele Grüße

fquirin commented 3 years ago

Freut mich, dass es damit geklappt hat! Ich habe die Funktionalität mittlerweile in die neue Version v2.5.1 eingebaut. Wäre cool zu erfahren ob es damit auch klappt ^^ :grin:

dirtydother commented 3 years ago

Habe mir nun ohnehin einen Raspi 4 gegönnt, ergo teste ich es die Tage einfach mal mit der neuen Version und gebe Rückmeldung.

rubipopubi commented 3 years ago

Freut mich, dass es damit geklappt hat! Ich habe die Funktionalität mittlerweile in die neue Version v2.5.1 eingebaut. Wäre cool zu erfahren ob es damit auch klappt ^^ 😁

Klappt problemlos mit 2.5.1 und Client v.0.23.0. 🥰

dirtydother commented 3 years ago

Freut mich, dass es damit geklappt hat! Ich habe die Funktionalität mittlerweile in die neue Version v2.5.1 eingebaut. Wäre cool zu erfahren ob es damit auch klappt ^^ 😁

Klappt problemlos mit 2.5.1 und Client v.0.23.0. 🥰

Kann ich bestätigen! :-)