GNU/Linux >> Linux Esercitazione >  >> Linux

15 fantastici esempi per manipolare file audio utilizzando Sound eXchange (SoX)


Foto per gentile concessione di sean dreilinger


Questo articolo fa parte della serie in corso Software for Geeks. SoX sta per Così e X modificare. SoX è uno strumento di utilità audio da riga di comando multipiattaforma che funziona su Linux, Windows e MacOS. È molto utile nelle seguenti aree durante la gestione di file audio e musicali.

  • Convertitore di file audio
  • Modifica di file audio
  • Modifica degli attributi audio
  • Aggiunta di effetti audio
  • Più molte funzioni avanzate di manipolazione del suono


In generale, i dati audio sono descritti dalle seguenti quattro caratteristiche:

  1. Frequenza:la frequenza di campionamento è in campioni al secondo. Ad esempio, 44100/8000
  2. Dimensione dei dati:la precisione in cui sono archiviati i dati.  Ad esempio, 8/16 bit
  3. Codifica dei dati:la codifica utilizzata dal tipo di dati. Ad esempio, u-law,a-law
  4. Canali:quanti canali sono contenuti nei dati audio. Ad esempio, Stereo 2 canali

SoX supporta oltre 20 formati di file audio. Per ottenere l'elenco di tutti i formati supportati, eseguire sox -h dalla riga di comando. Uno dei principali vantaggi di uno strumento audio/musicale da riga di comando è la facilità d'uso negli script per eseguire attività più complesse in modalità batch.

Tutti i 15 esempi menzionati di seguito possono essere utilizzati per manipolare file audio su Unix, Windows e MacOS. Assicurati di scaricare l'utility SoX corrispondente per la tua piattaforma dalla pagina di download di SoX – Sound eXchange.

1. Combina più file audio in un unico file

Con il flag -m, sox aggiunge due file di input insieme per produrre il suo output. L'esempio seguente aggiunge first_part.wav e second_part.wav lasciando il risultato in whole_part.wav. Puoi anche usare il comando soxmix per questo scopo.

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

(or)

$ soxmix first_part.wav second_part.wav whole_part.wav

2. Estrai parte del file audio

Il taglio può eliminare l'audio indesiderato dal file audio.

Syntax : sox old.wav new.wav trim [SECOND TO START] [SECONDS DURATION].
  • SECOND TO START – Punto di partenza nel file vocale.
  • DURATA SECONDI – Durata del file vocale da rimuovere.

Il comando seguente estrarrà i primi 10 secondi da input.wav e li memorizzerà in output.wav

$ sox input.wav output.wav trim 0 10

3. Aumenta e diminuisci il volume usando l'opzione -v

L'opzione -v viene utilizzata per modificare (aumentare o diminuire ) il volume.

Aumenta il volume

$ sox -v 2.0 foo.wav bar.wav

Diminuisci volume

Se abbiamo bisogno di abbassare il volume su alcuni file, possiamo abbassarli usando numeri negativi. Un numero negativo più basso diventerà più morbido. Nell'esempio seguente, il 1° comando (-0.5) sarà più forte del 2° comando (-0.1)

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

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

4. Ottieni informazioni sui file audio

L'opzione stat può fornire molte informazioni statistiche su un determinato file audio. Il flag -e dice a Sox di non generare alcun output diverso dalle informazioni statistiche.

$ 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. Riproduci un brano audio

Sox offre la possibilità di riprodurre e registrare file audio. Questo esempio spiega come riprodurre un file audio su Unix, Linux. La riproduzione di un file audio viene eseguita copiando il file nel file speciale del dispositivo /dev/dsp. Il comando seguente riproduce il file music.wav:Opzione -t specifica il tipo di file /dev/dsp.

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

Puoi anche usare il comando di riproduzione per riprodurre il file audio come mostrato di seguito.

Syntax :play options Filename audio_effects

$ play -r 8000 -w music.wav

6. Riproduci un brano audio al contrario

Usa l'effetto "reverse" per invertire il suono in un file audio. Questo invertirà il file e memorizzerà il risultato in output.wav

$ sox input.wav output.wav reverse

Puoi anche usare il comando di riproduzione per ascoltare il brano al contrario senza modificare il file sorgente come mostrato di seguito.

$ play test.wav reverse

7. Registra un file vocale

I comandi "play" e "rec" sono comandi complementari per sox . /dev/dsp è il dispositivo di campionamento digitale e registrazione digitale. La lettura del dispositivo attiva il convertitore A/D per la registrazione e l'analisi del suono. Il file /dev/dsp funziona sia per la riproduzione che per la registrazione di campioni audio.

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

Puoi anche usare il comando rec per registrare la voce. Se SoX viene invocato come "rec", il dispositivo audio predefinito viene utilizzato come sorgente di ingresso.

$ rec -r 8000 -c 1 record_voice.wav

8. Modifica della frequenza di campionamento di un file audio

Per modificare la frequenza di campionamento di un file audio, utilizzare l'opzione -r seguita dalla frequenza di campionamento da utilizzare, in Hertz. Utilizzare l'esempio seguente per modificare la frequenza di campionamento del file "old.wav" su 16000 Hz e scrivere l'output in "new.wav"

$ sox old.wav -r 16000 new.wav

9. Modifica della dimensione di campionamento di un file audio

Se aumentiamo la dimensione del campionamento, otterremo una qualità migliore. La dimensione del campione per l'audio è spesso espressa come 8 bit o 16 bit. L'audio a 8 bit è più spesso utilizzato per la registrazione vocale.

  • -b Esempio di dimensione dei dati in byte
  • -w Esempio di dimensione dei dati in parole
  • -l Esempio di dimensione dei dati in parole lunghe
  • -d Esempio di dimensione dei dati in parole doppie lunghe

L'esempio seguente converte un file audio a 8 bit in un file audio a 16 bit.

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

10. Modifica del numero di canali

L'esempio seguente converte i file audio mono in stereo . Usa Opzione -c per specificare il numero di canali .

$ sox mono.wav -c 2 stereo.wav

Esistono metodi per convertire file audio stereo in audio mono . cioè per ottenere un singolo canale da un file stereo.

Selezione di un canale particolare

Questo viene fatto usando l'effetto avg con un'opzione che indica quale canale usare. Le opzioni sono -l per sinistra, -r per destra, -f per fronte e -b per dietro. L'esempio seguente estrarrà il canale sinistro

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

Media dei canali

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

11. Convertitore audio:conversione del formato di file musicali

Sox è utile per convertire un formato audio in un altro. cioè da una codifica (ALAW, MP3) a un'altra. Sox è in grado di riconoscere i formati di input e di output desiderati analizzando le estensioni dei nomi dei file. Prenderà infile.ulaw e creerà un file codificato GSM chiamato outfile.gsm. Puoi anche usare sox per convertire wav in mp3 .

$ sox infile.ulaw outfile.gsm

Se il file non ha un'estensione nel suo nome, usando l'opzione '-t' possiamo esprimere la nostra intenzione. L'opzione -t viene utilizzata per specificare il tipo di codifica .

$ sox -t ulaw infile -t gsm outfile

12. Genera diversi tipi di suoni

Usando l'effetto synth possiamo generare una serie di forme d'onda standard e tipi di rumore. Sebbene questo effetto venga utilizzato per generare audio, è comunque necessario fornire un file di input, l'opzione '-n' viene utilizzata per specificare il file di input come file nullo.

$ sox -n synth len type freq
  • len – lunghezza dell'audio da sintetizzare. Il formato per specificare le lunghezze nel tempo è hh:mm:ss.frac
  • digitare è uno di seno, quadrato, triangolo, dente di sega, trapezio, exp, [white]noise, pinknoise, brown-
    noise. L'impostazione predefinita è seno
  • f richiesto – frequenze di inizio/fine sintesi in Hz

L'esempio seguente produce un file audio di 3 secondi a 8000 kHz contenente un'onda sinusoidale con sweep da 300 a 3300 Hz

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

13. Velocizza il suono in un file audio

Per accelerare o rallentare il suono di un file, usa la velocità per modificare il tono e la durata del file. Ciò aumenta la velocità e riduce il tempo. Il fattore predefinito è 1,0 che non apporta modifiche all'audio. 2.0 raddoppia la velocità, quindi la durata viene ridotta della metà e il tono è un intervallo più alto.

Syntax: sox input.wav output.wav speed factor

$ sox input.wav output.wav speed 2.0

14. Modifiche multiple al file audio in un unico comando

Per impostazione predefinita, SoX tenta di scrivere dati audio utilizzando lo stesso tipo di dati, frequenza di campionamento e conteggio dei canali dei dati di input. Se l'utente desidera che il file di output sia di un formato diverso, deve specificare le opzioni di formato. Se un formato di file di output non supporta lo stesso tipo di dati, frequenza di campionamento o conteggio dei canali del formato di file di input specificato, SoX selezionerà automaticamente i valori più vicini supportati.

Conversione di un wav in raw. L'esempio seguente converte la frequenza di campionamento, la dimensione di campionamento, il canale in un'unica riga di comando.

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

15. Converti file audio non elaborato in file musicale MP3

Non c'è modo di convertire direttamente il file raw in mp3 perché mp3 richiederà le informazioni di compressione dal file raw. Per prima cosa dobbiamo convertire raw in wav. E poi converti wav in mp3. Nell'esempio seguente, l'opzione -h indica alta qualità.

Convertire il formato Raw in formato Wav:

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

Converti il ​​formato Wav in formato MP3:

$ lame -h audio1.wav audio1.mp3


Questo articolo è stato scritto da SelvaGaneshan. S Lavora presso bk Systems (p) Ltd ed è interessato a contribuire all'open source. The Geek Stuff accoglie con favore i tuoi suggerimenti e gli articoli degli ospiti


Linux
  1. Converti file audio con questo versatile comando Linux

  2. Guida di Ansible:gestisci i file utilizzando Ansible

  3. 5 Esempi di comandi Wget per scaricare file in Linux.

  4. Crea file utilizzando la riga di comando in Linux

  5. wget vs curl:come scaricare file usando wget e curl

Come dividere file audio di grandi dimensioni su Linux

Come condividere file localmente su Linux utilizzando NitroShare

Utilizzo di Cat Command in Linux con esempi

Non riesci a trovare il file registrato usando Gnome Sound Recorder?

Trasferisci file usando WinSCP

Utilizzo di scp per trasferire un elenco di file .txt di file