我在 Centos 6.0 上使用 sox 14.2.0。
我有两个单声道wav 文件left.wav和right.wav. 我需要将它们组合成一个stereo.ogg文件,left.wav向左right.wav平移 80%,向右平移 80%。
我无法想出为此所需的袜子选项。我该怎么做呢?
这将对许多文件重复执行,所以我更喜欢一个有效的解决方案。据我所知,应该有一种方法可以一次性完成(一次调用 sox)。
haimgs 命令不完全正确。传统上,您通过仅降低一个通道的音量来进行平移。这意味着:如果您希望信号保留 80%,则左声道保持原始音量,而右声道仅获得原始音量的 20%。至少这就是 sox 的平移代码所做的(也是 Alan Blumlein 在发明立体声时似乎所提出的)。
此外,他的命令可以使用 remix-option 来缩短。
因此,更正和缩短的命令是:
sox left.wav right.wav stereo.ogg remix 1,2v0.2 1v0.2,2
编辑对 haimgs 评论的回答:
如果发生削波,sox 会警告您。但是,是的,这是可能的。使用混音选项,每个通道的音量都以因子 1/n 缩放,其中 n 是输入通道的数量。但这仅在为输出通道指定 NO VULME OPTION 时使用(因此您的 100% + 20% 是正确的)。
sox 还可以选择在没有明确音量信息的情况下缩放任何通道,只需在“remix”后添加“-a”(如“remix -a 1,2v0.2 1v0.2,2”),音量将类似于 50 %+20% = 70%。这非常令人困惑,现在我不确定是否还必须将平移通道音量缩放 1/n,这将导致“remix -a 1,2v0.1 1v0.1,2”,或 50% + 10% = 60%。我将不得不朝这个方向进一步调查。同时,您可以阅读 sox 手册页中的混音部分(也可以在sox 主页上找到)。
进一步反思后编辑:
经过思考之后,我非常确定您也必须将平移体积缩放 1/n。
关于削波问题:通过将所有音量除以通道数,就不会出现此问题。但这并不能保留信号的原始功率,因为信号的功率是对数的,而不是线性的。混合的通道越多,信号应该变得越安静。这就是为什么 sox 也有相应的选项,其中体积按 1/sqrt(n) 缩放。要使用它,只需在混音部分使用“p”而不是“v”并相应地调整值,并在混音语句后添加一个“-p”选项。您可以在此处查看 1/n 和 1/sqrt(n) 缩放的差异。
以下是我如何计算正确的功率值:对于每个通道,您必须求解 20*log_10(因子)。系数 2 将导致 ~6(dB),系数 0.5 将导致 ~-6(dB)。这正是红袜队手册所说的,所以我想这是对的。
所以,最后你的情况的命令应该是:
sox left.wav right.wav stereo.ogg remix -p -a 1,2p-6 1p-6,2
我这台机器上没有 sox,所以我无法测试这个命令的语法是否正确,所以请告诉我是否有问题。一旦有机会,我就会测试所有这些理论,因为我将面临类似的问题,但我将不得不混合更多的通道,而不仅仅是 2 个,这就是为什么我想出了信号功率的东西。
小智 5
不知何故,以上所有为我产生了错误。这对我有用(Ubuntu 14.04 上的 SOX):
sox -M -c 1 lef.wav -c 1 right.wav output.mp3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15881 次 |
| 最近记录: |