2010-12-17 14 views
12

Dado un MP3 Me gustaría extraer la forma de onda del archivo en una imagen (.png)¿Cómo puedo crear una imagen de forma de onda de un MP3 en Linux?

¿Hay algún paquete que pueda hacer lo que necesito?

+2

Sí, no es una herramienta que hace exactamente eso: http://www.tuned-project.org/audio-tools –

+0

@ user1217953 - sintonizado enlace de herramientas de audio está muerto, parece estar en https://launchpad.net/tuned-audio-tools/+download (nota, necesitarías 'libgee' y' gstreamer-1.0' para compilar); ver también https://github.com/limikael/rendersound (nota, necesitas un 'libavcodec' relativamente nuevo para compilarlo); vea también [wav2png] (http://stackoverflow.com/a/11067909/277826) – sdaau

Respuesta

2

Si tiene un entorno de interfaz gráfica de usuario puede utilizar el editor de audio audacity para cargar el mp3 y luego usar el comando de impresión para generar un archivo PDF de la forma de onda. Luego convierta el pdf a png.

+0

La pregunta se publica en Desbordamiento de pila. Por lo tanto, creo que es una pregunta de programación. Lo que está ofreciendo es una solución, que solo se puede hacer si tiene un _user_ que lo hará para cada archivo manualmente. No está haciendo -1 porque lo he dicho)) – Septagram

+3

Estaba tratando sinceramente de ser útil (y se podía imprimir audacia asombrada). Además, esto: http://forum.audacityteam.org/viewtopic.php?f=15&t=38341 – Lifeguard

+0

Gracias por la ayuda :) Aunque estaba buscando automatizar el proceso de creación de un espectrograma (imagen) desde un archivo de audio (mp3)) El enlace que enviaste parece realmente útil. Gracias –

2

me gustaría hacer algo como esto:

  • encontrar una herramienta para convertir mp3 a PCM, es decir, datos binarios con uno de 8 o 16 bits valor por muestra. Creo que MPlayer puede hacer eso

  • tubería el resultado de una utilidad de conversión de datos binarios a ASCII representación de los números en formato decimal

  • uso de gnuplot para transformar esta lista de valor en un gráfico PNG.

Y voilà, la potencia de las tuberías entre las herramientas de Unix. Ahora el Paso 2 en esta lista podría ser opcional si gnuplot puede leer sus datos desde un formato binario.

+0

Parece una buena idea. Le dará una oportunidad y le hará saber cómo va. Y sí, gnuplot acepta un archivo de datos binarios como fuente de datos. Gracias –

3

Ésta es una función estándar en SoX (herramienta de línea de comandos para el sonido, Windows & Linux) Comprobar la función 'espectrograma' en http://sox.sourceforge.net/sox.html

"El espectrograma se representa en un archivo de gráficos de red portátiles (PNG), y muestra el tiempo en el eje X, la frecuencia en el eje Y y la magnitud de la señal de audio en el eje Z. Los valores del eje Z están representados por el color (u opcionalmente la intensidad) de los píxeles en el plano XY. la señal de audio contiene múltiples canales, luego estos se muestran de arriba a abajo a partir del canal 1 (que es el canal izquierdo para audio estéreo) ".

+5

Un espectrograma no es una forma de onda ... – sdaau

12

Usando sox y gnuplot puede crear imágenes básicas de forma de onda:

sox audio.mp3 audio.dat #create plaintext file of amplitude values 
tail -n+3 audio.dat > audio_only.dat #remove comments 

# write script file for gnuplot 
echo set term png size 320,180 > audio.gpi #set output format 
echo set output \"audio.png\" >> audio.gpi #set output file 
echo plot \"audio_only.dat\" with lines >> audio.gpi #plot data 

gnuplot audio.gpi #run script 

enter image description here

para crear algo más simple/más bonito, utilice el siguiente archivo de GNU Plot como plantilla (guardarlo como de audio. GPI):

#set output format and size 
set term png size 320,180 

#set output file 
set output "audio.png" 

# set y range 
set yr [-1:1] 

# we want just the data 
unset key 
unset tics 
unset border 
set lmargin 0    
set rmargin 0 
set tmargin 0 
set bmargin 0 

# draw rectangle to change background color 
set obj 1 rectangle behind from screen 0,0 to screen 1,1 
set obj 1 fillstyle solid 1.0 fillcolor rgbcolor "#222222" 

# draw data with foreground color 
plot "audio_only.dat" with lines lt rgb 'white' 

y sólo ejecute:

sox audio.mp3 audio.dat #create plaintext file of amplitude values 
tail -n+3 audio.dat > audio_only.dat #remove comments 

gnuplot audio.gpi #run script 

enter image description here

Basado en this answer a una pregunta similar que es más general en relación con el formato de archivo, pero menos general en lo que respecta a los programas utilizados.

0

Es posible que desee considerar audiowaveform de la BBC.

audiowaveform es una aplicación de línea de comandos C++ que genera datos de forma de onda de archivos de audio en formato MP3, WAV o FLAC.Los datos de forma de onda se pueden usar para producir una representación visual del audio, similar en apariencia a las aplicaciones de edición de audio.

Los archivos de datos de forma de onda se guardan en formato binario (.dat) o JSON (.json). Dado un archivo de datos de forma de onda de entrada, audiowaveform también puede representar la forma de onda de audio como una imagen PNG en un desplazamiento de tiempo y nivel de zoom determinados.

Los datos de forma de onda se producen a partir de una señal de audio estéreo de entrada combinando primero los canales izquierdo y derecho para producir una señal mono. La siguiente etapa es calcular los valores de muestra mínimo y máximo sobre grupos de N muestras de entrada (donde N se controla mediante la opción de línea de comando --zoom), de modo que cada N muestras de entrada produce un par de puntos mínimo y máximo en el salida.

https://github.com/bbcrd/audiowaveform

Cuestiones relacionadas