Criando arquivo estéreo a partir de dois arquivos mono com sox

5

Estou usando o sox 14.2.0 no Centos 6.0.

Eu tenho dois arquivos wav mono , left.wav e right.wav . Eu preciso combiná-los em um arquivo stereo.ogg , com left.wav pan 80% para a esquerda e right.wav pan 80% para a direita.

Não consegui encontrar as opções necessárias para isso. Como faço isso?

Isso será executado repetidamente para muitos arquivos, então prefiro uma solução eficiente. Pelo que entendi, deveria haver uma maneira de fazer isso em uma passagem (uma invocação de sox).

    
por haimg 20.10.2011 / 16:53

4 respostas

3

Veja como isso é feito:

sox left.wav right.wav --channels 2 --combine merge stereo.ogg mixer 0.8,0.2,0.2,0.8

    
por 20.10.2011 / 19:08
4

O comando haimgs não está totalmente certo. Classicamente você faz pan reduzindo o volume de apenas um canal. Isso significa: se você quer que seu sinal fique 80% restante, o canal esquerdo mantém o volume original enquanto o canal direito recebe apenas 20% do volume original. Pelo menos é o que o código de pan do sox fez (e o que Alan Blumlein parece ter estimulado ao inventar estéreo).

Também o seu comando pode ser encurtado usando a opção remix.

Portanto, o comando corrigido e encurtado é:

sox left.wav right.wav stereo.ogg remix 1,2v0.2 1v0.2,2

edite em resposta ao comentário haimgs:

sox irá avisá-lo se houver recortes. Mas sim, é possível. Com a opção remix, todo volume de canais é escalonado com o fator 1 / n, onde n é o número de canais de entrada. Mas isso é usado somente se NO VULME OPTION for especificado para o canal de saída (então seu 100% + 20% está correto).

sox também tem uma opção para escalar qualquer canal sem informações explícitas sobre o volume, apenas adicione um "-a" depois de "remix" (como "remix -a 1,2v0.2 1v0.2,2") e os volumes serão seja como 50% + 20% = 70%. É muito confuso e agora não estou certo se você também tem que escalar o volume dos canais panned em 1 / n, o que resultaria em "remix-a 1,2v0,1 1v0.1,2", ou 50% + 10% = 60%. Vou ter que investigar mais a fundo nessa direção. Enquanto isso, você pode ler a seção de remixes na página man do sox (também disponível na página inicial do sox ).

edite depois de refletir mais:

Depois de pensar sobre isso, eu estou bem certo que você tem que escalar os volumes panned por 1 / n também.

Sobre o problema de recorte: Ao dividir ALL os volumes pelo número de canais, esse problema não pode ocorrer. Mas isso não preserva a potência original do sinal, porque o poder de um sinal é logarítmico, não linear. Quanto mais canais você misturar, mais silencioso o sinal deve se tornar. É por isso que o sox também tem opções para isso, onde os volumes são escalados por 1 / sqrt (n). Para usar isso, basta pegar um "p" em vez de um "v" na parte do remix e ajustar os valores adequadamente, além de adicionar uma opção "-p" após a instrução de remix. Você pode ver a diferença de escala por 1 / n e por 1 / sqrt (n) aqui .

O seguinte é como eu penso em calcular os valores de potência corretos: para cada canal você tem que resolver 20 * log_10 (fator). Um fator de 2 resultará em ~ 6 (dB), um fator de 0.5 resultará em ~ -6 (dB). Isso é exatamente o que o manual do sox diz, então eu acho que isso está certo.

Então, finalmente, o comando no seu caso deve ser:

sox left.wav right.wav stereo.ogg remix -p -a 1,2p-6 1p-6,2

Eu não tenho sox nesta máquina, então não posso testar este comando para a sintaxe correta, então, por favor, diga-me se há algum problema. Vou testar toda essa teoria assim que tiver a chance, porque vou enfrentar um problema parecido, mas vou ter que mixar muito mais canais do que apenas dois, e é por isso que eu inventei esse poder de sinal. / p>     

por 30.11.2011 / 12:42
2

De alguma forma, todos os erros acima geraram para mim. Isso é o que funcionou para mim (SOX no Ubuntu 14.04):

sox -M -c 1 lef.wav -c 1 right.wav output.mp3 
    
por 28.09.2015 / 19:59
0

Use sox com a opção pan para mover um arquivo para a direita e a outra para a esquerda (1 e -1 respectivamente). Então use soxmix para misturar os dois juntos.

    
por 20.10.2011 / 16:58

Tags