11个版本 (1个稳定版)
1.0.0 | 2024年7月31日 |
---|---|
0.1.9 | 2023年12月17日 |
0.1.4 | 2023年10月30日 |
#62 in 嵌入式开发
每月下载 215 次
63KB
2K SLoC
speakersafetyd - 一个软件智能放大器实现
speakersafetyd是一个用Rust编写的用户空间守护进程,实现了德州仪器Smart Amp扬声器保护模型的模拟。
苹果硅Mac主要使用德州仪器的TAS2764放大器芯片(在ALSA术语中称为编解码器),为连接的扬声器的线圈提供电压和电流的感应线。这些编解码器旨在用于嵌入式应用程序,其中设备固件获取这些信息并用于保护扬声器免受损坏。苹果公司将其作为机器特定的插件实现到用户空间的一半CoreAudio中。越来越多的其他厂商在桌面和嵌入式/Android世界中都在选择走类似的道路,将此功能整合到专有驱动程序/用户空间blob中,通常还捆绑一些便利的功能,如均衡器(我们也有解决方案,见asahi-audio)。这使用户面临永久损坏其昂贵设备的严重风险,如果他们选择运行自定义软件,如Asahi Linux或开源Android ROM。
speakersafetyd是我们所知的第一个开源扬声器保护模型的实现。它通过允许对兼容设备感兴趣的各方快速轻松地为这些设备实现扬声器保护模型来解决上述问题。目前仅支持在Linux下运行的苹果硅Mac,但该模型适用于所有扬声器。守护进程本身应该足够容易适应任何以类似TAS2764的方式提供V/ISENSE数据的设备。
依赖项
- Rust稳定版
- alsa-lib
- 运行Asahi Linux的苹果硅Mac
关于智能放大器的一些背景信息
现代设备(如蓝牙扬声器、电视、笔记本电脑等)中使用的廉价组件扬声器元件非常脆弱。为了从它们中获得尽可能高的音质,需要对这些元件进行强烈的驱动。这给我们带来了一个难题——我们如何将这些扬声器驱动到足够响亮、音质上乘,但又不至于将其摧毁的程度?
扬声器的机电特性可以建模并简化为一组参数——Thiele/Small参数。这些参数可以用来预测扬声器在特定输入下的表现。当我们添加扬声器线圈和磁体的温度曲线的时间常数等测量特性时,我们可以准确地对扬声器在任何给定线圈电压/电流下的温度进行建模。当扬声器过热时,我们只需减少输入到扬声器中的功率,直到它冷却下来。
这使得我们可以在不造成永久性损坏的情况下,放心地将扬声器驱动到它们能承受的最大物理极限。这非常有用,因为如果没有这项功能,这些设备的输出电平就必须严格限制在一个已知在最坏情况下也是安全的非常低的水平。相反,我们可以在那些情况下简单地降低输出,并允许扬声器在可能的情况下以全功率运行。
许多集成功率放大器芯片在硬件中实现了这一功能,以及额外的先进DSP特性,如压缩器和限制器。德州仪器将其实现称为“智能放大器”。集成器只需将参数集传达给连接到扬声器的芯片,其余的由芯片完成。然而,许多芯片并没有这样做,而是只提供了测量扬声器线圈电压和电流的设施。数据捕获和处理的工作取决于实现者。
speakersafetyd(据我们所知)是第一个也是唯一一个开源的智能放大器保护模型实现。
依赖项
~7MB
~129K SLoC