GNU/Linux >> Tutoriels Linux >  >> Linux

15 exemples impressionnants pour manipuler des fichiers audio à l'aide de Sound eXchange (SoX)


Photo publiée avec l'aimable autorisation de sean dreilinger


Cet article fait partie de la série Software for Geeks en cours. SoX signifie Alors et eX monnaie. SoX est un outil utilitaire audio en ligne de commande multiplateforme qui fonctionne sous Linux, Windows et MacOS. Il est très utile dans les domaines suivants lors du traitement de fichiers audio et musicaux.

  • Convertisseur de fichiers audio
  • Édition de fichiers audio
  • Modification des attributs audio
  • Ajout d'effets audio
  • Plus de nombreuses fonctionnalités avancées de manipulation du son


En général, les données audio sont décrites par les quatre caractéristiques suivantes :

  1. Taux - Le taux d'échantillonnage est en échantillons par seconde. Par exemple, 44100/8000
  2. Taille des données – La précision avec laquelle les données sont stockées.  Par exemple, 8/16 bits
  3. Encodage des données – Quel encodage le type de données utilise. Par exemple, u-law,a-law
  4. Channels - Combien de canaux sont contenus dans les données audio. Par exemple, stéréo 2 canaux

SoX prend en charge plus de 20 formats de fichiers audio. Pour obtenir la liste de tous les formats pris en charge, exécutez sox -h à partir de la ligne de commande. L'un des principaux avantages d'un outil audio/musique en ligne de commande est sa facilité d'utilisation dans les scripts pour effectuer des tâches plus complexes en mode batch.

Les 15 exemples mentionnés ci-dessous peuvent être utilisés pour manipuler des fichiers audio sous Unix, Windows et MacOS. Assurez-vous de télécharger l'utilitaire SoX correspondant à votre plate-forme à partir de la page de téléchargement de SoX – Sound eXchange.

1. Combiner plusieurs fichiers audio en un seul fichier

Avec l'indicateur -m, sox ajoute deux fichiers d'entrée ensemble pour produire sa sortie. L'exemple ci-dessous ajoute first_part.wav et second_part.wav en laissant le résultat dans whole_part.wav. Vous pouvez également utiliser la commande soxmix à cette fin.

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

(or)

$ soxmix first_part.wav second_part.wav whole_part.wav

2. Extraire une partie du fichier audio

Trim peut couper l'audio indésirable du fichier audio.

Syntax : sox old.wav new.wav trim [SECOND TO START] [SECONDS DURATION].
  • DEUXIÈME POUR COMMENCER – Point de départ dans le fichier vocal.
  • SECONDS DURATION – Durée du fichier vocal à supprimer.

La commande ci-dessous extraira les 10 premières secondes de input.wav et les stockera dans output.wav

$ sox input.wav output.wav trim 0 10

3. Augmenter et diminuer le volume à l'aide de l'option -v

L'option -v est utilisée pour modifier (augmenter ou diminuer) le volume.

Augmenter le volume

$ sox -v 2.0 foo.wav bar.wav

Diminuer le volume

Si nous devons réduire le volume de certains fichiers, nous pouvons les réduire en utilisant des nombres négatifs. Le nombre négatif inférieur deviendra plus doux. Dans l'exemple suivant, la 1ère commande (-0.5) sera plus forte que la 2ème commande (-0.1)

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

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

4. Obtenir des informations sur le fichier audio

L'option stat peut fournir de nombreuses informations statistiques sur un fichier audio donné. Le drapeau -e indique à sox de ne générer aucune sortie autre que les informations statistiques.

$ 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. Lire une chanson audio

Sox offre la possibilité de lire et d'enregistrer des fichiers audio. Cet exemple explique comment lire un fichier audio sous Unix, Linux. La lecture d'un fichier son s'effectue en copiant le fichier dans le fichier spécial du périphérique /dev/dsp. La commande suivante lit le fichier music.wav :l'option -t spécifie le type de fichier /dev/dsp.

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

Vous pouvez également utiliser la commande de lecture pour lire le fichier audio comme indiqué ci-dessous.

Syntax :play options Filename audio_effects

$ play -r 8000 -w music.wav

6. Lire une chanson audio à l'envers

Utilisez l'effet "reverse" pour inverser le son d'un fichier son. Cela inversera le fichier et stockera le résultat dans output.wav

$ sox input.wav output.wav reverse

Vous pouvez également utiliser la commande de lecture pour écouter la chanson à l'envers sans modifier le fichier source, comme indiqué ci-dessous.

$ play test.wav reverse

7. Enregistrer un fichier vocal

Les commandes 'play' et 'rec' sont des commandes complémentaires pour sox . /dev/dsp est le périphérique d'échantillonnage et d'enregistrement numérique. La lecture de l'appareil active le convertisseur A/N pour l'enregistrement et l'analyse du son. Le fichier /dev/dsp fonctionne à la fois pour la lecture et l'enregistrement d'échantillons sonores.

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

Vous pouvez également utiliser la commande rec pour enregistrer la voix. Si SoX est appelé en tant que "rec", le périphérique audio par défaut est utilisé comme source d'entrée.

$ rec -r 8000 -c 1 record_voice.wav

8. Modification du taux d'échantillonnage d'un fichier son

Pour modifier le taux d'échantillonnage d'un fichier son, utilisez l'option -r suivie du taux d'échantillonnage à utiliser, en Hertz. Utilisez l'exemple suivant pour modifier le taux d'échantillonnage du fichier "old.wav" à 16 000 Hz et écrivez la sortie dans "new.wav"

$ sox old.wav -r 16000 new.wav

