BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

¿Alguien usa SoX con asiduidad?

BocaDePez

Hola, buenas.

Yo suele usar frecuentemente SoX para editar audios desfasados y sincronizarlos con vídeos. A veces requieren de muchas ediciones e interesa poder agilizar o automatizar procesos.

SoX puede cortar un archivo en diferentes partes y después unirlas en uno solo. Así se puede excluir partes de audio (para así adelantar el audio con respecto al vídeo). Ejemplo:

$ sox infile.wav outfile.wav trim 0 =00:01:25 =00:01:25.25

Lo anterior corta el archivo infile.wav primero desde el principio hasta el 1min 25s, luego lo corta desde 1min 25s y 25 centésimas hasta su final. Por último une las dos partes en outfile.wav. Todo automáticamente, en un solo comando. Así de esta manera estoy suprimiendo 25 centésimas del audio atrasado.

Pero cuando lo que quiero es, no quitar audio, sino añadir, para así atrasar el audio (p.e., 1 segundo del mismo duplicándolo) me da este fallo:

$ sox infile.wav outfile.wav trim 0 =00:01:25 =00:01:24

(sox FAIL trim: Position 2 is behind the following position)

Evidentemente, parece que SoX solamente corta de forma consecutiva: no puede empezar a cortar la segunda parte empezando antes del final de la primera (en el ejemplo no puede empezar a cortar la segunda parte desde 1min 24s, ya que la primera termina en 1min 25s). Al intentar cortar así quiero añadir un segundo más de tiempo al audio (duplico un segundo).

Siempre tengo que hacerlo por separado.

La primera parte (trim 0 =00:01:25):

$ sox infile.wav part01.wav trim 0 =00:01:25

la segunda parte (trim =00:01:24 1):

$ sox infile.wav part02.wav trim =00:01:24 =00:01:25

y la tercera parte (trim =00:01:24 {hasta el final}):

$ sox infile.wav part03.wav trim =00:01:24

Finalmente se unen las tres partes:

$ sox part01.wav part02.wav part03.wav finalfile.wav

PERO yo desearía hacer todo en un solo comando (como en $ sox infile.wav outfile.wav trim 0 =00:01:25 =00:01:25.25).

(Sincronizo muchos audio/video)

Gracias por las respuestas. Un saludo.

superllo

Yo siempre he usado "delay" para retrasar el audio pero era en contenido en directo, no en ficheros grabados. Si tengo un rato lo miro pero me da que va a ser lo que dices.

🗨️ 3
BocaDePez

Gracias por la respuesta, pero delay es para retrasar todo el audio, no desde la marca de tiempo que se desee.

🗨️ 2
superllo

Pues sí, yo es que lo hago para retrasar la radio FM aunque últimamente uso VLC. Igual puedes tirar por la otra parte, cambiar el framerate del vídeo.

🗨️ 1
BocaDePez

Gracias de nuevo, pero el problema es que se trata de un audio con desincronización total: ni cambiando la tasa de fotogramas del vídeo ni cambiando la velocidad de reproducción del audio es suficiente. Cada 4 o 5 minutos tengo que recortar o añadir sonido al audio. El audio es procedente de un VHS y la fuente de vídeo es en alta definición "remasterizada". Toda mi consulta viene para intentar agilizar mi tediosa tarea.