Wie kann ich Audio (es wäre wie ein 1-Sekunden-Sound) aus einem Python-Skript abspielen?
Es wäre am besten, wenn es plattformunabhängig wäre, aber zuerst muss es auf einem Mac funktionieren.
Ich weiß, dass ich den afplay file.mp3
Befehl nur in Python ausführen kann , aber ist es möglich, ihn in rohem Python auszuführen ? Ich wäre auch besser, wenn es nicht auf externe Bibliotheken angewiesen wäre.
Antworten:
Informationen zu Python-Audio finden Sie hier: http://wiki.python.org/moin/Audio/
Es sieht nicht so aus, als könnte es MP3-Dateien ohne externe Bibliotheken abspielen. Sie können entweder Ihre MP3-Datei in eine WAV-Datei oder ein anderes Format konvertieren oder eine Bibliothek wie PyMedia verwenden .
quelle
.wav
Datei ab?Am besten verwenden Sie wahrscheinlich Pygame / SDL . Es ist eine externe Bibliothek, die jedoch plattformübergreifend großartige Unterstützung bietet.
Eine genauere Dokumentation zur Unterstützung von Audiomischern finden Sie in der Dokumentation zu pygame.mixer.music
quelle
time.sleep(5)
am Ende hinzugefügt und das hat funktioniert. Python 3.6 unter Windows 8.1Schauen Sie sich Simpleaudio an , eine relativ neue und leichtgewichtige Bibliothek für diesen Zweck:
Dann:
Stellen Sie sicher, dass Sie unkomprimierte 16-Bit-PCM-Dateien verwenden.
quelle
Probieren Sie PlaySound aus , einen plattformübergreifenden Pure Python-Einzelfunktionsbaustein ohne Abhängigkeiten für das Abspielen von Sounds.
Installation über Pip:
Sobald Sie installiert haben, können Sie es wie folgt verwenden:
quelle
playsound
. Ich habe hier gerade ein paar Lösungen getestet, und diese hat für mich am einfachsten funktioniert. Leider hat diepygame
Lösung bei einem kurzen Test bei mir nicht funktioniert.In pydub haben wir uns kürzlich für die Verwendung von ffplay (über einen Unterprozess) aus der ffmpeg- Tool- Suite entschieden, die intern SDL verwendet.
Es funktioniert für unsere Zwecke - hauptsächlich, um das Testen der Ergebnisse von Pydub-Code im interaktiven Modus zu vereinfachen -, hat jedoch auch Nachteile, z. B. das Erscheinen eines neuen Programms im Dock auf dem Mac.
Ich habe die Implementierung oben verlinkt, aber es folgt eine vereinfachte Version:
Das
-nodisp
Flag verhindert, dass ffplay ein neues Fenster anzeigt, und das-autoexit
Flag bewirkt, dass ffplay beendet wird und einen Statuscode zurückgibt, wenn die Audiodatei abgespielt ist.edit : pydub verwendet jetzt pyaudio für die Wiedergabe, wenn es installiert ist, und greift auf ffplay zurück, um die von mir erwähnten Nachteile zu vermeiden. Der obige Link zeigt auch diese Implementierung.
quelle
Entschuldigen Sie die späte Antwort, aber ich denke, dies ist ein guter Ort, um für meine Bibliothek zu werben ...
AFAIK, die Standardbibliothek, hat nur ein Modul für die Audiowiedergabe: ossaudiodev . Leider funktioniert dies nur unter Linux und FreeBSD.
UPDATE: Es gibt auch Winsound , aber dies ist natürlich auch plattformspezifisch.
Für etwas plattformunabhängigeres müssen Sie eine externe Bibliothek verwenden.
Meine Empfehlung ist das Soundgeräte- Modul (aber Vorsicht, ich bin der Autor).
Das Paket enthält die vorkompilierte PortAudio- Bibliothek für Mac OS X und Windows und kann einfach installiert werden mit:
Es kann Sound von NumPy-Arrays wiedergeben, aber es können auch einfache Python-Puffer verwendet werden (wenn NumPy nicht verfügbar ist).
Um ein NumPy-Array wiederzugeben, ist dies alles, was Sie benötigen (vorausgesetzt, die Audiodaten haben eine Abtastfrequenz von 44100 Hz):
Weitere Informationen finden Sie in der Dokumentation .
Es kann keine Audiodateien lesen / schreiben, dafür benötigen Sie eine separate Bibliothek.
quelle
Sie können dies sehen: http://www.speech.kth.se/snack/
quelle
Aarons Antwort scheint etwa zehnmal komplizierter als nötig zu sein. Tun Sie dies einfach, wenn Sie nur eine Antwort benötigen, die unter OS X funktioniert:
Eine Sache ... das kehrt sofort zurück. Möglicherweise möchten Sie dies auch tun, wenn der Anruf blockiert werden soll, bis die Wiedergabe des Sounds beendet ist.
Bearbeiten: Ich habe diese Funktion übernommen und mit Varianten für Windows und Linux kombiniert. Das Ergebnis ist ein plattformübergreifendes reines Python-Modul ohne Abhängigkeiten, das als PlaySound bezeichnet wird . Ich habe es auf pypi hochgeladen.
Führen Sie es dann folgendermaßen aus:
MP3-Dateien funktionieren auch unter OS X. WAV sollte auf allen Plattformen funktionieren. Ich weiß nicht, welche anderen Kombinationen von Plattform- / Dateiformat funktionieren oder nicht - ich habe sie noch nicht ausprobiert.
quelle
playsound
Modul, das ich geschrieben habe? Ich habe es auf nichts Neuerem als Python 2.7.11 getestet ... Ich kann mir sicher ansehen, wie ich es auf 3.5Dies ist die einfachste und beste, die ich gefunden habe. Es unterstützt Linux / pulseaudio, Mac / coreaudio und Windows / WASAPI.
Unter https://github.com/bastibe/PySoundFile und https://github.com/bastibe/SoundCard finden Sie unzählige weitere nützliche Funktionen.
quelle
Es ist möglich, Audio in OS X ohne Bibliotheken von Drittanbietern mit einem Analogon des folgenden Codes abzuspielen. Die rohen Audiodaten können mit wave_wave.writeframes eingegeben werden. Dieser Code extrahiert 4 Sekunden Audio aus der Eingabedatei.
quelle
Probieren Sie PySoundCard aus, die PortAudio für die Wiedergabe verwendet, die auf vielen Plattformen verfügbar ist. Darüber hinaus erkennt es "professionelle" Audiogeräte mit vielen Kanälen.
Hier ein kleines Beispiel aus der Readme:
quelle
Auch unter OSX - von SO aus mit dem afplay- Befehl afplay :
UPDATE: Alles, was dies tut, ist anzugeben, wie das zu tun ist, was das OP überhaupt vermeiden wollte. Ich schätze, ich habe dies hier gepostet, weil OP die Informationen vermeiden wollte, nach denen ich gesucht habe. Hoppla.
quelle
Pypi hat eine Liste von Modulen für Python in der Musik. Mein Favorit wäre Jython, weil es mehr Ressourcen und Bibliotheken für Musik hat. Als Beispiel für Code zum Abspielen einer einzelnen Note aus dem Lehrbuch :
quelle
Mac OS Ich habe viele Codes ausprobiert, aber genau das funktioniert bei mir
quelle
Installieren Sie das
playsound
Paket mit:Verwendung:
quelle
quelle
Rufen Sie einen Musikplayer wie vlc auf, um einen Benachrichtigungston mit Python abzuspielen. VLC forderte mich auf, stattdessen die Befehlszeilenversion cvlc zu verwenden.
Vlc muss auf dem Gerät vorinstalliert sein. Getestet unter Linux (Ubuntu 16.04 LTS); Ausführen von Python 3.5.
quelle
Versuchen Sie es mit Soundgerät
Wenn Sie das Modul nicht haben, geben Sie es
pip install sounddevice
in Ihr Terminal ein.Geben Sie dann in Ihrem bevorzugten Python-Skript (ich verwende Juypter) ein
sd.play(audio, sr)
wird über Python spielen, was Sie wollenDer beste Weg, um das gewünschte Audio und Samplerate zu erhalten, ist das librosa-Modul. Geben Sie dies im Terminal ein, wenn Sie nicht über das librosa-Modul verfügen.
Unabhängig davon, welche WAV-Datei Sie abspielen möchten, stellen Sie sicher, dass sie sich im selben Verzeichnis wie Ihr Python-Skript befindet. Dies sollte es Ihnen ermöglichen, Ihre gewünschte WAV-Datei über Python abzuspielen
Prost, Charlie
PS
Sobald Audio ein "librosa" -Datenobjekt ist, sieht Python es als numpy-Array. Versuchen Sie als Experiment, ein langes (versuchen Sie 20.000 Datenpunkte) Ding eines zufälligen Numpy-Arrays zu spielen. Python sollte es als weißes Rauschen spielen. Das Sounddevice-Modul spielt auch numpy Arrays und Listen ab.
quelle
In einem Colab-Notizbuch können Sie Folgendes tun:
quelle
Ich habe kürzlich dafür gesorgt, dass mein Music Player alle Audiodateien lokal unterstützt. Ich habe dazu einen Weg gefunden, das vlc-Python-Modul und auch die VLC-DLL-Dateien zu verwenden. Sie können es überprüfen: https://github.com/elibroftw/music-caster/blob/master/audio_player.py
quelle
Wenn Sie unter OSX arbeiten, können Sie mit dem Modul "os" oder "subprocess" usw. den OSX-Befehl "play" aufrufen. In der OSX-Shell sieht es so aus
spiele "bah.wav"
Es beginnt in ungefähr einer halben Sekunde auf meinem Computer zu spielen.
quelle
Einfach Sie können es mit Hilfe von cvlc tun - ich habe es so gemacht:
/home/maulo/selfProject/task.mp3. Dies ist der Speicherort meiner MP3-Datei. Mit Hilfe von "--play-and-exit" können Sie den Sound erneut abspielen, ohne den vlc-Prozess zu beenden.
quelle