服务器端音频混音器。有什么可用的? (Csound可以这样做吗?)

StackOverflow https://stackoverflow.com/questions/1803131

  •  05-07-2019
  •  | 
  •  

我有兴趣了解是否存在可以执行以下任务的程序或库,并且适合作为网站上服务器端进程的一部分运行。 (如果单个页面请求的合理时间超过200毫秒,那也没关系 - 我可以将它作为异步进程运行。)

任务是这样的:我输入了一组音频文件,我有一些关于每个音频文件何时应该开始在时间轴中播放的数据。程序应该输出一个音频文件,它是输入音频的混合,使用时间线数据组合。也就是说,我想要一个以批处理模式运行的音频混音器,而不是实时的。

我已经完成了一些谷歌搜索,但有点沮丧,因为我不确定我应该寻找什么。大多数音频混音器似乎都面向像游戏这样的实时应用程序,而且我不确定如何找到执行此任务的东西,就像命令行实用程序一样 - 纯粹接受输入,并尽可能快地生成输出。

我希望这个问题有道理。

编辑:有人对 Csound 发表了评论,然后将其删除。什么是Csound?做我要问的是相对简单的吗?请记住,我的输入声音文件可能在10-50秒之间,我对音调失真不感兴趣。

你将如何在Csound中实现这一目标?

除了Csound还有什么可以做这种事情吗?

有帮助吗?

解决方案

你绝对可以使用Csound,它可以通过多种方式实现。不幸的是,我对Csound的一个相当新生的研究更多地涉及音频合成和算法组合而不是采样和处理,所以我不能提供强有力的实现建议。

但是,我猜你的项目的 orchestra文件(包含音频合成和处理信息的Csound程序的一部分,包含在名为 instruments 的模块中)将涉及 soundin 操作码,从音频文件中读取,然后它会缩放各种流的幅度并在传递到输出之前将它们混合。

时间线可能会在得分文件(处理乐器和功能表初始化的Csound程序部分)中处理,这会将时间轴数据转换为回放时间。

您也可以查找Csound的 GEN01 子程序,该子程序将文件中的音频数据读入功能表。

其他提示

如果您愿意考虑在此过程中运行批处理脚本,您可能会发现有用的 SoX 。它的“混合器”是指它的混合器。和“重新混合”虽然您可能需要在声音文件的开头渲染空白空间来处理偏移量,但命令看起来可能会有所帮助。

您应该查看 SuperCollider 。也许这会为你做到这一点。

PHP的 OpenAL绑定之类的东西?

您可以查看 BASS音频库。我无法看到它是否可以比实时更快地混合,因为它在防火墙处被阻止,但我发现它在过去使用起来很友好。

由于您提出问题的方式,您可能会收到很多关于实时音频解决方案的建议:

  

程序应输出音频   文件是输入的混合   音频,使用时间线组合   数据

“输入音频”非常模糊。对我来说,它听起来像一个实时输入流(如麦克风)。 如果您根本不处理实时I / O流,那么是的,Csound可能是候选者。网上有很多Csound教程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top