GNU/Linux >> Tutoriales Linux >  >> Linux

15 impresionantes ejemplos para manipular archivos de audio usando Sound eXchange (SoX)


Foto cortesía de sean dreilinger


Este artículo forma parte de la serie en curso Software for Geeks. SoX significa So y eX cambio. SoX es una herramienta de utilidad de audio de línea de comandos multiplataforma que funciona en Linux, Windows y MacOS. Es muy útil en las siguientes áreas al manejar archivos de audio y música.

  • Convertidor de archivos de audio
  • Edición de archivos de audio
  • Cambiar atributos de audio
  • Agregar efectos de audio
  • Además de muchas funciones avanzadas de manipulación de sonido


En general, los datos de audio se describen según las siguientes cuatro características:

  1. Velocidad:la frecuencia de muestreo se expresa en muestras por segundo. Por ejemplo, 44100/8000
  2. Tamaño de los datos:la precisión con la que se almacenan los datos. Por ejemplo, 8/16 bits
  3. Codificación de datos:qué codificación utiliza el tipo de datos. Por ejemplo, u-ley,a-ley
  4. Canales:cuántos canales están contenidos en los datos de audio. Por ejemplo, Estéreo 2 canales

SoX admite más de 20 formatos de archivos de audio. Para obtener la lista de todos los formatos admitidos, ejecute sox -h desde la línea de comandos. Uno de los principales beneficios de una herramienta de audio/música de línea de comandos es fácil de usar en secuencias de comandos para realizar tareas más complejas en modo por lotes.

Los 15 ejemplos mencionados a continuación se pueden usar para manipular archivos de audio en Unix, Windows y MacOS. Asegúrese de descargar la utilidad SoX correspondiente a su plataforma desde la página de descarga de SoX – Sound eXchange.

1. Combine varios archivos de audio en un solo archivo

Con el indicador -m, sox agrega dos archivos de entrada para producir su salida. El siguiente ejemplo agrega first_part.wav y second_part.wav dejando el resultado en whole_part.wav. También puede usar el comando soxmix para este propósito.

$ sox -m first_part.wav second_part.wav whole_part.wav

(or)

$ soxmix first_part.wav second_part.wav whole_part.wav

2. Extraer parte del archivo de audio

Trim puede eliminar el audio no deseado del archivo de audio.

Syntax : sox old.wav new.wav trim [SECOND TO START] [SECONDS DURATION].
  • SEGUNDO PARA COMENZAR:punto de inicio en el archivo de voz.
  • DURACIÓN DE SEGUNDOS:duración del archivo de voz para eliminar.

El siguiente comando extraerá los primeros 10 segundos de input.wav y los almacenará en output.wav

$ sox input.wav output.wav trim 0 10

3. Aumentar y disminuir el volumen con la opción -v

La opción -v se usa para cambiar (aumentar o disminuir) el volumen.

Aumentar el volumen

$ sox -v 2.0 foo.wav bar.wav

Disminuir volumen

Si necesitamos bajar el volumen de algunos archivos, podemos bajarlos usando números negativos. Un número negativo más bajo se volverá más suave. En el siguiente ejemplo, el primer comando (-0,5) será más fuerte que el segundo comando (-0,1)

$ sox -v -0.5 srcfile.wav test05.wav

$ sox -v -0.1 srcfile.wav test01.wav

4. Obtener información del archivo de audio

La opción stat puede proporcionar mucha información estadística sobre un archivo de audio dado. El indicador -e le dice a sox que no genere ningún resultado que no sea la información estadística.

$ sox foo.wav -e stat
Samples read: 3528000
Length (seconds): 40.000000
Scaled by: 2147483647.0
Maximum amplitude: 0.999969
Minimum amplitude: -1.000000
Midline amplitude: -0.000015
Mean norm: 0.217511
Mean amplitude: 0.003408
RMS amplitude: 0.283895
Maximum delta: 1.478455
Minimum delta: 0.000000
Mean delta: 0.115616
RMS delta: 0.161088
Rough frequency: 3982
Volume adjustment: 1.000

