Spielen Sie einen Sound mit Python [duplicate]

Lesezeit: 6 Minuten

Was ist der einfachste Weg, eine Sounddatei (.wav) in Python abzuspielen? Mit am einfachsten meine ich sowohl die plattformunabhängigsten als auch die geringsten Abhängigkeiten. Pygame ist sicherlich eine Option, aber es scheint übertrieben für nur Sound zu sein.

  • Sehr ähnliche Frage zu stackoverflow.com/questions/260738/play-audio-with-python.

    – Paige Ruten

    20. November 08 um 23:43 Uhr

  • Oder hier: stackoverflow.com/questions/276266/…

    – lpfavreau

    21. November 08 um 1:23 Uhr

Spielen Sie einen Sound mit Python duplicate
orestis

Für Windows können Sie winsound verwenden. Es ist eingebaut

import winsound

winsound.PlaySound('sound.wav', winsound.SND_FILENAME)

Sie sollten in der Lage sein, ossaudiodiodev für Linux zu verwenden:

from wave import open as waveOpen
from ossaudiodev import open as ossOpen
s = waveOpen('tada.wav','rb')
(nc,sw,fr,nf,comptype, compname) = s.getparams( )
dsp = ossOpen('/dev/dsp','w')
try:
  from ossaudiodev import AFMT_S16_NE
except ImportError:
  from sys import byteorder
  if byteorder == "little":
    AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
  else:
    AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = s.readframes(nf)
s.close()
dsp.write(data)
dsp.close()

