[erledigt] pulseaudio Fehler beim Setup von tts auf bluetooth speaker

Begonnen von PSI69, 27 Januar 2023, 11:06:39

Vorheriges Thema - Nächstes Thema

PSI69

Moin!
Ich stehe vor einem Problem, beim Setup der tts Audio Ausgabe auf einen Bluetooth Speaker.

Vorgegangen bin ich nach https://wiki.fhem.de/wiki/Text2Speech. Das passt auch alles soweit, nur beim Ausführen von 'systemctl status pulseaudio' ist ein Zugriff verweigert im Log:

● pulseaudio.service - PulseAudio Sound System
   Loaded: loaded (/etc/systemd/system/pulseaudio.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2023-01-27 10:47:17 CET; 1min 40s ago
Main PID: 314 (pulseaudio)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/pulseaudio.service
           └─314 /usr/bin/pulseaudio

Jan 27 10:47:16 fhem pulseaudio[314]: N: [pulseaudio] main.c: Running in system mode, forcibly disabling exit idle time.
Jan 27 10:47:16 fhem pulseaudio[314]: W: [pulseaudio] main.c: OK, so you are running PA in system mode. Please make sure that you actually do want to do that.
Jan 27 10:47:16 fhem pulseaudio[314]: W: [pulseaudio] main.c: Please read http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSy
Jan 27 10:47:16 fhem pulseaudio[314]: W: [pulseaudio] authkey.c: Failed to open cookie file '/var/run/pulse/.config/pulse/cookie': No such file or directory
Jan 27 10:47:16 fhem pulseaudio[314]: W: [pulseaudio] authkey.c: Failed to load authentication key '/var/run/pulse/.config/pulse/cookie': No such file or director
Jan 27 10:47:16 fhem pulseaudio[314]: W: [pulseaudio] authkey.c: Failed to open cookie file '/var/run/pulse/.pulse-cookie': No such file or directory
Jan 27 10:47:16 fhem pulseaudio[314]: W: [pulseaudio] authkey.c: Failed to load authentication key '/var/run/pulse/.pulse-cookie': No such file or directory
Jan 27 10:47:17 fhem systemd[1]: Started PulseAudio Sound System.
Jan 27 10:47:17 fhem pulseaudio[314]: E: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2
Jan 27 10:47:23 fhem pulseaudio[314]: E: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2
~


Das sieht für mich nach einem Berechtigungsthema aus?!?

Versucht habe ich noch:
   - 'sudo adduser fhem pulse-access'
   - 'sudo usermod -a -G bluetooth fhem'
... zusätzlich zum Wiki, hat aber nichts gebracht.

Spätestens hier ist dann 'Feierabend':
pi@fhem:~ $ sudo pacmd set-sink-volume 0 65535
No PulseAudio daemon running, or not running as session daemon.


Fhem läuft auf einem RPi4 mit (noch) Buster.

Jemand einen Tip von Euch?
Danke Peter
FHEM 6 auf RPi 4 unter Buster mit inzwischen einem ganzen Zoo von Geräten...

Otto123

#1
Hallo Peter,

Zitat von: PSI69 am 27 Januar 2023, 11:06:39
Jemand einen Tip von Euch?
Ja: In Abwandlung des Wlan Spruchs: wer Bluetooth kennt nimmt die 3,5 Klinke  ;D
Ich habe das mal hier durch konstruiert, allerdings ebend nur pulseaudio - nicht speziell Bluetooth (was, glaube ich, nicht Dein Problem ist)
Schau in dem Artikel nach pulseaudio
Vielleicht hilft es Dir.

Gruß Otto

P.S. Ich meine, der Wiki Artikel ist eine Momentaufnahme, die so in einem Setup funktioniert hat. Ich bin damit auch nicht zum Ziel gekommen.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

frank

Failed to open cookie file '/var/run/pulse/.config/pulse/cookie': No such file or directory
gibt es dort ein cookie?
vielleicht wird es nur an anderer stelle abgelegt?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

schwatter

Hallo Peter,

ich schmeiße BlueAlsa in den Raum. Lange Zeit aufm Raspi genutzt.
Jetzt auf potenterer Hardware in Proxmox und Ubuntu-Server.

Vom Handling her finde ich BlueAlsa einfacher gestrickt.

Schau es dir mal an.

Gruß schwatter

PSI69

@All
Danke für Eure Hinweise! Ich bin dann mal am Lesen... Ergebnisse gibt es später hier.
Peter
FHEM 6 auf RPi 4 unter Buster mit inzwischen einem ganzen Zoo von Geräten...

PSI69

So, den pulseaudio Fehler konnte ich nicht beseitigen, ich bin dann also zu BlueAlsa gewechselt. Ging ja smart die Installation... Die Ausgabe per aplay in der Shell klappt auch, allerdings brüllt mich mein Lautsprecher bei einem Test mit irgendwelchen wirren lauten Geräuschen an, mehr nicht.

@schwatter
aplay schein ja nicht so ohne weiteres mit den generierten MP3's klar zu kommen - wie hast Du den Aufruf aus dem FHEM Text2Speech realisiert / konfiguriert? Mit aplay oder play? Ein List wäre schön... :)
Danke Peter
FHEM 6 auf RPi 4 unter Buster mit inzwischen einem ganzen Zoo von Geräten...

Otto123

aplay kann mp3 nicht. Per default nimmt er mplayer - der war irgendwann mal mist geworden. Geht aber glaube ich wieder.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

schwatter

#7
Moin,

das mplayer mal defekt war, hab ich auch so im Hinterkopf. Nutze auch wieder mplayer.

@Peter


Internals:
   ALSADEVICE default
   DEF        default
   FUUID      5c463141-f33f-86cf-7e93-ef25da4f4821f225
   MODE       DIRECT
   NAME       TTS
   NR         101
   STATE      Initialized
   TYPE       Text2Speech
   VOLUME     100
   eventCount 145
   READINGS:
     2023-01-27 17:06:55   duration        4
     2023-01-27 17:06:55   endTime         00:00:00
     2023-01-27 17:06:59   lastFilename    cache/8ed2903cd5c419dde24e4b4f222d15e5.mp3
     2023-01-27 17:06:59   playing         0
   helper:
     TTS_PlayerOptions
     Text2Speech:
Attributes:
   TTS_APIKey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   TTS_Language Deutsch
   TTS_MplayerCall /usr/bin/mplayer
   TTS_Ressource Google
   TTS_UseMP3Wrap 1
   TTS_VolumeAdjust 50
   room       12.System


Ändern der Lautstärke für BlueAlsa im Terminal.

alsamixer -D bluealsa

Gruß schwatter

Otto123

wobei man doch für Google keinen APIKey braucht?  :-\
Alternativ sox play:
defmod soxTTS Text2Speech hw:0,0
attr soxTTS TTS_MplayerCall AUDIODEV={device} play -q -v $(({volume}*{volumeadjust}/10000)).$(({volume}*{volumeadjust}%10000)) {file}
Bei sox play musste das alsa device anders eingetragen werden! mplayer hw=0.0
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

schwatter

Genau, der Key ist noch vom rumspielen. Den braucht Google nicht.

Gruß schwatter

PSI69

Danke@all
Probiere ich aus, habe mich nur gerade etwas isoliert zu Hause, Corona...
Peter
FHEM 6 auf RPi 4 unter Buster mit inzwischen einem ganzen Zoo von Geräten...

PSI69

So, hiermit bekomme ich nun etwas zu hören:
Internals:
   ALSADEVICE bluealsa
   DEF        bluealsa
   FUUID      63d38cf7-f33f-d09e-4658-42a1f84b7f10ee00
   MODE       DIRECT
   NAME       MyTTS
   NR         827
   STATE      Initialized
   TYPE       Text2Speech
   VOLUME     10
   eventCount 52
   READINGS:
     2023-01-30 18:17:11   duration        19
     2023-01-30 18:17:11   endTime         00:00:00
     2023-01-30 18:17:31   lastFilename    cache/e797875fd0ef59ddca4ad6fd04652ed3.mp3
     2023-01-30 18:17:31   playing         0
     2023-01-30 18:16:35   volume          10
   helper:
     TTS_PlayerOptions
     Text2Speech:
Attributes:
   TTS_Language Deutsch
   TTS_MplayerCall /usr/bin/mplayer
   TTS_Ressource Google
   TTS_UseMP3Wrap 1
   alias      Text 2 Speech Sprachausgabe
   icon       alexa2
   room       Infrastruktur->Audio
   verbose    4


Allerdings mußte ich meinen Raspi neu booten - nach meinem Versuch mit 'aplay -D bluealsa /usr/share/sounds/alsa/Front_Center.wav' per ssh letztens, kam nichts mehr aus dem Speaker:
pi@fhem:~ $ aplay -D bluealsa /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
aplay: set_params:1403: Unable to install hw params:
ACCESS:  RW_INTERLEAVED
FORMAT:  S16_LE
SUBFORMAT:  STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: 48000
PERIOD_TIME: (92879 92880)
PERIOD_SIZE: (4458 4459)
PERIOD_BYTES: (8916 8918)
PERIODS: (4 6)
BUFFER_TIME: (464395 464396)
BUFFER_SIZE: 22291
BUFFER_BYTES: 44582
TICK_TIME: 0


Laut bluetoothctl war der aber noch am raspi connected (und per Handy bespielbar):
pi@fhem:~ $ bluetoothctl
Agent registered
[Soundcore 3]#


Nach dem Restart vom Pi mußte ich mit bluetoothctl allerdings noch einen manuellen connect ausführen, ich dachte nach pair und trust passiert das automatisch?!?
[bluetooth]# connect F4:2B:7D:01:66:9B
Attempting to connect to F4:2B:7D:01:66:9B
[CHG] Device F4:2B:7D:01:66:9B Connected: yes
Connection successful
[CHG] Device F4:2B:7D:01:66:9B ServicesResolved: yes
[Soundcore 3]#


Wie macht ihr das, den bluetooth speaker nach einem reboot automatisch verbinden? Das passiert doch automatisch?

Anderes Thema: Nutzt wer die Amazon Stimme und reicht ihr dann mit den Gratis Zugriffen? Theoretisch müßten ja alle Ausgaben aus dem Cache kommen (klar, ab dem 2. Durchgang)?

Danke Peter
FHEM 6 auf RPi 4 unter Buster mit inzwischen einem ganzen Zoo von Geräten...

schwatter

Nabend,

nimm dazu aufm Raspi die /etc/rc.local
In etwa so


#!/bin/bash
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
#_IP=$(hostname -I) || true
#if [ "$_IP" ]; then
#  printf "My IP address is %s\n" "$_IP"
#fi
sleep 5
echo -e "connect 11:75:58:45:59:81" | bluetoothctl

exit 0


Außerdem musste ich die /etc/asound.conf so anpassen.

pcm.!default {
type plug
slave.pcm {
type bluealsa device "11:75:58:45:59:81"
profile "a2dp"
delay 10000
}
}


Gruß schwatter

PSI69

Hi @schwatter
Das war der richtige Hinweis.

In der rc.local brachte der Aufruf mit '-e' allerdings einen Fehler, ohne '-e' klappte dies manuell.
Damit die rc.local beim boot gezogen wird, fehlte noch die Systemd-Unit dafür.
Und zum Schluß waren die 5 Sekunden Wartezeit zu kurz, der 'Holzhammer' mit 60 Sekunden Wartezeit hat's gerichtet, kommt auf die paar Sekunden ohne Audio beim Restart nicht an.

Die Modifikationen in der /etc/asound.conf waren bei mir nicht notwendig.

Jetzt muss ich nur noch ein wenig mit der Amazon Stimme versuchen - die von Google klingt echt nicht so toll. Aber das ist bekanntlich Geschmackssache...

Gruß Peter
FHEM 6 auf RPi 4 unter Buster mit inzwischen einem ganzen Zoo von Geräten...

Otto123

Hallo Peter,

aus neu mach alt :) Zitat Ubuntu Wiki  ::)
ZitatHinweis:
rc.local ist seit dem Jahre 1983 obsolet.
Systemd unit hätte gereicht :)
https://wiki.ubuntuusers.de/rc.local/
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz