哪种编程语言更适合构建音频处理应用程序
Posted
技术标签:
【中文标题】哪种编程语言更适合构建音频处理应用程序【英文标题】:which programming language is better for building audio processing applications 【发布时间】:2018-07-26 17:38:03 【问题描述】:哪种编程语言适合构建 Audacity 或 adobe Audition 等音频处理应用程序?
我已经知道一些 python 和一点 javascript。我可以使用这些语言构建这样的应用程序吗?还有什么我应该知道的先决条件。例如,了解声音的工作原理等。欣赏见解、资源、书籍、图书馆、工具等。
【问题讨论】:
这取决于你是否乐于通过简单地调用他们的库来利用其他人的劳动,这是任何语言都可以做到的......如果你有勇气深入研究实际构建这样一个低级库自己加强诸如原始音频,PCM脉冲编码调制之类的想法-在概念层面上,您必须掌握将模拟曲线转换为其数字对应物以及相反的能力,即ADC和DAC ...学习如何流式传输数据使用 websockets ...所有这些完全是语言不可知的 c、c++、golang、javascript、python ...网络音频 api 谢谢斯科特。感谢您的投入 【参考方案1】:对于想要了解更多有关数字信号处理的任何人,这是一本非常有用的免费书籍: Scientists and Engineers Guide to DSP 例子恰好在 BASIC 中! (从好的方面来说,它们是完全可读和可理解的。)
这个问题的本质是一个不适合“正确”答案的问题。有很多方法可以处理音频。
我是一个明显的少数,因为我致力于使用 Java 编写基于音频的应用程序。我喜欢 Java,因为它既低级又成熟,设计良好,支持多核和并发,而且它符合我的编程偏好(而不是过于冗长和明确,而不是担心简洁)。使用Java,您可以在PCM数据级别进行操作,并且可以使用核心库对象javax.sound.sampled.SourceDataLine
直接轻松地输出。
有人告诉我(但不完全了解具体细节),C++ 具有更高效的低级内部结构,尤其是对于过滤所需的一些函数(卷积计算量很大)。据我所知,大多数音频应用程序,包括编写插件 (VST),都是用 C++ 完成的。
如果您想将您的工作与 Unity 或 Unreal 等游戏引擎集成,使用 C# 或 C++ 是有意义的。
我对 Web Audio API 的了解还不够,无法知道它能够实时执行多少操作。我确实知道我对 JavaScript 有强烈的偏见,并且发现与 Java 相比,代码很难阅读和维护。但这可能与我的局限性有关,而不是与 JavaScript 有关。
在我采用 Java 的时候,还没有 Web Audio API,像 Python 这样的高级语言对于实时工作来说太慢了,而 C++ 真的让我很困惑,因为我什至不清楚什么是externals 我必须导入才能使声音正常工作,因为语言本身没有音频命令。 (在我做出选择的时候,我正处于强烈的反微软情绪中。)
如果有兴趣,我很乐意提供有关用 Java 编码音频的细节的更多信息。
【讨论】:
以上是关于哪种编程语言更适合构建音频处理应用程序的主要内容,如果未能解决你的问题,请参考以下文章