首页 EV新闻

Android车载音频介绍|盖世大学堂智能座舱系列知识讲解

2025-02-21 15:57 来源: 盖世汽车 作者: 谢雨欣

一、AndroidAutomotiveOS(AAOS)音频概述

(一)AAOS音频基础

AndroidAutomotiveOS(AAOS)是在核心Android音频堆栈基础上构建的,用于支持车辆信息娱乐系统的操作系统。它主要负责处理信息娱乐声音,如媒体、导航和通讯声音,但不直接负责对可用性和计时要求严格的铃声和警告音。AAOS为车辆管理音频提供信号和机制,不过最终播放何种声音由车辆决定,以确保安全相关和监管要求的声音能被驾乘人员清晰听到,且不会被中断。

在Android管理车辆媒体体验时,外部媒体来源(如电台调谐器)需通过应用来代表,这类应用负责处理音频焦点和媒体键事件。Android11对汽车相关的音频支持进行了多项更改,包括为每台输出设备添加音频效果、优化多区音频、支持车载声音系统以及优化音频焦点等。

(二)车载声音和声音流

1.Android声音:应用通过标准AndroidAPI(如AudioManager、MediaPlayer)与一个或多个播放器交互,产生一个或多个音频数据逻辑声音流。这些声音流可能是单声道或7.1环绕声,会作为单个声源进行路由和处理,并与AudioAttributes相关联,以告知系统如何处理音频。逻辑声音流经AudioService发送,路由到一个可用的物理输出声音流,每个物理声音流是AudioFlinger内混音器的输出。之后,物理声音流传输到音频HAL,在硬件上进行声音呈现,呈现硬件可能是本地编解码器或车辆物理网络中的远程处理器。

2.外部声音流:部分声音流,因认证或计时原因,不经过Android处理,可直接发送到外部混音器。从Android11开始,HAL能够为这些外部声音请求焦点,通知Android采取相应措施,如暂停媒体播放或阻止其他应用获取焦点。若外部声音流是与Android生成的声音环境交互的媒体源,应由Android应用代表其请求音频焦点,并根据焦点通知启动或停止外部声音源,同时处理媒体键事件。控制此类外部设备,可使用HwAudioSource机制。

Android车载音频介绍|盖世大学堂智能座舱系列知识讲解

二、多区音频

(一)多区音频的应用场景与实现

在汽车领域,多区音频满足了多个用户同时使用不同媒体的需求。例如,后座乘客观看YouTube视频时,司机可在驾驶舱播放音乐。从Android10开始,多区音频功能允许原始设备制造商(OEM)将音频配置到单独的音频区。每个音频区由车辆内的一组设备组成,拥有独立的音量组、上下文路由配置和焦点管理。音频区在car_audio_configuration.xml文件中定义,CarAudioService读取该配置,协助AudioService根据关联的音频区路由音频流。每个音频区的焦点单独维护,确保不同音频区的应用音频播放互不干扰。

Android车载音频介绍|盖世大学堂智能座舱系列知识讲解

(二)多区音频焦点管理

多区音频中,每个音频区的焦点由CarAudioService内的CarZonesAudioFocus负责管理。焦点请求的音频区根据所关联的Userld或UID确定。这种管理方式使得主驾驶舱与后座娱乐系统的焦点可分开控制,避免一个音频区的焦点变更影响其他音频区的播放。此外,Android11允许HAL代表外部声音流请求焦点,这有助于外部声音更好地融入Android生态系统,提升用户体验。但HAL仍需确保紧急声音和安全相关声音的播放优先级,即使失去音频焦点,这些声音在适当情况下也应继续播放。

三、音频HAL

(一)音频HAL的组成与功能

车载音频的实现依赖标准Android音频HAL,主要包括IDevice.hal和IStream.hal。IDevice.hal负责创建输入和输出声音流、处理主音量和静音操作,以及创建外部音频通路、设置物理声音流音量。IStream.hal用于管理进出硬件的样本音频流。

(二)车载设备类型

与车载平台相关的设备类型包括AUDIO_DEVICE_OUT_BUS(Android主要输出,用于消除信息流歧义)、AUDIO_DEVICE_OUT_TELEPHONY_TX、AUDIO_DEVICE_IN_BUS、AUDIO_DEVICE_IN_FM_TUNER、AUDIO_DEVICE_IN_TV_TUNER、AUDIO_DEVICE_IN_LINE、AUDIO_DEVICE_IN_BLUETOOTH_A2DP(通过蓝牙接收的音乐)、AUDIO_DEVICE_IN_TELEPHONY_RX(从移动网络电台接收的通话相关音频)。车机上常用AUDIO_DEVICE_OUT_BUS,录音功能则需根据具体配置选择合适的设备类型。

Android车载音频介绍|盖世大学堂智能座舱系列知识讲解

四、音频焦点

(一)焦点交互类型

音频焦点是间接控制播放和避免播放冲突的方式。在AAOS中,系统根据请求的CarAudioContext与当前焦点持有者的CarAudioContext之间的预定义交互,处理音频焦点请求。交互类型分为独占、拒绝和并发三种。独占交互下,一次仅允许一个应用持有焦点,新的焦点请求会使现有焦点持有者失去焦点,如用户切换音乐应用时。拒绝交互时,传入的请求会被拒绝,例如通话过程中播放音乐的请求会被拒绝。并发交互是AAOS的独特之处,请求音频焦点的车载应用可与其他应用同时持有焦点。如播放音乐时收到导航提示音,音乐声音会降低(闪避),以便用户听清导航提示,提示音播放结束后,音乐恢复原音量。

