Wie kann ich mit Python einen System-Sound abspielen?

8

Ich schreibe eine kleine Erinnerungs-App und möchte einen System-Sound abspielen, sobald der Timer 0 erreicht hat. Was ist der einfachste Weg, diesen Sound abzuspielen, und welchen Sound würden Sie empfehlen?

Ingo
quelle

Antworten:

15

Der einfachste Weg wäre wahrscheinlich, zu berappen:

system("/usr/bin/canberra-gtk-play --id='bell'")

Dies funktioniert auch in anderen Programmiersprachen.

/usr/bin/canberra-gtk-playspielt einen Sound aus dem aktuellen Soundthema ab. Siehe den freedesktop.org Klangname spec für eine Liste der verfügbaren Sound und deren Bedeutung. Beachten Sie, dass es (soweit ich weiß) kein Soundthema gibt, das all diese Sounds bietet.

Verwenden Sie ls /usr/share/sounds/ubuntu/stereodiese Option, um zu sehen, welche Sounds vom 'Ubuntu'-Soundthema unterstützt werden, das standardmäßig verwendet wird und unter Ubuntu nur selten geändert wird (da Soundthemen nicht einfach zu installieren sind).

dv3500ea
quelle
Vielen Dank! Haben Sie einen Hinweis, wo ich weitere IDs finden kann? Weil 'Glocke' nicht wirklich zu mir passt.
Ingo
Siehe aktualisierte Antwort.
dv3500ea
6
Aus Sicherheitsgründen empfehle ich die Verwendung subprocess. Die stringbasierte Ausführung kann zu gefährlichen Situationen führen. Zum Beispiel:import subprocess; subprocess.call(['/usr/bin/canberra-gtk-play','--id','bell'])
Kees Cook
@Kees Cook, Bitte erläutern Sie, wie die Ausführung des obigen Befehls über system () zu "gefährlichen Situationen" führen kann.
Cerin