Hochauflösende akustische Signalverarbeitung (1) - Lesen einer 24-Bit-WAV-Datei mit Python

Überblick

Ich hatte vor einiger Zeit die Möglichkeit, ein Signal für eine hochauflösende Schallquelle zu verarbeiten. Zu dieser Zeit habe ich verschiedene Python-Bibliotheken durchsucht, die 24-Bit-WAV lesen können. Notieren Sie sich dies.

Es gibt scipy.io.wavfile als Bibliothek zum Lesen von wav in Python, Dies unterstützt wav nur mit der Anzahl der Quantisierungsbits = {8,16,32,64,96,128}. Mit anderen Worten, 24-Bit-WAV kann nicht gelesen werden. Die meisten hochauflösenden Schallquellen auf der Straße sind also 24-Bit Da dies ein Problem ist, habe ich versucht herauszufinden, wie man 24-Bit-WAV liest.

Kandidat

Geben Sie Ihr Bestes mit dem Standard-Wellenmodul

(Ich habe es nicht implementiert, es tut mir leid, wenn ich einen Fehler mache n) Es sollte gut sein, wenn das von readframes () erhaltene Byte-Objekt ordnungsgemäß konvertiert und in numpy.ndarray gespeichert wird. Da es jedoch erforderlich ist, eine 24-Bit-Einheitsbyte-Zeichenfolge in einem 32-Bit-Typ zu speichern, scheint die Entpackverarbeitung ein wenig mühsam zu sein.

scikits.audiolab http://cournape.github.io/audiolab/ Ein relativ alter libsndfile-Wrapper. Sie können WAV mit MATLAB-ähnlicher Notation lesen und schreiben.

test_audiolab.py


from scikits.audiolab import wavread

data, fs, fmt = wavread(fn)

Vorteil

Nachteil

wavio https://github.com/WarrenWeckesser/wavio Eine relativ neue Bibliothek. (Es scheint, dass es intern mit Wave implementiert wird) Es ist möglich, Wellen einer beliebigen Anzahl von fs / Quantisierungsbits einschließlich 24 Bits zu lesen und zu schreiben.

test_wavio.py


import wavio

w = wavio.read(fn_in)
fs = w.rate
bit = 8 * w.sampwidth
data = w.data.T
data = data / float( 2**(bit-1) ) # -1.0 to 1.Normalisiert auf 0

Vorteil

Nachteil

--Nur WAV wird unterstützt

Welches sollte ich also verwenden?

Persönlich denke ich, dass "Wavio" die derzeit optimale Lösung ist. Es hat den Nachteil, dass es nur mit WAV verwendet werden kann, aber im schlimmsten Fall kann es mit Sox oder ffmpeg konvertiert werden.

Wenn Sie die Abhängigkeit von nicht standardmäßigen Bibliotheken nicht erhöhen möchten, implementieren Sie sie vorsichtig mit Wave.

Recommended Posts

Hochauflösende akustische Signalverarbeitung (1) - Lesen einer 24-Bit-WAV-Datei mit Python
Lesen einer CSV-Datei mit Python 2/3
[Python] Wie man Excel-Dateien mit Pandas liest
Lesen einer Excel-Datei (.xlsx) mit Pandas [Python]
So führen Sie eine Mehrkern-Parallelverarbeitung mit Python durch
So messen Sie die Wiedergabezeit von MP3-Dateien mit Python
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
[Python] Umgang mit Pandas read_html Lesefehler
So wechseln Sie die Konfigurationsdatei, die von Python gelesen werden soll
[Python Kivy] So erstellen Sie mit pyinstaller eine exe-Datei
Python: So verwenden Sie Async mit
[Python] Mit Python in eine CSV-Datei schreiben
Ausgabe in eine CSV-Datei mit Python
MP3 → WAV-Konvertierung mit Python
Erste Schritte mit Python
So berechnen Sie das Datum mit Python
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
[ROS2] So spielen Sie eine Bag-Datei mit Start im Python-Format ab
Laden Sie WAV-Dateien per FTP mit Python auf X-Server hoch und laden Sie sie herunter
[Python] So konvertieren Sie eine Datenbankdatei in CSV
Ändern Sie die Python 64-Bit-Umgebung mit Anaconda in eine 32-Bit-Umgebung
Wie man pydoc auf Python Interpreter liest
CSV-Datei mit Python lesen (CSV-Datei herunterladen und analysieren)
So konvertieren Sie Python in eine exe-Datei
So arbeiten Sie mit BigQuery in Python
Lesen wir die RINEX-Datei mit Python ①
Wie man einen Taschentest mit Python macht
So zeigen Sie Python-Japanisch mit Lolipop an
[Python] Lesen der CSV-Datei (Methode read_csv des Pandas-Moduls)
Wie man mit Python-Flüchen Japanisch eingibt
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
Wie man Problemdaten mit Paiza liest
So installieren Sie Python3 mit Docker Centos
3. Verarbeitung natürlicher Sprache mit Python 1-2. So erstellen Sie einen Korpus: Aozora Bunko
[Automatisierung] Lesen Sie E-Mails (Nachrichtendatei) mit Python
Zusammenfassung zum Lesen numerischer Daten mit Python [CSV, NetCDF, Fortran Binary]
So legen Sie Google Text & Tabellen in einem Ordner zusammen in einer TXT-Datei mit Python ab
Hochladen mit Heroku, Flask, Python, Git (4)
[REAPER] Wie man Reascript mit Python spielt
Strategie zur Monetarisierung mit Python Java
So implementieren Sie die Time-Wait-Verarbeitung mit wxpython
So erstellen Sie eine JSON-Datei in Python
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
Konvertieren Sie die SVG-Datei mit Python in png / ico
So beschneiden Sie ein Bild mit Python + OpenCV
Lesen Sie Tabellendaten in einer PDF-Datei mit Python
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
So lesen Sie ein Array mit Pythons ConfigParser
So legen Sie Attribute mit Mock of Python fest
So messen Sie die Ausführungszeit mit Python Teil 1
Wie man tkinter mit Python in Pyenv benutzt
Lesen Sie mit Python Zeile für Zeile aus der Datei
[Python] Umgang mit japanischen Zeichen mit openCV
Ich möchte mit Python in eine Datei schreiben
Lesen Sie WAV-Dateien nur mit dem Python-Standardpaket
So lesen Sie Dateien in verschiedenen Verzeichnissen
Materialien zum Lesen, wenn Sie mit Python beginnen