Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有两个长度为 X 的音频文件 A 和另一个长度为 Y (X > Y) 的 B。现在我想用文件 B 替换文件 A 的最后 Y 部分。
例如,文件 A 的长度为 60s,文件 B 的长度为 43s。我需要用文件 B 替换文件 A 的最后 43 秒。
我希望很清楚。
使用 sox 可以做到这一点吗?如何,我需要合并它们吗?如果是这样,那么如何合并它们?
还有什么方法可以自动化吗?就像我不必手动确定两者的长度等一样。
您可以连接两个文件,然后删除不需要的部分:
sox A B O trim 0 17 43
在 bash shell 中,这可以完全自动化,如下所示:
sox A B O trim 0 $(( $(soxi -s A) - $(soxi -s B) ))s $(soxi -s B)s
在这里,soxi -s file用于确定样本中的文件长度。另一种可能性,在管道特殊输入文件中使用第二个 sox 实例:
soxi -s file
sox "| sox A -p trim 0 -$(soxi -s B)s" B O