Acontece que isso é totalmente possível com o SoX, mesmo com apenas uma invocação do SoX, usando trim
e splice
effects. Mas os argumentos numéricos não são simples de escrever. Todas as regiões de recorte, exceto a última, devem incluir uma quantidade adicional de tempo no final que será usada para o crossfading, e os argumentos para emenda também devem especificar os comprimentos apropriados da 1ª região, incluindo o tempo extra, 1º + 2º após o primeiro splicing, 1º + 2º + 3º, etc.
Eu escrevi um script que faz isso (no idioma Scala), e vou lançá-lo, mais cedo ou mais tarde.
Há uma desvantagem no Sox, parece que o efeito trim
não funciona com o formato de ponto flutuante, então no final os dados de áudio são convertidos para (no máximo) formato inteiro de 24 bits, isso pode ser aceitável ou não seu caso de uso.