你可以自己动手!教你音频软件开发:SPLMeter本文详细介绍了使用 Claude Code 构建专业音频测量软件的实验。具体来说,这是一款专业的声压级 (SPL) 计,它既可以作为独立的桌面应用程序在 macOS、Windows 和 Linux 系统上运行,也可以作为 VST3 和 AU 插件运行。该软件已发布在 GitHub 上。
对于音频社区的大部分人来说,代码实在没什么乐趣。它难以阅读,难以学习,在许多音频项目中,它就像一个不得不忍受的恶棍,横亘在你和你所珍视的体验之间。硬件你可以触摸、闻到、看到,焊点你可以检查。代码有一种难以理解的特质,让人望而却步,以至于大多数想法都止步于概念阶段。这种情况即将改变。并非因为代码突然变得有趣,而是因为从想法到可运行软件的旅程被压缩到了一个我以前想都不敢想的程度。20多年前,AI和机器学习在音频领域的应用在学术会议上就与我擦肩而过(最初的音干分离器简直刺耳!)。当第一批可用的GPT出现,我的同事们纷纷表示“太棒了!我愿意投资”时,我却感到十分失望。这项技术在理论上存在已久,但对我来说,它没有任何实际意义。然而,发展轨迹发生了改变,而我却依然固守着“它没用”的旧观念。曾经的研究兴趣最终演变成了基础设施。多年来,我一直在知识管理工具中记录着一个想要开发的软件。概念很简单:一个专业的声压级(SPL)计,既可以作为独立的桌面应用程序在macOS、Windows和Linux系统上运行,也可以作为VST3和AU插件使用。许多同事和朋友都向我表达过同样的困扰:他们在演出场地、录音室和车辆中都安装了校准过的测量麦克风,他们希望能够重复使用这些麦克风进行简单但重要的声压级测量,既作为后台安全保障,也用于认证。他们不想每次工作都携带专用的硬件声压计。为了简化工作流程,他们需要一款符合标准、可在现有电脑上运行且不占用额外资源的软件工具。然而,这样的软件要么市面上没有,要么现有的软件要么使用体验不佳,要么功能缺失。相关标准是IEC 61672-1:2013,它定义了声级计的要求,包括快速和慢速时间计权常数以及A计权和C计权频率曲线。很长一段时间,这份备忘录一直被束之高阁。我尝试寻找愿意合作开发这个项目并投入足够时间的开发者,但始终未能如愿。我尝试过低代码环境和现有的C++框架,但结果都不尽如人意。我的想法非常清晰,但实现路径却十分模糊。克劳德能做到吗?与老板会面后,我不得不问出一个显而易见的问题:人工智能代理能构建这个吗?理论上不行,但从今天开始,我能否立即着手。我能否描述一下我的需求,然后得到一个可运行的软件?最初的要求很明确:“我想要一个符合现有标准的声压级计软件,能够在Windows、macOS和Linux系统上作为独立应用程序以及VST3和AU插件运行。请使用JUCE框架。”Jules 的实用类扩展 (JUCE) 是一个成熟的 C++ 框架,用于跨平台音频应用程序和插件开发,非常适合满足这些需求的项目。仅凭这句话,Claude 就花了大约半个小时就做出了第一个可测试的原型(图 1)。当然,这只是原型,并非最终软件。它是一个可运行的概念验证,可以编译和运行,并且已经能够测量和显示声压级 (SPL) 值。从这个框架到真正可用的应用程序,大约花了两个星期的迭代开发时间。但半小时内就能做出可用的东西,彻底改变了我对开发流程的理解。样板代码?搞定了!配置持续集成 (CI) 流水线?搞定了!需要一步一步的协同设计?搞定了!
图 1:这是 Claude 的代码,我主要在终端上使用。和 Claude 聊天就像和有史以来最高效、最沉默寡言、最顺从的开发者一起工作。这里,Claude 为 README 文件勾勒了一个大纲。SPLMeter 的功能:经过两周的开发,并在后续更新中不断完善,最终形成了目前 GitHub 上发布的版本,其功能已远超最初的设想。核心测量概念保持不变:宽带声压级 (SPL) 测量,单位为 dB、dB(A) 和 dB(C),峰值和均方根值同时显示,支持符合 IEC 61672 标准的快速 (125 毫秒) 和慢速 (1 秒) 时间加权,保持时间为 2 秒。可配置的校准偏移量覆盖 80dB 至 140dB 的范围。所有这些都可以通过实时麦克风或音频接口输入(最多 32 个通道)或加载的音频文件进行操作。32 个输入通道相当独特,因为它们允许进行空间平均和(局部)声功率测量。校准过程简单易懂,并展示了我的参考设计,该设计可供任何人复制。界面提供两种模式。基本模式正是许多用户所需要的。一个从 20dBSPL 到 130dBSPL 的大型水平条形图,一个带有峰值保持指示器的数值读数,除此之外没有任何其他干扰元素(图 2)。高级模式(图 3)增加了一个时间序列对数图、一个快速傅里叶变换 (FFT) 频谱分析仪叠加层以及一组实时心理声学指标。有了这些功能,该项目进入了我最初未曾计划的领域,也正是我最乐在其中的部分。心理声学层持续实时地估算粗糙度、锐度、波动强度、比响度和心理声学烦扰度(遵循 Zwicker 和 Fastl 1999 年提出的综合烦扰度指数)。这些指标可以作为可选轨迹显示在对数图的右侧 y 轴上,并且它们会与 SPL 数据一起出现在 CSV 导出文件中。对于任何从事噪声、振动和声振粗糙度 (NVH)、职业噪声评估或产品音质相关工作的人来说,能够持续获取这些数值确实非常有用。我认为,目前能够测量这些特性的工具太昂贵了。工具和知识本应是免费提供的;想象力才是最终的制胜法宝。而且他们的研究本来就是用公共资金资助的,为什么要秘而不宣呢?图 2:基本模式实现了产品的核心承诺:一个简单易用的 SPL 表,可以作为独立程序或插件集成到任何平台上的工作流程中。图 3:高级模式下的主窗口显示所有相关参数。与其他音频测量应用程序不同,它支持实时监测和心理声学计算。FFT频谱分析仪支持1/1至1/24倍频程的频带分辨率,并提供常规可选窗函数(汉宁窗、汉明窗、布莱克曼窗、平顶窗、矩形窗)、可配置重叠、多种显示模式以及RTA +3dB/倍频程模式,使粉红噪声在音乐调音时呈现平坦的频谱(图4)。用户可通过“工具”菜单访问带有可选Mel/Bark频率缩放的频谱图(图5)。对于macOS系统,用户可对音频文件运行ViSQOL感知音频质量分析(MOS-LQO结果,并计算每个频段的NSIM值),该分析集成了采样率转换器。这是ViSQOL首次拥有图形用户界面(GUI),对于许多纠结于“哪个更好?”的用户来说,这将非常有用(图6)!图 4:设置窗口。图形叠加可用于 FFT 检查电平是否满足要求。输入通道允许管理最多 32 个混合测量通道。94dB 线用于辅助调整 FFT 电平。图 5:实时频谱图对于包含许多谐波成分的音频信号非常有用。图中共振峰检测器显示的是我演唱“aeiou”的声音。
图 6:VisQOL 应用可以测量音频文件的质量,并可用于比较音频编解码器或进行复杂的噪声和失真评估。请注意,VisQOL 目前仅适用于 macOS 系统。校正滤波器接受以文本或 CSV 文件形式提供的频率响应校正曲线,并在测量前将其作为线性相位 FIR 滤波器应用。如果校正文件包含常用麦克风数据手册格式的校准元数据(灵敏度因子),该工具会自动读取并应用这些值。校准偏移量设置为 94dB 加上灵敏度因子的绝对值。序列号会自动写入会话备注字段。这种每次都能节省三个步骤的实用细节,源于测试用户的实际使用和现场反馈,并在数小时内而非数周内实现。导出功能非常实用。“保存 CSV”会生成包含时间戳和所有值的完整测量日志;“保存 WAV”会将输入通道 1/2 的秒数绘制结果保存为 24 位立体声文件;“保存屏幕截图”会将当前视图导出为 JPEG 文件。“全部保存”一步即可完成所有三个操作。三个推子(校准、FFT 增益和保持时间)可通过右键单击进行 MIDI 学习。正如计划的那样,该软件以独立应用程序的形式提供,支持 macOS(Apple Silicon原生,支持开发者 ID 签名和公证)、Windows(支持 SLSA 签名)和 Linux 系统,并支持 VST3 和 AU 插件(如有)。开发过程:我很快意识到,与 Claude 合作开发软件项目并非描述最终目标然后置之不理。当然,你可以让它构建一个 DAW,但结果会遥遥无期,而且最终效果也不会符合你的预期。这是一种与机器的协作,而所有协作都离不开良好的组织性。对我而言,行之有效的方法是精简版的需求工程。了解你的架构,明确你的目标,然后循序渐进地推进。频繁构建,更多次测试。具体做法是:我先在纸上进行规划,无需详尽,但足以清晰地展现最重要的层级。核心的 SPL 测量功能必须有效且准确,其他任何功能都无从构建。从那里开始,随着每一次编译迭代,软件变得越来越完善,它未来的发展蓝图也越来越清晰。每一次可运行的版本都会带来新的想法,按钮的位置也会随之调整,功能的添加并非为了分散注意力,而是为了对现有功能进行扩展。这感觉相当自然。有些功能最终被舍弃了。从想法到成果的周期非常快,以至于每次迭代之间,我的热情都来不及消退。那种感觉就像一阵旋风。有些想法甚至会在半夜突然出现在我的脑海中。比如 SoundDetective,它利用机器学习算法记录并绘制声学事件(图 7)。
图 7:SoundDetective 是最新添加的功能之一。它可以检测声音,并在发现声音后绘制图表并记录日志。此外,还可以加载自定义的 TensorFlow Lite 模型。这和我以往的软件开发方式截然不同。传统模式中,从构思一个功能到它在运行的应用程序中最终实现之间存在着时间差。大多数想法都扼杀在这个时间差里。当这个时间差缩短到几个小时甚至一个下午时,情况就发生了变化。你不再是管理软件最终可能实现的功能列表,而是实时观察它的演进,并在每次迭代中引导它。这和焊接PCB板一样令人兴奋。但是,过程中也存在一些摩擦。编译错误仍然需要阅读并部分理解。当某些东西出现意外行为时,例如音频回调以错误的速率运行,或者滤波器引入了我未预料到的延迟,诊断原因仍然需要熟悉底层架构。Claude负责处理机制,但工程师仍然需要知道正确的行为是什么样的,并在它缺失时注意到。而且有些东西根本就没用!有些按钮Claude根本无法操作。我只能想办法绕过它们。还有一些领域,Claude完全不适用。我曾尝试为Analog Devices的DSP生成一个裸机DSP实现,结果惨败,因为相关文档是封闭的。这些文档必须公开,以便Claude学习。Claude和这类人工智能代理将对音频软件格局产生深远的影响。我不认为它们会让开发者失业。为什么?软件开发一直以来都是通过增加抽象层而演进的。从机器代码和汇编语言,到底层过程语言,再到我们今天使用的高级框架。每一层都让下一层更容易被更多人理解,也让以前难以解决的问题变得可以解决。这类有趣的问题,只有特定领域的专家才能看到并反复解决。人工智能辅助开发就是这样一层。构建框架和编译器的专家并没有消失。他们只是转向了更艰巨的问题——或者去海滩度假了。我预计短期内音频软件领域将会更加活跃,而不是萎缩。那些过去根本不可能获得传统开发预算的工具,现在也将被开发出来。那些尘封在 Obsidian 系统库中的想法将化为实际应用。那些曾经因为过于专业化、周末项目难以完成而缺乏商业价值的小众测量工作流程,如今已触手可及,满足了工程师们的需求。这对整个领域来说无疑是件好事,而且对从业者而言,其益处远大于其他任何人。根据我的经验,我能提供的实用建议是:先从需求入手,而不是代码。在开始之前,先了解你的架构。明确你的目标,这样你才能知道何时达成目标。循序渐进地工作,并经常编译。反馈循环足够快,所以你的急躁和好奇心反而会成为优势。如果出现任何异常,你可以立即发现并纠正方向,避免错误在需求迭代的后续阶段蔓延,最终变得无法修复。如果你一直希望音频领域能有一款软件,一款能够简化你的工作、改进你的测量、提高你的录音效率的软件——那么现在正是尝试自己构建它的绝佳时机。SPLMeter是一款开源软件,可在github.com/ppklose/ppkSPLMeter免费下载,支持 macOS、Windows 和 Linux 系统,提供独立版本、VST3 和 AU 格式。资源:Claude(Claude.ai)JUCE (https://juce.com)Obsidian (https://obsidian.md)SPLMeter (github.com/ppklose/ppkSPLMeter)
音频,音响,乐器设备购买群:50691091
二手设备交易群:628548312
音频应用(音响设备,键盘,合成器,效果器,声卡,耳机等)
个人合作:网站给你推广作品,你帮我们宣传网站
招募音频合作代理 微信:yinpinyingyong
同城音频网欢迎大家
备注:资源互换,有兴趣同学联系客服
发帖: 回复:6666,进群
音频应用www.audioapp.cn 转载