2011-04-07 17 views
7

estoy usando la herramienta sox y me gustaría combinar dos archivos de audio, digamos long.ogg y short.ogg para dar salida a un archivo output.ogg. Esto es muy fácil usando $ sox -m long.ogg short.ogg output.ogg.Medias: combinar dos archivos de audio con una almohadilla

La cosa es que me gusta la short.ogg para ser jugado después de n segundos ( mientras long.ogg debe comenzar desde el principio). Para hacerlo, he encontrado el efecto pad. Pero no entiendo la sintaxis para retrasar solo el archivo de entrada short.ogg, no el long.ogg.

he encontrado una manera (sucio) de esta manera (con n = 6):

$ sox short.ogg delayed.ogg pad 6 
$ sox -m long.ogg delayed.ogg output.ogg 

me gustaría no tener que crear un archivo intermedio. Gracias de antemano por tu ayuda.

Respuesta

7

Gracias a icyrock, logré encontrar una solución. Estoy usando:

$ sox short.ogg -p pad 6 0 | sox - -m long.ogg output.ogg 

para múltiples pistas (créditos a Orlando):

$ sox starts-last.mp3 -p pad 2 0 | sox - -m starts-second.mp3 -p pad 2 0 | sox - -m starts-first.mp3 combined.mp3 
+2

cómo hacerlo con varias pistas? 3,4,5 pistas – Mike

+0

Para varias pistas: sox starts-last.mp3 -p pad 2 0 | sox - -m starts-second.mp3 -p pad 2 0 | sox - -m starts-first.mp3 combined.mp3 – Orlando

7

Usted debe ser capaz de hacer algo como:

sox short.ogg -p pad 0 6|sox - long.ogg output.ogg 

-p opción de sox se utiliza para tuberías - básicamente, le dice Medias utilizar la salida estándar como la salida. Usar - como entrada para el segundo sox es en realidad decir que la entrada es stdin (que pasa a ser el stdout de los sox anteriores, ya que estamos conectando con |). pad 0 6 le dice al pad 0 segundos al comienzo y 6 segundos al final.

Espero que esto ayude.

+0

Gracias! De hecho, tuve que agregar la opción de mezcla '-m' porque sin ella, todo el sonido se retrasó. Por favor mira mi edición. – zopieux

+0

No leí la pregunta: lo que escribí se reproducirá en short.ogg, esperaré 6 segundos y luego reproduciré long.ogg, y escribiré el resultado completo en output.ogg. De todos modos, me alegro de que hayas encontrado la solución! Sugiero agregarlo como una respuesta y elegir oficialmente como la solución para los demás con el mismo problema. –

0

Aquí hay otra solución que se benefician de la utilización de comillas dobles. Esto hace que el comando mucho más fácil de leer y muy fácil de extender:

sox −−combine sequence "|sox input/odin.wav -p pad 0 1" "|sox input/dva.wav -p pad 0 1" "|sox input/tri.wav -p pad 0 1" output/test.wav 

Esto sería concatenar los tres archivos, con una pausa de 1 segundo después de cada (Odin, el silencio, DVA, el silencio, tri, el silencio.)

Aplicado a la publicación original, que tendríamos:

sox −−combine sequence "|sox long.ogg -p pad 0 6" "|sox short.ogg -p pad 0 1" newfile.ogg 

(. Probado OK en SoX 14.4.1 en Windows)

apenas he visto ningún ejemplo SoX utilizando comillas dobles, por lo Yo h ope esto ayuda a alguien!

0

También se ejecutó el comando de retardo.

que podría hacer lo siguiente: sox.exe -m short.ogg long.ogg retraso de 6

Esto se fusionará los dos archivos y short.ogg comenzará a 6 segundos de largo.OGG

0

Debido a que no se me permite hacer comentarios, sin embargo, yo sólo quisiera decir que me gusta la respuesta de Fabien, ya que también se puede utilizar con el "NULO" archivo de sonido: por ejemplo,

sox --combine concatenate "|sox -n -p synth 1 sine 300" "|sox -n -p synth 1 sine 400" useful.wav 

Escribirá 1 segundo de tono sinusoidal a 300 Hz seguido de 1 segundo de tono sinusoidal a 400 Hz y escríbalo en el archivo "useful.wav".

sox -n -p synth 1 sine 300 | sox --combine concatenate - farts.wav synth 1 sine 400 

sólo se escribirá 1 segundo de una onda sinusoidal a 400 Hz en el fichero "farts.wav". Al archivo le falta la primera onda sinusoidal a 300 Hz.

Cuestiones relacionadas