5. Reproducir una canción de audio

Sox ofrece la opción de reproducir y grabar archivos de sonido. Este ejemplo explica cómo reproducir un archivo de audio en Unix, Linux. La reproducción de un archivo de sonido se logra copiando el archivo en el archivo especial del dispositivo /dev/dsp. El siguiente comando reproduce el archivo music.wav:Opción -t especifica el tipo de archivo /dev/dsp.

$ sox music.wav -t ossdsp /dev/dsp

También puede usar el comando de reproducción para reproducir el archivo de audio como se muestra a continuación.

Syntax :play options Filename audio_effects

$ play -r 8000 -w music.wav

6. Reproducir una canción de audio al revés

Use el efecto 'inverso' para invertir el sonido en un archivo de sonido. Esto revertirá el archivo y almacenará el resultado en output.wav

$ sox input.wav output.wav reverse

También puede usar el comando de reproducción para escuchar la canción al revés sin modificar el archivo fuente como se muestra a continuación.

$ play test.wav reverse

7. Grabar un archivo de voz

Los comandos 'play' y 'rec' son comandos complementarios para sox. /dev/dsp es el dispositivo de grabación y muestreo digital. La lectura del dispositivo activa el convertidor A/D para la grabación y el análisis de sonido. El archivo /dev/dsp funciona tanto para reproducir como para grabar muestras de sonido.

$ sox -t ossdsp /dev/dsp test.wav

También puede usar el comando rec para grabar voz. Si se invoca SoX como "rec", el dispositivo de sonido predeterminado se usa como fuente de entrada.

$ rec -r 8000 -c 1 record_voice.wav

8. Cambiar la frecuencia de muestreo de un archivo de sonido

Para cambiar la frecuencia de muestreo de un archivo de sonido, utilice la opción -r seguida de la frecuencia de muestreo a utilizar, en hercios. Use el siguiente ejemplo para cambiar la frecuencia de muestreo del archivo 'old.wav' a 16000 Hz y escriba la salida en 'new.wav'

$ sox old.wav -r 16000 new.wav

9. Cambiar el tamaño de muestreo de un archivo de sonido

Si aumentamos el tamaño de la muestra, obtendremos una mejor calidad. El tamaño de muestra para audio se suele expresar como 8 bits o 16 bits. El audio de 8 bits se usa más a menudo para la grabación de voz.

  • -b Tamaño de datos de muestra en bytes
  • -w Tamaño de datos de muestra en palabras
  • -l Tamaño de datos de muestra en palabras largas
  • -d Tamaño de datos de muestra en palabras largas dobles

El siguiente ejemplo convertirá un archivo de audio de 8 bits en un archivo de audio de 16 bits.

$ sox -b input.wav -w output.wav

10. Cambiar el número de canales

El siguiente ejemplo convierte archivos de audio mono a estéreo . Use la opción -c para especificar el número de canales.

$ sox mono.wav -c 2 stereo.wav

Existen métodos para convertir archivos de sonido estéreo a sonido mono . es decir, obtener un solo canal de un archivo estéreo.

Seleccionar un canal en particular

Esto se hace usando el efecto promedio con una opción que indica qué canal usar. Las opciones son -l para la izquierda, -r para la derecha, -f para el frente y -b para la parte posterior. El siguiente ejemplo extraerá el canal izquierdo

$ sox stereo.wav -c 1 mono.wav avg -l

Promedio de los canales

$ sox stereo.wav -c 1 mono.wav avg

11. Convertidor de audio - Conversión de formato de archivo de música

Sox es útil para convertir un formato de audio a otro. es decir, de una codificación (ALAW, MP3) a otra. Sox puede reconocer los formatos de entrada y salida deseados analizando las extensiones de nombre de archivo. Tomará infile.ulaw y creará un archivo codificado GSM llamado outfile.gsm. También puede usar sox para convertir wav a mp3 .