Android车载音频介绍|盖世大学堂智能座舱系列知识讲解

 

(二)处理并发声音流与交互矩阵

为实现并发声音流的合理处理,原始设备制造商(OEM)需在硬件级别实现混音和降音(闪避)。建议将存在并发播放的CarAudioContext路由到不同的输出设备,以便HAL在混音前对其中一个声音流进行闪避操作。CarAudioService定义了交互矩阵,通过比较当前焦点持有者和传入请求的CarAudioContext,确定应用哪种交互类型。在存在多个焦点持有者的情况下,系统会将新的焦点请求与现有焦点持有者逐一比较,按照拒绝交互、独占交互、并发交互的优先级决定最终处理方式。

五、音频路由

(一)音频路由的概念与作用

音频路由旨在解决将特定类型的音频流发送到指定声卡进行播放的策略问题。由于Android支持多声卡且存在多种音频流,需要有效的管理机制,音频路由应运而生。不同的音频流,如铃声、多媒体音乐、TTS播报等,因应用场景不同,可能需要在不同的声卡设备上播放。

(二)获取路由策略与配置

音频路由策略通过car_audio_configuration.xml和audio_policy_configuration.xml文件进行配置。CarAudioService读取这些配置文件,协助AudioService根据音频区、上下文和应用UID定义路由规则。创建播放器时,CarAudioService确定播放器所属音频区,并根据用法决定AudioFlinger将音频路由到的设备。在高通平台等具体实现中,还会涉及到获取如PCM类型、APPtype、ACDBID等信息,以确定音频数据的处理和传输路径。音频路由从软件到硬件的过程涉及多个环节,包括音频数据的解码、重采样、混音等处理,最终通过相应的接口传输到功放和喇叭进行播放。

六、音量管理

(一)使用固定音量

AAOS通过硬件放大器控制音量,应将config_useFixedVolume标志设为true。若该标志未设置或设为false,应用调用AudioManager.setStreamVolume()会在软件混音器中按音频流类型更改音量,这可能影响其他应用,且会减少硬件放大器接收信号的有效位。

(二)音量组

音量组用于管理音频区中一系列设备的音量,在car_audio_configuration.xml文件中定义。每个音量组包含一个或多个输出设备,这些设备的地址需在audio_policy_configuration.xml中定义。音量组可单独控制音量,其增益会应用到关联设备上。音量组的最小增益值、最大增益值、默认增益值和步长根据关联设备的配置确定。在初始化时,音量组会检查关联设备的增益值,并进行相应配置。系统运行时,按XML文件中定义的顺序识别音量组,音频区中的音量组ID在0到N-1之间(N为该区中音量组的数量),该ID在不同音频区之间不唯一。采用groupld但不含zoneld的API默认使用主音频区。每个音频区都有一个或多个音量组,且每个音量组仅与一个音频区关联,系统会为每个音频区的用户保留当前音量级别。

Android车载音频介绍|盖世大学堂智能座舱系列知识讲解

(三)音频闪避

音频闪避指车辆降低一个声音流的增益,以突出同时播放的另一个声音流。在AAOS中,音频闪避由HAL实现。虽然具体的闪避处理由各个OEM决定,但建议遵循一些准则。例如,参考交互矩阵确定Android授予并发焦点的情况,以及同时播放两个声音流时的闪避策略。所有在与其他声音流同时播放时应进行闪避的声音流,建议路由到单独的输出设备,以便HAL在混音前进行闪避操作。如导航提示音和音乐分别路由到不同通道。通常,紧急声音应闪避或静音除安全声音外的所有声音;安全声音闪避除紧急声音外的所有声音;导航声音闪避除安全和紧急声音外的所有声音;电话声音闪避除安全、紧急和导航声音外的所有声音;语音声音闪避电话铃声。此外,若车辆拥有多个隔绝效果良好的声场,可选择将音频路由到不同音区,替代闪避操作,如将导航提示音路由到头枕处的音响设备。

七、音效处理与音频架构总结

(一)音效处理

音效处理一般不在安卓内部实现,因为软件方式处理音效耗时且占用大量CPU资源。通常,音效会在高通的ADSP或外部DSP中进行处理。汽车厂商多选择第三方音效方案,如小鹏G3使用的direct音效。

(二)音频架构核心要点

音频架构的核心包括音频管理(声音焦点)、音频流管理(音频路由)和Audiohal实现。这三个核心部分相互协作,确保音频在Android车载系统中的合理处理和播放。在音频交互场景中,还需考虑声音通道划分和音频硬件DSP选型。DSP选型要关注其算力、支持的通道类型(如模拟Mic通道、数字Mic通道、TDM通道等)、是否支持特定功能(如ECNR、Carplay认证、内置混音、和弦音合成、环绕音音效等)以及工作温度、封装形式、工作电压等参数。

Android车载音频介绍|盖世大学堂智能座舱系列知识讲解

(三)调音

调音对于提升车载音频音质至关重要,一般由第三方音效厂家进行。调音过程受多种因素影响,包括车内环境(如零部件对声音的反射、折射、穿透和吸收)、扬声器特性(如左右扬声器的距离、角度,扬声器的配置、搭载角度和焦点位置)以及车辆构造(如车门构造、扬声器搭载部的强化、吸音材料的添加、扬声器箱体化等)。调音旨在根据车辆构造优化音质,提升用户体验,可分为物理调音和电器调音等不同阶段,使用专门的评测技术和仪器进行。

返回首页
相关新闻
返回顶部