【问题标题】:Audio libraries for digital signal processing in C#C# 中用于数字信号处理的音频库
【发布时间】:2010-12-23 20:30:04
【问题描述】:

我的问题是这样的:

我正在开发一个相当小的应用程序(它需要能够在未来增长,但目前,有限的功能就足够了)接收音频(16 位单声道 @ 44.1kHz)并执行傅里叶变换和过滤数据。我在你能想象到的所有领域的经验是有限的,但我最近一直在研究它并且有一些了解。我的资金有限,我无法使用 GPL 或类似许可下的任何库(我需要能够分发这个应用程序)。对于信号处理,我选择了 MathNet 库,这似乎可以处理大部分处理(并且我将编写必要的过滤器)。

真正的问题是找到要使用的声音库 - 我希望在 C# 中使用一些东西,虽然 directSound 似乎是最好的选择,但我不愿意使用它,因为微软几乎放弃了它(我的公司work for 将在不久的将来升级其装备;我只想尽可能延长应用程序的寿命)。我使用 XAudio2 吗?我需要能够从 USB 设备记录原始 pcm 数据并对其进行处理(+将其写入 .wav 文件),并直接从 .wav 文件中读取数据。

感谢任何帮助

【问题讨论】:

  • GPL 不适用,因为您的应用程序是商业应用?
  • 是的,差不多吧~我不确定它是否会分发,但我更喜欢没有附加条件的情况。
  • 给处于类似位置的任何人的说明 - 没有可以在托管 C# 中录制音频的音频 Microsoft 音频库。 XAudio2 没有录音选项,只有回放/处理。如果您正在为任何 pre-vista 进行开发,旧的 directSound 或 WaveXxx API(仍需要包装以在 C# 中使用 - NAudio 库执行此操作)是您的最佳选择。
  • 对于任何更新的东西(vista/win7),WASAPI 可能是最好的选择 - directSound 和 WaveXxx 只是在此之上的层,并且可能不会存在太久(不是我我确定 - 但它们不再处于开发阶段,这几乎意味着斧头就在附近)。

标签: c# signal-processing xaudio2


【解决方案1】:

首先,我想说 DirectSound 并没有被 Microsoft 抛弃,它仍然是受支持的技术 (Windows 7),我不希望它在未来停止工作。

也就是说,有更新的更现代的音频 API/SDK:Media Foundation 可以执行音频捕获,并且有许多很棒的示例可以帮助您快速入门。如果您正在寻找最新最好的音频,或者正在寻找硬件加速的音频,您可以尝试使用 WASAPI 和 WaveRT 让一切正常工作。

仅供参考,媒体格式 SDK 不再位于第一篇文章中给出的 URL。请改用这个:

http://msdn.microsoft.com/en-us/windows/bb190307

【讨论】:

    【解决方案2】:

    很难预测微软是否会放弃他们目前推出的产品。至于 XAudio 2 与 DirectSound,我肯定会选择 XAudio 2。不仅因为它旨在取代 DS,而且因为 API 看起来更灵活。

    不过,您可以看看NAudio 是如何播放的。

    【讨论】:

    • 我认为 NAudio 是最好的选择 - 鉴于该应用程序。应该在装有 vista 或 windows 7 的计算机上运行。(将使用 WASAPI)。如果我想使用 XAudio2,我要么必须制作 C# 包装器,要么使用 SlimDX。 tbh 看起来(在任何一种情况下)都是我宁愿避免的学习曲线,尤其是考虑到教程相对短缺。
    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 2012-11-05
    • 2012-11-01
    • 2013-06-07
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    相关资源
    最近更新 更多