Importieren von sound-Dateien in Python-wie NumPy-arrays (alternativen zu audiolab)
Habe ich mit Audiolab zum importieren von sound-Dateien in die Vergangenheit, und es funktionierte ganz gut. Allerdings:
- Es nicht unterstützt einige Formate, wie mp3, da das zugrunde liegende libsndfile weigert sich Sie zu unterstützen
- Es funktioniert nicht mit Python 2.6 unter Windows, und der Autor ist nicht rund, um es zu beheben
-
In [2]: from scikits import audiolab
--------------------------------------------------------------------
ImportError Traceback (most recent call last)
C:\Python26\Scripts\<ipython console> in <module>()
C:\Python26\lib\site-packages\scikits\audiolab\__init__.py in <module>()
23 __version__ = _version
24
---> 25 from pysndfile import formatinfo, sndfile
26 from pysndfile import supported_format, supported_endianness, \
27 supported_encoding, PyaudioException, \
C:\Python26\lib\site-packages\scikits\audiolab\pysndfile\__init__.py in <module>()
----> 1 from _sndfile import Sndfile, Format, available_file_formats, available_encodings
2 from compat import formatinfo, sndfile, PyaudioException, PyaudioIOError
3 from compat import supported_format, supported_endianness, supported_encoding
ImportError: DLL load failed: The specified module could not be found.``
Also ich würde gerne entweder:
- Herauszufinden, warum es nicht funktioniert in 2.6 (etwas falsch mit _sndfile.pyd?) und vielleicht finden Sie einen Weg, um es zu erweitern arbeiten mit nicht unterstützten Formate
- Finden Sie eine vollständige Ersatz für audiolab
Das problem mit python 2.6 unter windows (d.h. man sieht es nicht auf python 2.5). Ich habe nicht gefunden, einen Weg, um es zu beheben noch
Und ich endlich die Zeit zwischen zwei Flügen, die es endete als ein mingw bug. Ich habe eine neue version 0.11.0, die sollte das Problem beheben.
David, haben Sie ein wunderbares Werkzeug in audiolab! Ich benutze es oft. Danke.
Es funktioniert jetzt! Dank
Und ich endlich die Zeit zwischen zwei Flügen, die es endete als ein mingw bug. Ich habe eine neue version 0.11.0, die sollte das Problem beheben.
David, haben Sie ein wunderbares Werkzeug in audiolab! Ich benutze es oft. Danke.
Es funktioniert jetzt! Dank
InformationsquelleAutor endolith | 2010-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Audiolab ist die Arbeit für mich auf Ubuntu 9.04 mit Python 2.6.2, so könnte es ein Windows-problem. In deinem link zu dem forum, der Autor legt auch nahe, dass es sich um einen Windows Fehler.
In der Vergangenheit, ist diese option für mich gearbeitet hat, zu:
Nur Vorsicht, dass
data
haben kannint
Datentyp, so ist es nicht skaliert in [-1,1). Zum Beispiel, wenndata
istint16
Sie müssen teilendata
durch2**15
zu Maßstab in [-1,1).Ich bin nicht sicher, dass. 16 - oder 32-bit-Version sollte in Ordnung sein, aber ich weiß nicht, über 24-bit.
Es Lesen nicht viel von irgendetwas. Auch 16-bit-Dateien kommen aus invertiert, mit rundum-Fehler bei einem Wert von -1. 24-bit erhält "TypeError: Datentyp nicht verstanden" es gibt doch wohl etwas besser...
Kannst du eine Datei, welche gibt Sie diesen Fehler ? Auch, hat die test-suite geht einwandfrei (scikits.audiolab.test()) ? audiolab libsndfile verwendet, das ist mit Abstand die beste und zuverlässigste audio-IO-Bibliothek, die ich kenne. Es kann ein Fehler im audiolab selbst, natürlich
Ich sehe nicht, das wraparound-bug jetzt, aber das war ein bug mit scipy.io, nicht audiolab.
InformationsquelleAutor Steve Tjoa
Sox http://sox.sourceforge.net/ kann dein Freund sein. Es kann Lesen viele in vielen verschiedenen Formaten und Ausgabe als raw, in welcher Datentyp, den Sie bevorzugen. In der Tat, ich schrieb den code zum Lesen eines Blocks von Daten von einer audio-Datei in ein numpy-array.
Habe ich beschlossen diesen Weg zu gehen Portabilität (sox ist sehr weit) und zur Maximierung der Flexibilität von input audio-Typen, die ich verwenden könnte. Eigentlich, so scheint es von den ersten Tests, dass es nicht spürbar langsamer, für was ich es verwenden für... die Lesen kurz (ein paar Sekunden) von audio aus sehr lange (Stunden) Dateien.
Variablen, die Sie brauchen:
Ist der aktuelle code ist wirklich einfach. Wenn Sie möchten, extrahieren Sie die gesamte Datei, können Sie entfernen Sie die start_samp, len_samp, und 'trim' - Zeug.
PS: Hier ist code zu Lesen, Sachen von audio-Datei-Header mit sox...
Ich werde bei pysox... danke. Obwohl der Teilprozess Ansatz, der sox ist nicht wirklich pythonic oder schön, es ist sehr mächtig und relativ portabel (da sox binaries/Installateure können gefunden werden für die meisten Systeme).
InformationsquelleAutor travc
FFmpeg unterstützt mp3s und funktioniert auf Windows (http://zulko.github.io/blog/2013/10/04/read-and-write-audio-files-in-python-using-ffmpeg/).
Lesen einer mp3-Datei:
Formatieren von Daten in numpy-array:
InformationsquelleAutor Vincent Berthiaume
In Fall, dass Sie wollen, dies zu tun für MP3 -
Hier bin ich mit: Es nutzt pydub und scipy.
Full setup (auf Mac, können sich auf andere Systeme):
Kredit James Thompson ' s blog
os.close(_)
(und vermutlich benennen Sie_
zufd
) zu schließen, die temp-Datei-Deskriptor. Ansonsten, wenn die Ausführung in einer for-Schleife wirst du irgendwann[Errno 24] Too many open files
.InformationsquelleAutor Peter
Habe ich mit PySoundFile in letzter Zeit anstelle von Audiolab. Es wird einfach mit
conda
.Es unterstützt keine mp3, wie die meisten Dinge. MP3 ist nicht mehr patentiert, es gibt also keinen Grund, warum es nicht unterstützen; jemanden einfach schreiben Unterstützung in libsndfile.
InformationsquelleAutor endolith