GPU音频处理

时间:2020-11-12 08:45:12

标签: c# gpu

首先,碰巧我是一个吉他手,几乎没有编程知识(老实说,我对此无能为力,对此比较感兴趣)。因此,前几天我正在研究神经网络的工作,这使我开始研究使用视频卡进行数学计算。在诸如Guitar Rig等程序中总会有一些延迟。以我的理解,使用这样的程序转换声音只是用声音执行的数学运算(是的,可能说得太简单和不准确,但我认为本质上是正确的)。而且我想知道是否没有办法实现这样的东西,其中gpu将用于计算而不是cpu?考虑到,例如,在视频游戏中进行渲染时,尽管与音频处理相比,这是一个资源消耗更大的操作,但视频卡上的延迟却很小。

我知道有许多利用图形卡功能的库,但是不确定是否正是我所需要的。我发现只有两种材料以一种或另一种方式与此相关,但是正如我之前所说,我不确定它们是否能很好地工作。如果您知道好的图书馆,请分享。 https://archive.codeplex.com/?p=cudafy

https://www.codeproject.com/Articles/1116907/How-to-Use-Your-GPU-in-NET

此外,我想我很可能会尝试在C#中实现这一点。

4 个答案:

答案 0 :(得分:3)

对不起,马上会让你失望的。我尝试使用神经网络将NVidia CUDA(本机库)用于音频处理。这是我公司的谋生手段,因此我们非常称职。我们发现典型的NVidia卡延迟太长。它们速度很快,这不是问题,但这意味着它们可以在一毫秒内完成数百万次操作。但是,将数据馈送到卡的DMA引擎通常具有几毫秒的延迟。对于视频来说并不是那么糟糕,对于音频来说却很糟糕-视频通常为60 Hz,而音频可以为48000 Hz。

答案 1 :(得分:2)

我完全同意其他答案,因为GPU(可能)对在线音频处理的等待时间可能过多。它们旨在处理相对较大的数据块。

对于流数据(如音频信号)的自定义处理,如果确实要进行所有自定义,则可能需要研究专用的硬件,例如DSPsFPGA。但是随后您正在研究的是硬件而不是软件,那是完全不同的野兽。

话虽这么说,但我对Alchitry的FPGA开发板有一点经验,但并不像某些人所说的那么可怕。

答案 2 :(得分:1)

区别在于视频游戏实际上避免了将大量数据传输到GPU。 CPU到GPU的传输(以及向后)是一项昂贵的操作。将纹理和着色器(GPU“代码”)传输到GPU后,GPU仅需要获取一堆顶点即可渲染每个单独的帧,然后GPU便直接将结果直接发送到显示器。

因此,在可以并行完成的工作量且相对于需要往返于GPU传输数据量的情况下,GPU胜出。为了减少音频延迟,您必须尽快处理相对较小的数据。

对于音频处理,您需要将从音频接口接收的数据块发送到GPU,等待GPU完成处理,然后将处理后的数据发送回CPU,然后将其发送回CPU。音频接口。

答案 3 :(得分:0)

如果您正在寻找低延迟音频处理,请看一下以下内容: https://github.com/exporl/apex

这是一个由鲁汶大学(比利时)的实验性正鼻鼻咽喉科小组开发的用于对人进行听力测量的系统。它包含Bertha库,该库专门用于低延迟音频处理。

(不,我不认为它使用GPU)