(Credit für ossaudiodev: Bill Dandreta http://mail.python.org/pipermail/python-list/2004-October/288905.html)

  • das ist gut – es scheint einfach zu sein, einen Wrapper zu bauen, der zumindest für diese beiden Plattformen funktioniert

    – Claudius

    22. November 08 um 21:02 Uhr

  • Vermeiden Sie Oss, es ist alt. Ich glaube ich habe es gar nicht mehr installiert.

    – Jeffrey Aylesworth

    30. Januar 10 um 19:47 Uhr

  • OSS ist nicht alt. Es ist nur so, dass die Linux-Leute beschlossen haben, ALSA aus Gründen zu ersetzen, die mehr mit Politik und Ego als mit Softwareentwicklung zu tun haben. Ungeachtet dessen bleibt OSS das einzige plattformübergreifende UNIX-Soundsystem und wird es wahrscheinlich auch in absehbarer Zukunft bleiben.

    – Martin Tournij

    13. Juli 11 um 21:08 Uhr

  • Ich begann mit dieser Antwort, fügte eine Variante hinzu, die auch unter OS X funktioniert, und lud sie als reines Python, plattformübergreifendes Einzelfunktionsmodul für pypi hoch, genannt Ton abspielen. pip install playsound. Genießen!

    – ArtOfWarfare

    25. Januar 16 um 4:42 Uhr


  • Ich habe einen FileNotFoundError: [Errno 2] Keine solche Datei oder kein solches Verzeichnis: ‘/dev/dsp’, sollte diese Antwort eine andere Datei auf /dev öffnen?

    – Lapisdekor

    24. Februar 17 um 3:41 Uhr

Das Snack-Sound-Toolkit kann wav-, au- und mp3-dateien abspielen.

s = Sound() 
s.read('sound.wav') 
s.play()

  • Snack scheint mit einigen eingebetteten Systemumgebungen nicht zu funktionieren

    – Xun Yang

    24. September 14 um 12:26 Uhr

  • es ist auch nicht auf Pypi verfügbar 🙁

    – Daniel

    30. Juli 15 um 12:33 Uhr

  • Snack scheint tot zu sein (letztes Update 2005 – vor zehn Jahren).

    – Oli

    13. Februar 16 um 10:37 Uhr

  • Sie können 2to3.py verwenden, um tkSnack.py in Python 3 zu konvertieren. Platzieren Sie tkSnack.py im Ordner „Lib“ in Ihrem Python-Verzeichnis. Legen Sie dann den Snacklib-Ordner in den Ordner “tcl” in Ihrem Python-Verzeichnis. Getestet auf Python 3.2.

    – Jacobtohahn

    23. Dezember 17 um 0:17 Uhr

Spielen Sie einen Sound mit Python duplicate
Ansporn

Das scheint lächerlich und weit hergeholt, aber Sie könnten immer Windows (oder welches Betriebssystem Sie bevorzugen) verwenden, um den Sound für Sie zu verwalten!

import os
os.system("start C:/thepathyouwant/file")

Einfach, keine Erweiterungen, etwas langsam und junky, aber funktioniert.

  • Schön. Wenn man weiß, dass Python diese Funktion hat, eröffnet sich eine ganze Menge Möglichkeiten

    – schw

    26. Oktober 13 um 15:12 Uhr

  • Dies ist keine Funktion von Python, sondern ein Aufruf an einen Prozess im Betriebssystem. es ist nicht plattformübergreifend und es ist furchtbar teuer

    – Elfonso

    19. Mai 14 um 1:03 Uhr

  • Plattformübergreifend: import sys from subprocess import call if sys.platform == 'linux2': call(["xdg-open","sound.mp3"]) elif sys.platform == 'darwin': call(["afplay","sound.mp3"]) Was teuer ist, ist Zeitverschwendung mit all diesen schlecht funktionierenden Soundbibliotheken. Ersetzen xdg-open Pro mpg123 wird geben afplay Funktionalität unter Linux

    – Louis Maddox

    9. Juli 14 um 12:00 Uhr


  • Ja, OSX funktioniert nicht: sh: start: command not found

    – Julio Marins

    22. März 16 um 02:11 Uhr


  • Das ist wirklich schlecht, weil ich (unter Windows) hätte machen können, dass die Standardaktion für Audiodateien im Audio-Editor geöffnet ist. Der Ton würde nie abgespielt und aus irgendeinem seltsamen Grund öffnete sich mein Audio-Editor die ganze Zeit …

    – RedX

    6. November 16 um 22:28 Uhr

Unbedingt verwenden Pyglet dafür. Es ist ein ziemlich großes Paket, aber es ist reines Python ohne Erweiterungsmodule. Das wird definitiv am einfachsten für die Bereitstellung sein. Es hat auch eine großartige Format- und Codec-Unterstützung.

import pyglet

music = pyglet.resource.media('music.mp3')
music.play()

pyglet.app.run()

1644121628 657 Spielen Sie einen Sound mit Python duplicate
Ramkumar

Nachdem der Befehl play () eine Verzögerung von etwa 10 Sekunden hinzugefügt hat, funktioniert es

import pygame

import time

pygame.init()

pygame.mixer.music.load("test.wav")

pygame.mixer.music.play()

time.sleep(10)

Dies spielt auch .mp3-Dateien ab.

  • pygame verwendet nicht die richtige Abtastrate für die von mir verwendeten Wave-Dateien

    – Krake

    21. Juli 13 um 7:23 Uhr


  • Funktioniert nicht immer, es wirft manchmal Segmentierungsfehler usw. Ich empfehle dies nicht.

    – Schütze

    9. August 18 um 1:48 Uhr

Das Klangbeispiel von pyMedia tut es nur das. Das sollte alles sein, was Sie brauchen.

import time, wave, pymedia.audio.sound as sound
f= wave.open( 'YOUR FILE NAME', 'rb' )
sampleRate= f.getframerate()
channels= f.getnchannels()
format= sound.AFMT_S16_LE
snd= sound.Output( sampleRate, channels, format )
s= f.readframes( 300000 )
snd.play( s )

  • pygame verwendet nicht die richtige Abtastrate für die von mir verwendeten Wave-Dateien

    – Krake

    21. Juli 13 um 7:23 Uhr


  • Funktioniert nicht immer, es wirft manchmal Segmentierungsfehler usw. Ich empfehle dies nicht.

    – Schütze

    9. August 18 um 1:48 Uhr

1644121628 443 Spielen Sie einen Sound mit Python duplicate
Tyler

Ich mag Pygame und der folgende Befehl sollte funktionieren:

pygame.init()
pygame.mixer.Sound('sound.wav').play()

aber es funktioniert auf keinem meiner Computer, und es gibt nur begrenzte Hilfe zu diesem Thema. Bearbeiten: Ich habe herausgefunden, warum der Pygame-Sound bei mir nicht funktioniert, die meisten Sounds werden nicht richtig geladen, das Attribut “Länge” ist ~ 0,0002, wenn ich sie lade. Vielleicht wird es allgemeiner, wenn Sie sie mit etwas anderem als mygame laden.

Mit Pyglet erhalte ich einen Fehler „Ressource nicht gefunden“. Verwenden Sie das obige Beispiel, um sowohl relative als auch vollständige Pfade zu den Dateien zu verwenden.

verwenden pyglet.media.load() anstatt pyglet.resource.media() lässt mich die Dateien laden.

aber sound.play() spielt nur den ersten Bruchteil einer Sekunde der Datei, es sei denn, ich laufe pyglet.app.run() was alles andere blockiert…

  • Aus dem Handbuch: “Das Mixer-Modul muss wie andere Pygame-Module initialisiert werden, aber es hat einige zusätzliche Bedingungen. Die Funktion pygame.mixer.init – Initialize the Mixer Module benötigt mehrere optionale Argumente, um die Wiedergaberate und Sample-Größe zu steuern. Pygame wird standardmäßig vernünftige Werte, aber pygame kann kein Sound-Resampling durchführen, daher sollte der Mixer initialisiert werden, um mit den Werten Ihrer Audioressourcen übereinzustimmen.” – das könnte der Grund sein, warum Ihre Ressourcen falsch geladen werden …

    – Dominik Scheirlinck

    13. März 12 um 08:42 Uhr

.

792310cookie-checkSpielen Sie einen Sound mit Python [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy