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:
- Frequenza:la frequenza di campionamento è in campioni al secondo. Ad esempio, 44100/8000
- Dimensione dei dati:la precisione in cui sono archiviati i dati. Ad esempio, 8/16 bit
- Codifica dei dati:la codifica utilizzata dal tipo di dati. Ad esempio, u-law,a-law
- 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