Was ist der einfachste Weg, um wav-Dateien mit Python [Zusammenfassung] zu lesen?

7

Ich möchte mit Python auf eine wav-Datei zugreifen und den Inhalt in einer Form schreiben, die es mir erlaubt, sie zu analysieren (sagen wir Arrays).

  1. Ich habe gehört, dass "audiolab" ein geeignetes Werkzeug dafür ist (es verwandelt numpy Arrays in wav und umgekehrt).
  2. Ich habe das "audiolab" installiert, aber ich hatte ein Problem mit der Version von numpy (ich konnte nicht von "numpy.testing import Tester"). Ich hatte 1.1.1. Version von numpy.
  3. Ich habe eine neuere Version auf numpy (1.4.0) installiert. Aber dann habe ich eine neue Reihe von Fehlern:

    Traceback (zuletzt letzter Aufruf):   Datei "test.py", Zeile 7, in     importieren Sie scikits.audioLab   Datei "/usr/lib/python2.5/site-packages/scikits/audiolab/init.py", Zeile 25, in     von pysndfile Importformatinfo, Sndfile   Datei "/usr/lib/python2.5/site-packages/scikits/audiolab/pysndfile/init.py", Zeile 1, in     aus _sndfile Import Sndfile, Format, verfügbare_Dateiformate, verfügbare_codierungen   Datei "numpy.pxd", Zeile 30, in scikits.audiolab.pysndfile._sndfile (scikits / audiolab / pysndfile / _sndfile.c: 9632) ValueError: numpy.dtype scheint nicht das richtige Type-Objekt

    zu sein
  4. Ich habe es aufgegeben, audiolab zu verwenden und dachte mir, dass ich das "wave" -Paket verwenden kann, um eine wav-Datei einzulesen. Ich habe eine Frage dazu gestellt, aber die Leute haben empfohlen, stattdessen scipy zu benutzen. OK, ich entschied mich auf scipy zu konzentrieren (ich habe 0.6.0. Version).

  5. Aber wenn ich Folgendes versuchte:

    von scipy.io Import wavfile
    x = wavfile.read ('/ usr / share / Töne / lila / receive.wav')

Ich bekomme Folgendes:

%Vor%
  1. Also habe ich aufgegeben, scipy zu benutzen. Kann ich nur Wellenpaket verwenden? Ich brauche nicht viel. Ich muss nur den Inhalt der WAV-Datei in einem für Menschen lesbaren Format haben und dann werde ich herausfinden, was ich damit machen soll.
Roman 14.01.2010, 09:51
quelle

8 Antworten

11

Haben Sie das Wellenmodul ausprobiert? Es hat weniger Abhängigkeiten:

Ссылка

%Vor%     
James Roth 08.04.2010 18:05
quelle
5

Ich habe einen einfachen Wrapper über das Wave-Modul in der Std-Lib geschrieben. Es heißt pydub und bietet eine Methode zum Lesen von Samples aus den Audiodaten als Ints.

%Vor%

Hoffentlich hilft das

    
Jiaaro 05.12.2012 22:58
quelle
5

Das ist gut genug für mich

%Vor%

Es ignoriert die ersten 24 Werte, denn das ist kein Audio, es ist der Header.

Auch wenn die Datei in Stereo war, haben Ihre Kanäle wechselnde Indizes. Daher reduziere ich sie normalerweise zuerst mit Audacity auf Mono.

    
Nathan 18.01.2014 02:04
quelle
3

Sie können das wave-Modul auch zusammen mit der Funktion numpy.fromstring () verwenden, um es in ein Array zu konvertieren

%Vor%     
GregWillden 20.06.2014 01:46
quelle
2

Nachdem ich so viele Dinge versucht habe, die nicht funktionieren, habe ich die Dekodierungsbibliothek von Benutze (Python) Gstreamer, um Audio (zu PCM-Daten) zu dekodieren und eine Funktion zu erstellen, um die rohen PCM-Daten in ein scipy-Array zu parsen.

Es ist nett und kann jede Audiodatei öffnen, die gstreamer öffnen kann: Ссылка (siehe Test und das Ende der Datei für Verwendungsinformationen)

    
Dominik 23.05.2017 11:46
quelle
1

audiolab ist der beste Weg, aber es funktioniert nicht in jeder Umgebung und der Entwickler arbeitet nicht daran. Ich benutze immer noch Python 2.5, damit ich es benutzen kann.

Haben Sie libsndfile installiert?

    
endolith 17.03.2010 15:13
quelle
1

audiolab scheint nicht mehr gepflegt zu werden. Sie sollten PySoundFile .

Die Installation ist einfach:

%Vor%

Und auch eine Sounddatei lesen:

%Vor%

Sehen Sie sich die Übersicht über verschiedene Python-Bibliotheken an Umgang mit Audiodateien .

    
Matthias 17.09.2015 11:56
quelle
0

pydub bietet eine noch einfachere Lösung ohne Abhängigkeiten (für WAV-Dateien). Ich verwende diese Methode derzeit in der Produktion ohne Probleme.

%Vor%     
TimmyGee 18.08.2017 11:35
quelle

Tags und Links