Comment extraire les données brutes à partir d'un fichier mp3 à l'aide de python?
J'ai des devoirs sur l'enregistrement audio de l'analyse des données à l'aide de Python. Je me demande est-il un bon module pour moi de l'utiliser pour extraire les données brutes à partir d'un fichier mp3. Je veux dire les données brutes, et non pas les métadonnées, les tags id3.
Je sais comment utiliser le wave
module de processus .wav
fichiers. Je peux readframes
pour obtenir les données brutes. Mais je ne sais pas comment faire avec mp3. J'ai beaucoup cherché sur google et stackoverflow et trouver eyeD3
. Mais, malheureusement, la documentation est plutôt frustrant et maintenant la version 0.7.1, différent de la plupart des exemples que je peux trouver sur Internet.
Est-il un bon module qui permet d'extraire des données brutes à partir d'un mp3? Si il y a une bonne documentation pour eyeD3
, il est également bon.
- Vérifiez ceci: stackoverflow.com/questions/3049572/... . Apparemment, le plus simple serait de convertir mp3 en wav en utilisant un programme externe
- L'expression "données brutes" est très déroutant. Si vous dites données brutes je pense que vous voulez obtenir les octets du fichier. (que l'on obtient avec
open('your.mp3', 'rb')
) Mais je pense que vous ne voulez pas ce genre de données brutes. - Je veux que le type de données brutes - octets du fichier. Mais pas de tous les octets du fichier est le contenu de la musique. Il y a encore quelques balises et peut-être sometthing autres. Donc je me demande si il y a n'importe quel module peut extraire it.@IchUndNichtDu
Vous devez vous connecter pour publier un commentaire.
Si je comprends bien votre question, vous pouvez essayer d'utiliser pydub (une bibliothèque que j'ai écrit) pour obtenir les données audio de la sorte:
Il y a quelques questions similaires flottant autour de stackoverflow. Il y a différents cas d'utilisation.
L'utilisateur veut convertir .les fichiers mp3 en fichiers PCM fichiers tels que .les fichiers wav.
L'utilisateur veut accéder aux données brutes dans le .fichier mp3 (qui est, non pas le traiter comme compressé PCM). Ici, le cas d'utilisation est l'un de comprendre comment les systèmes de compression comme le MP3 et l'AAC travail.
Cette réponse est destinée à la seconde, bien que je n'ai pas de code de travail afin de partager ou de point de.
Les systèmes de Compression tels que MP3, généralement dans le domaine des fréquences. Comme un exemple simplifié, vous pouvez prendre un .fichier wav 1024 échantillons à la fois, de transformer chaque bloc de 1024 échantillons à l'aide d'une FFT, et les magasins qui. Grosso modo, la compression avec perte, puis jette de l'information à partir de la fréquence de domaine, afin de permettre une plus petite encodages.
Un pur python mise en œuvre est très pratique si tout ce que vous voulez faire est de convertir de .mp3 pour .wav. Mais si vous voulez découvrir comment .mp3 et liées à des régimes de travail, avoir quelque chose que vous pouvez facilement bricoler avec, même si le code s'exécute 1000 fois plus lent que ce qui utilise ffmpeg, peut effectivement être utile, surtout si elles sont écrites d'une manière qui permet au lecteur de code source pour voir comment .la compression mp3 œuvres. Voir, par exemple, http://bugra.github.io/work/notes/2014-07-12/discre-fourier-cosine-transform-dft-dct-image-compression/ pour un IPython classeur qui marche à travers la façon dont le domaine de fréquence des transformations sont utilisés dans les systèmes de compression d'image comme JPEG. Quelque chose comme ça pour la compression MP3 et similaire serait utile pour l'apprentissage de la compression.
Un .mp3 fichier est en fait une séquence de MP3 cadres, dont chacun a un en-tête et de données composant. La première tâche consiste donc à écrire un Python de la classe (ou des classes) pour représenter ces, et de les lire à partir d'un .fichier mp3. D'abord lire le fichier en mode binaire (qui est, f = open(filename,"rb"), et les données = f.read() -- sur une machine moderne, étant donné qu'un type 5min de la chanson dans .mp3 est d'environ 5 MO, vous pouvez tout aussi bien tout lu en un seul coup).
Il peut également être utile d'écrire un simple (et beaucoup moins efficace) système de codage le long de ces lignes à explorer la façon dont il fonctionne, en ajoutant petit à petit les ficelles systèmes tels que MP3 ou AAC, utilisez comme vous allez. Par exemple, diviser un PCM fichier d'entrée en blocs de 1024 échantillons, l'utilisation d'une FFT ou DCT ou quelque chose, et de retour à nouveau, et de voir comment vous obtenez vos données d'origine de retour. Puis, découverte de la façon dont vous pouvez jeter de données à partir de la fréquence de la version transformée, et de voir l'effet qu'elle a lorsqu'il est transformé retour à des données PCM. Alors résultat final sera très pauvres, au premier abord, mais en voyant les problèmes, et de voir ce que par exemple, le MP3 et l'AAC n', vous pouvez apprendre pourquoi ces schémas de compression de faire les choses comme ils le font.
En bref, si votre cas est un 'obtenir des trucs fait" un, vous ne voulez probablement pas à utiliser Python. Si, d'autre part, votre cas est un apprentissage de comment les choses se fait de celui qui est différent. (Comme une règle simple, ce que vous pourriez faire avec optimisée de l'assemblée sur un Pentium 100 depuis les années 90, vous pouvez faire à peu près la même performance à l'aide de Python sur un Core i5 -- quelque chose comme ça, il y a un facteur de 100, ou si dans la performance brute, et une semblable ralentissement de l'utilisation de Python).
Avez-vous essayé d'ouvrir le fichier en lecture mode binaire?