Traitement du signal acoustique haute résolution (1) - Comment lire un fichier wav 24 bits avec Python

Aperçu

J'ai eu la chance de traiter un signal pour une source sonore haute résolution il y a quelque temps. À ce moment-là, j'ai recherché diverses bibliothèques Python capables de lire le wav 24 bits, alors prenez-en note.

Il existe scipy.io.wavfile comme bibliothèque pour lire wav en Python, Cela ne prend en charge que wav avec le nombre de bits de quantification = {8,16,32,64,96,128}. En d'autres termes, le wav 24 bits ne peut pas être lu. La plupart des sources sonores haute résolution dans la rue sont de 24 bits, donc C'est un problème, j'ai donc essayé de savoir comment lire le wav 24 bits.

Candidat

Faites de votre mieux avec le module Wave standard

(Je ne l'ai pas implémenté, donc je suis désolé si je fais une erreur n) Cela devrait être bon si l'objet bytes obtenu par readframes () est correctement converti et stocké dans numpy.ndarray. Cependant, comme il est nécessaire de stocker une chaîne d'octets d'unité de 24 bits dans un type de 32 bits, le traitement de décompression semble être un peu gênant.

scikits.audiolab http://cournape.github.io/audiolab/ Un wrapper libsndfile relativement ancien. Vous pouvez lire et écrire en wav avec une notation de type MATLAB.

test_audiolab.py


from scikits.audiolab import wavread

data, fs, fmt = wavread(fn)

avantage

Désavantage

wavio https://github.com/WarrenWeckesser/wavio Une bibliothèque relativement nouvelle. (Il semble qu'il soit implémenté en interne en utilisant wave) Il est possible de lire et d'écrire en wav de n'importe quel nombre de bits de quantification / fs comprenant 24 bits.

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.Normalisé à 0

avantage

--Compatible avec Python3 --Pure-python (pas de dépendance sur une lib externe)

Désavantage

--Seule wav est pris en charge

Alors, lequel dois-je utiliser après tout?

Personnellement, je pense que «wavio» est la solution optimale actuelle. Il a l'inconvénient de ne pouvoir être utilisé qu'avec wav, mais au pire il peut être converti avec sox ou ffmpeg.

Si vous ne voulez pas augmenter la dépendance à des bibliothèques non standard, implémentez-le doucement avec wave.

Recommended Posts

Traitement du signal acoustique haute résolution (1) - Comment lire un fichier wav 24 bits avec Python
Comment lire un fichier CSV avec Python 2/3
[Python] Comment lire des fichiers Excel avec des pandas
Traitement du signal acoustique avec Python
Comment lire un fichier Excel (.xlsx) avec Pandas [Python]
Comment faire un traitement parallèle multicœur avec python
Comment mesurer le temps de lecture d'un fichier mp3 avec python
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
[Python] Comment gérer l'erreur de lecture pandas read_html
Comment changer le fichier de configuration pour qu'il soit lu par Python
[Python Kivy] Comment créer un fichier exe avec pyinstaller
Python: comment utiliser async avec
[Python] Ecrire dans un fichier csv avec Python
Sortie vers un fichier csv avec Python
Conversion MP3 → WAV avec Python
Comment démarrer avec Python
Comment calculer la date avec python
Comment faire une commande pour lire le fichier de paramètres avec pyramide
[ROS2] Comment lire un fichier bag avec le lancement au format python
Télécharger et télécharger des fichiers wav sur X-Server par FTP avec Python
[Python] Comment convertir un fichier db en csv
Changer l'environnement Python 64 bits en environnement 32 bits avec Anaconda
Comment lire pydoc sur l'interpréteur python
Lire le fichier CSV avec python (Télécharger et analyser le fichier CSV)
Comment convertir Python en fichier exe
Comment utiliser BigQuery en Python
Lisons le fichier RINEX avec Python ①
Comment faire un test de sac avec python
Comment afficher le japonais python avec lolipop
[Python] Comment lire le fichier csv (méthode read_csv du module pandas)
Comment entrer le japonais avec les malédictions Python
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
Comment lire les données de problème avec Paiza
Comment installer python3 avec docker centos
3. Traitement du langage naturel avec Python 1-2. Comment créer un corpus: Aozora Bunko
[Automation] Lire le courrier (fichier msg) avec Python
Résumé de la lecture des données numériques avec python [CSV, NetCDF, Fortran binary]
Comment déposer Google Docs dans un dossier dans un fichier .txt avec python
Comment télécharger avec Heroku, Flask, Python, Git (4)
[REAPER] Comment jouer à Reascript avec Python
Stratégie sur la façon de monétiser avec Python Java
Comment implémenter le traitement du temps d'attente avec wxpython
Comment créer un fichier JSON en Python
[Python] Comment dessiner plusieurs graphiques avec Matplotlib
Convertir un fichier svg en png / ico avec Python
Comment recadrer une image avec Python + OpenCV
Lire les données de la table dans un fichier PDF avec Python
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Comment lire un tableau avec ConfigParser de Python
Comment spécifier des attributs avec Mock of Python
Comment mesurer le temps d'exécution avec Python Partie 1
Comment utiliser tkinter avec python dans pyenv
Lire ligne par ligne à partir d'un fichier avec Python
[Python] Comment gérer les caractères japonais avec openCV
Je veux écrire dans un fichier avec Python
Lire les fichiers wav avec uniquement le package standard Python
Comment lire des fichiers dans différents répertoires
Matériel à lire lors de la mise en route de Python