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 (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
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 (https://heinz-otto.blogspot.com/2022/03/debian-setup-mal-nicht-all-inclusive.html#sound), 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.
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?
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
@All
Danke für Eure Hinweise! Ich bin dann mal am Lesen... Ergebnisse gibt es später hier.
Peter
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
aplay kann mp3 nicht. Per default nimmt er mplayer - der war irgendwann mal mist geworden. Geht aber glaube ich wieder.
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
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
Genau, der Key ist noch vom rumspielen. Den braucht Google nicht.
Gruß schwatter
Danke@all
Probiere ich aus, habe mich nur gerade etwas isoliert zu Hause, Corona...
Peter
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
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
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
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/
Moin & danke @Otto123
... hab's geändert, die 80'er sind ja nun doch vorbei :)
Klappt nun mit den richtigen Anhängigkeiten auch ohne sleep:
# /etc/systemd/system/soundcore3.service
[Unit]
Description=Anker Soundcore 3 Speaker verbinden
Wants = network-online.target bluealsa.service
After = bluealsa.service
[Service]
Type = forking
RemainAfterExit = yes
ExecStart = /opt/fhem/FHEM/connectSoundcore3.sh
ExecStop = /opt/fhem/FHEM/disconnectSoundcore3.sh
[Install]
WantedBy = multi-user.target
Gruß Peter
... und - Tante Polly klingt echt besser als Tante Google :)
Peter
Peter, du hast mich animiert, Polly auch endlich mal fertig zu installieren.
Laut Aws habe ich im Mai 2019 gestartet ;D Freundliche Aufforderungen meiner Frau konnte ich bis Dato immer gut ignorieren.
Gruß schwatter
@schwatter
Immer wieder gern doch ;D
Peter