python file mp3 duplicates id3

python - ¿Detecta archivos MP3 duplicados con diferentes tasas de bits y/o diferentes etiquetas ID3?



file duplicates (9)

La misma pregunta que las personas en el antiguo AudioScrobbler y actualmente en MusicBrainz han trabajado desde hace mucho tiempo. Por el momento, el proyecto Python que puede ayudar en su búsqueda, es Picard , que etiquetará archivos de audio (no solo archivos MPEG 1 Layer 3) con un GUID (en realidad, varios de ellos), y de ahí en adelante, haciendo coincidir el etiquetas es bastante simple.

Si prefiere hacerlo como un proyecto propio, libofa puede ser de ayuda.

¿Cómo puedo detectar (preferiblemente con Python) archivos duplicados de MP3 que pueden codificarse con diferentes tasas de bits (pero son la misma canción) y etiquetas ID3 que pueden ser incorrectas?

Sé que puedo hacer una suma de comprobación MD5 del contenido de los archivos, pero eso no funcionará para diferentes velocidades de bits. Y no sé si las etiquetas ID3 tienen influencia en la generación de la suma de comprobación MD5. ¿Debería volver a codificar los archivos MP3 que tienen una tasa de bits diferente y luego puedo hacer la suma de comprobación? ¿Que recomiendas?


No creo que las sumas de comprobación simples funcionen alguna vez:

  1. Las etiquetas ID3 afectarán el md5
  2. Los diferentes codificadores codificarán la misma canción de diferentes maneras, por lo que las sumas de verificación serán diferentes
  3. Diferentes velocidades de bits producirán diferentes sumas de comprobación
  4. Volver a codificar un mp3 a una velocidad de bits diferente probablemente suene terrible y sin duda será diferente al audio original comprimido en un solo paso.

Creo que deberás comparar las etiquetas ID3, la longitud de la canción y los nombres de archivo.


Volver a codificar a la misma tasa de bits no funcionará, de hecho puede empeorar las cosas ya que la transcodificación (que es lo que se llama recodificación en diferentes velocidades de bits) va a cambiar la naturaleza de la compresión, usted está recomprimiendo una ya archivo comprimido conducirá a un archivo significativamente diferente.

Esto es un poco fuera de mi alcance, pero abordaría el problema mirando el patrón de onda del MP3. Ya sea convirtiendo el MP3 a un .wav sin comprimir o tal vez simplemente ejecutando el análisis en el archivo MP3 en sí. Debería haber una biblioteca por ahí para esto. Solo una palabra de advertencia, esta es una operación costosa.

Otra idea, usa ReplayGain para escanear los archivos. Si son la misma canción, deben etiquetarse con la misma ganancia. Esto solo funcionará en la misma canción del mismo álbum. Sé de varios casos en que las reediciones se remasterizaron a un volumen mayor, lo que cambió la repetición.

EDITAR:
Es posible que desee consultar http://www.speech.kth.se/snack/ , que aparentemente puede hacer la visualización del espectrograma. Me imagino que cualquier biblioteca que pueda hacer un espectrograma visual puede ayudarlo a compararlos.

Este enlace de la página oficial de python también puede ser útil.


Como dijeron los demás, las sumas de comprobación simples no detectarán duplicados con diferentes tasas de bits o etiquetas ID3. Lo que necesitas es un algoritmo de huellas dactilares de audio. Python Audioprocessing Suite tiene dicho algoritmo, pero no puedo decir qué tan confiable es.

http://rudd-o.com/new-projects/python-audioprocessing


Para problemas con las etiquetas, Picard puede ser una muy buena apuesta. Si, habiendo identificado dos archivos potencialmente duplicados, lo que desea es extraer información de la tasa de bits de ellos, eche un vistazo a mp3guessenc .



El proyecto Dejavu está escrito en Python y hace exactamente lo que estás buscando.

https://github.com/worldveil/dejavu

También es compatible con muchos formatos comunes (.wav, .mp3, etc.) y también encuentra el desplazamiento de tiempo del clip en la pista de audio original.


Puede usar el sucesor para PUID y MusicBrainz, llamado AcoustiD :

AcoustID es un proyecto de código abierto que tiene como objetivo crear una base de datos gratuita de huellas dactilares de audio con una asignación a la base de datos de metadatos MusicBrainz y proporcionar un servicio web para la identificación de archivos de audio utilizando esta base de datos ...

... huellas dactilares junto con algunos metadatos necesarios para identificar las canciones en la base de datos AcoustID ...

Encontrará varias bibliotecas de clientes y ejemplos para el servicio web en https://acoustid.org/


Usaría la longitud como mi heurística primaria. Eso es lo que hace iTunes cuando intenta identificar un CD utilizando la base de datos Gracenote . Mida las longitudes en milisegundos en lugar de segundos. Recuerde, esto es solo una heurística: definitivamente debe escuchar cualquier duplicado detectado antes de eliminarlos.