$ sox infile.ulaw outfile.gsm

Si el archivo no tiene una extensión en su nombre, usando la opción '-t' podemos expresar nuestra intención. La opción -t  se utiliza para especificar el tipo de codificación.

$ sox -t ulaw infile -t gsm outfile

12. Genera diferentes tipos de sonidos

Usando el efecto de sintetizador, podemos generar una serie de formas de onda estándar y tipos de ruido. Aunque este efecto se usa para generar audio, aún se debe proporcionar un archivo de entrada, la opción '-n' se usa para especificar el archivo de entrada como archivo nulo.

$ sox -n synth len type freq
  • largo – longitud del audio a sintetizar. El formato para especificar longitudes en el tiempo es hh:mm:ss.frac
  • tipo es uno de los siguientes:seno, cuadrado, triángulo, diente de sierra, trapecio, exp, ruido [blanco], ruido rosa,
    ruido marrón. El valor predeterminado es seno
  • f requisito – frecuencias al principio/final de la síntesis en Hz

El siguiente ejemplo produce un archivo de audio de 8000 kHz de 3 segundos que contiene una onda sinusoidal barrida de 300 a 3300 Hz

$ sox -r 8000 -n output.au synth 3 sine 300-3300

13. Acelera el sonido en un archivo de audio

Para acelerar o ralentizar el sonido de un archivo, utilice la velocidad para modificar el tono y la duración del archivo. Esto aumenta la velocidad y reduce el tiempo. El factor predeterminado es 1,0, que no modifica el audio. 2.0 duplica la velocidad, por lo que la duración del tiempo se reduce a la mitad y el tono es un intervalo más alto.

Syntax: sox input.wav output.wav speed factor

$ sox input.wav output.wav speed 2.0

14. Múltiples cambios al archivo de audio en un solo comando

De forma predeterminada, SoX intenta escribir datos de audio utilizando el mismo tipo de datos, frecuencia de muestreo y número de canales que los datos de entrada. Si el usuario desea que el archivo de salida tenga un formato diferente, debe especificar las opciones de formato. Si un formato de archivo de salida no admite el mismo tipo de datos, frecuencia de muestreo o recuento de canales que el formato de archivo de entrada dado, SoX seleccionará automáticamente los valores más cercanos que admita.

Convirtiendo un wav a raw. El siguiente ejemplo convierte la frecuencia de muestreo, el tamaño de muestreo, el canal en una sola línea de comando.

$ sox -r 8000 -w -c 1 -t wav source -r 16000 -b -c 2 -t raw destination

15. Convertir archivo de audio sin formato a archivo de música MP3

No hay forma de convertir directamente un archivo sin formato a mp3 porque el mp3 requerirá información de compresión del archivo sin formato. Primero necesitamos convertir raw a wav. Y luego convertir wav a mp3. En el ejemplo a continuación, la opción -h indica alta calidad.

Convertir formato sin formato a formato Wav:

$ sox -w -c 2 -r 8000 audio1.raw audio1.wav

Convertir formato Wav a formato MP3:

$ lame -h audio1.wav audio1.mp3


Este artículo fue escrito por SelvaGaneshan. S Trabaja en bk Systems (p) Ltd y está interesado en contribuir al código abierto. The Geek Stuff agradece sus consejos y artículos de invitados


Linux
  1. Guía de Ansible:Administrar archivos usando Ansible

  2. Uso de Logrotate en Linux para administrar archivos de registro (con ejemplos)

  3. ¿Cómo analizar un segmento de un archivo de audio con Sox?

  4. 5 ejemplos de comandos Wget para descargar archivos en Linux.

  5. Crear archivos usando la línea de comando en Linux

Cómo dividir archivos de audio grandes en Linux

Cómo compartir archivos localmente en Linux usando NitroShare

Uso de Cat Command en Linux con ejemplos

¿No puede encontrar el archivo grabado con Gnome Sound Recorder?

Transferir archivos usando WinSCP

Combinar manualmente dos archivos usando diff