Seite 1 von 1

Playsound

Verfasst: Samstag 4. September 2021, 08:05
von DoctorWho_15
Hallo
ich hänge mal wieder an ein Problem fest

Ich habe deb Fehler auch schon eingegrenzt undd es geht um das Modul Playsound

Code: Alles auswählen

import gtts
from playsound import playsound
tts=gtts.gTTS("ich möchte eine Pizza.",lang="de")
tts.save("test.mp3")
playsound("test.mp3")
Die Module gTTS, Playsound, habe ich bereits Installiert
und das Modul pygobject ist bereits istalliert gewesen.

Hier nun die Fehlermeldung:
playsound is relying on another python subprocess. Please use `pip install pygobject` if you want playsound to run more efficiently.
Traceback (most recent call last):
File "/home/pi/.local/lib/python3.7/site-packages/playsound.py", line 261, in <module>
playsound(argv[1])
File "/home/pi/.local/lib/python3.7/site-packages/playsound.py", line 163, in _playsoundNix
gi.require_version('Gst', '1.0')
File "/usr/lib/python3/dist-packages/gi/__init__.py", line 129, in require_version
raise ValueError('Namespace %s not available' % namespace)
ValueError: Namespace Gst not available
Traceback (most recent call last):
File "/media/pi/USB DISK/texttospeech.py", line 5, in <module>
playsound("test.mp3")
File "/home/pi/.local/lib/python3.7/site-packages/playsound.py", line 254, in <lambda>
playsound = lambda sound, block = True: _playsoundAnotherPython('/usr/bin/python3', sound, block, macOS = False)
File "/home/pi/.local/lib/python3.7/site-packages/playsound.py", line 229, in _playsoundAnotherPython
t.join()
File "/home/pi/.local/lib/python3.7/site-packages/playsound.py", line 218, in join
raise self.exc
File "/home/pi/.local/lib/python3.7/site-packages/playsound.py", line 211, in run
self.ret = self._target(*self._args, **self._kwargs)
File "/home/pi/.local/lib/python3.7/site-packages/playsound.py", line 226, in <lambda>
t = PropogatingThread(target = lambda: check_call([otherPython, playsoundPath, _handlePathOSX(sound) if macOS else sound]))
File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/usr/bin/python3', '/home/pi/.local/lib/python3.7/site-packages/playsound.py', 'test.mp3']' returned non-zero exit status 1.
>>>
Ich hoffe mir kann einer sagen wo ich ein Fehler gemacht habe?

Re: Playsound

Verfasst: Samstag 4. September 2021, 10:45
von Dennis89
Hallo,

mal ein Versuch. Wo liegt die test.mp3? Benutze msl absolute Pfade.

Heißt das eig ‚tts.save’ oder ,gtts.save‘?

Grüße
Dennis

Re: Playsound

Verfasst: Samstag 4. September 2021, 11:10
von DoctorWho_15
Hallo Dennis,

Die Datei liegt auf dem USB Laufwerk (/media/pi/USB DISK) und die Datei wird da auch gespeichert.

die MP3 Datei kann ich auch abhören über den VLC Player

Code: Alles auswählen

import gtts
from playsound import playsound
Datei=r"/media/pi/USB DISK/test.mp3"
tts=gtts.gTTS("ich möchte eine Pizza.",lang="de")
tts.save(Datei)
playsound(Datei)
es heisst tts.save da das ergebniss von gtts.GttS gespeichert wird

Der Fehler bleibt also der gleiche.

Gruß Claus

Re: Playsound

Verfasst: Samstag 4. September 2021, 11:29
von sparrow
Ich würde darüber nachdenken ein anderes Modul zu verwenden. Wenn ich das richtig sehe, führt sich das Modul selbst mit Subprocess aus. Das halte ich für ein sehr seltsames Konstrukt.

Re: Playsound

Verfasst: Samstag 4. September 2021, 11:32
von rogerb
@Dennis89,
Heißt das eig ‚tts.save’ oder ,gtts.save‘?
Mit

Code: Alles auswählen

tts=gtts.gTTS("ich möchte eine Pizza.",lang="de")
wird eine Instanz der gTTS Klasse erzeugt, hier mit dem Namen "tts". Diese hat eine Instanzmethode "save()" welche den vom gTTS Objekt erzeugten audio stream als mp3 speichert.
Würde man das gTTS Objekt "gtts" nennen, würde man damit das importierte "gtts" Modul überschreiben, was keine gute Idee wäre.

@DoctorWho_15
Das Script funktioniert problemlos auf Windows, hat aber einige Probleme auf Linux (Debian) also auch Raspbian (Raspberry Pi)
Insbesondere "playsound" funktioniert nicht so einfach denn es basiert auf GStreamer.

Informationen findest hier:
https://pypi.org/project/playsound/

und hier:
https://gstreamer.freedesktop.org/docum ... language=c

Auf meinem Kubuntu Linux hat es nach der Installation von GStreamer funktioniert:

Code: Alles auswählen

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
(Das Paket "gstreamer1.0-doc" wird nicht gefunden, braucht man aber auch nicht)

Falls das auch nicht hilft, würde ich einfach ein anderes Python-Paket versuchen um die mp3-Datei abzuspielen. Es sollte mehrere zur Auswahl geben. Das eigentliche konvertieren von Text in Audio funktioniert ja.

Re: Playsound

Verfasst: Samstag 4. September 2021, 13:15
von Dennis89
@rogerb Danke, ist mir nach dem Beitrag des TE dann auch aufgefallen 🤭

Grüße
Dennis