9. Modification de la taille d'échantillonnage d'un fichier son

Si nous augmentons la taille de l'échantillon, nous obtiendrons une meilleure qualité. La taille d'échantillon pour l'audio est le plus souvent exprimée en 8 bits ou 16 bits. L'audio 8 bits est plus souvent utilisé pour l'enregistrement vocal.

  • -b Exemple de taille de données en octets
  • -w Exemple de taille de données en mots
  • -l Exemple de taille de données en mots longs
  • -d Exemple de taille de données en doubles mots longs

L'exemple suivant convertira un fichier audio 8 bits en fichier audio 16 bits.

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

10. Modification du nombre de canaux

L'exemple suivant convertit des fichiers audio mono en stéréo . Utilisez l'option -c pour spécifier le nombre de canaux .

$ sox mono.wav -c 2 stereo.wav

Il existe des méthodes pour convertir les fichiers son stéréo en son mono . c'est-à-dire pour obtenir un seul canal à partir d'un fichier stéréo.

Sélectionner une chaîne particulière

Cela se fait en utilisant l'effet avg avec une option indiquant quel canal utiliser. Les options sont -l pour gauche, -r pour droite, -f pour avant et -b pour arrière. L'exemple suivant extraira le canal gauche

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

Moyenne des chaînes

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

11. Convertisseur audio - Conversion de format de fichier musical

Sox est utile pour convertir un format audio en un autre. c'est-à-dire d'un encodage (ALAW, MP3) à un autre. Sox peut reconnaître les formats d'entrée et de sortie souhaités en analysant les extensions de nom de fichier. Il prendra infile.ulaw et créera un fichier encodé GSM appelé outfile.gsm. Vous pouvez également utiliser sox pour convertir wav en mp3 .

$ sox infile.ulaw outfile.gsm

Si le fichier n'a pas d'extension dans son nom, en utilisant l'option '-t', nous pouvons exprimer notre intention. L'option -t  est utilisée pour spécifier le type d'encodage .

$ sox -t ulaw infile -t gsm outfile

12. Générer différents types de sons

En utilisant l'effet de synthé, nous pouvons générer un certain nombre de formes d'ondes et de types de bruit standard. Bien que cet effet soit utilisé pour générer de l'audio, un fichier d'entrée doit toujours être donné, l'option '-n' est utilisée pour spécifier le fichier d'entrée en tant que fichier nul .

$ sox -n synth len type freq
  • len – longueur de l'audio à synthétiser. Le format pour spécifier les durées dans le temps est hh:mm:ss.frac
  • type est l'un des types sinus, carré, triangle, dents de scie, trapèze, exp, bruit [blanc], bruit rose, bruit brun. La valeur par défaut est le sinus
  • f demande – fréquences de début/fin de synthèse en Hz

L'exemple suivant produit un fichier audio de 3 secondes à 8000 kHz contenant une onde sinusoïdale balayée de 300 à 3300 Hz

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

13. Accélérer le son d'un fichier audio

Pour accélérer ou ralentir le son d'un fichier, utilisez la vitesse pour modifier la hauteur et la durée du fichier. Cela augmente la vitesse et réduit le temps. Le facteur par défaut est 1,0, ce qui ne modifie pas l'audio. 2.0 double la vitesse, donc la durée est réduite de moitié et la hauteur est supérieure d'un intervalle.

Syntax: sox input.wav output.wav speed factor

$ sox input.wav output.wav speed 2.0

14. Modifications multiples du fichier audio en une seule commande

Par défaut, SoX tente d'écrire des données audio en utilisant le même type de données, la même fréquence d'échantillonnage et le même nombre de canaux que pour les données d'entrée. Si l'utilisateur souhaite que le fichier de sortie soit d'un format différent, il doit spécifier les options de format. Si un format de fichier de sortie ne prend pas en charge le même type de données, la même fréquence d'échantillonnage ou le même nombre de canaux que le format de fichier d'entrée donné, SoX sélectionnera automatiquement les valeurs les plus proches qu'il prend en charge.

Convertir un wav en raw. L'exemple suivant convertit le taux d'échantillonnage, la taille d'échantillonnage, le canal en une seule ligne de commande.

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

15. Convertir un fichier audio brut en fichier de musique MP3

Il n'y a aucun moyen de convertir directement le fichier brut en fichier mp3 car le mp3 nécessitera des informations de compression à partir du fichier brut. Nous devons d'abord convertir raw en wav. Et puis convertir wav en mp3. Dans l'exemple ci-dessous, l'option -h indique une haute qualité.

Convertir le format brut au format Wav :

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

Convertir le format Wav au format MP3 :

$ lame -h audio1.wav audio1.mp3


Cet article a été écrit par SelvaGaneshan. S Il travaille chez bk Systems (p) Ltd et souhaite contribuer à l'open source. The Geek Stuff accueille vos conseils et articles invités


Linux
  1. Utilisation de la commande Linux find – Utilisation avec des exemples

  2. 5 Exemples de commandes Wget pour télécharger des fichiers sous Linux.

  3. Créer des fichiers en utilisant la ligne de commande sous Linux

  4. wget vs curl :comment télécharger des fichiers à l'aide de wget et curl

  5. Comment créer des fichiers fragmentés sous Linux à l'aide de la commande "dd"

Comment diviser de gros fichiers audio sous Linux

Comment partager des fichiers localement sur Linux en utilisant NitroShare

Utilisation de la commande Cat sous Linux avec des exemples

Impossible de trouver un fichier enregistré à l'aide de Gnome Sound Recorder ?

Transférer des fichiers à l'aide de WinSCP

Utilisation de scp pour transférer une liste de fichiers .txt