# 音频概述

由低功耗人工智能 (LPAI) 驱动的音频子系统可提供语音 UI 和音频体验。它使用专用的基于硬件的人工智能加速器进行基于机器学习的工作。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export hw_sw_components.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="12.8194in" height="5.82639in" viewbox="0 0 923 419.5" xml:space="preserve" color-interpolation-filters="sRGB" class="st14" aria-label="../../_images/hw_sw_components.svg"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #ffffff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st2 { fill: #fafafa; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st3 { fill: #ffffff; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st4 { fill: #000000; font-family: SimHei; font-size: 1.00001em; letter-spacing: 0.0833327em }
.svg-1 .st5 { font-family: Roboto; font-size: 1em }
.svg-1 .st6 { fill: #d2d7e1; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st7 { fill: #000000; font-family: Roboto; font-size: 1.00001em; letter-spacing: 0.0833327em }
.svg-1 .st8 { font-size: 1em }
.svg-1 .st9 { marker-start: url("#mrkr4-41"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st10 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.44247787610619 }
.svg-1 .st11 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st12 { marker-end: url("#mrkr4-71"); marker-start: url("#mrkr4-41"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st13 { marker-end: url("#mrkr4-71"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st14 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="mrkr4-41" class="st10" v:arrowtype="4" v:arrowsize="2" v:setback="4.34" refx="4.34" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(2.26) "></use>	</marker>	<marker id="mrkr4-71" class="st10" v:arrowtype="4" v:arrowsize="2" v:setback="4.52" refx="-4.52" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-2.26,-2.26) "></use>	</marker></defs><g v:mid="4" v:index="1" v:groupcontext="backgroundPage">	<v:userdefs>		<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>VBackground-1</title>	<v:pageproperties width="12.8194" height="5.82639" v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape">		<title>Solid</title>		<v:userdefs>			<v:ud v:nameu="Background" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="msvShapeCategories" v:prompt="" v:val="VT4(DoNotContain)"></v:ud>			<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>		</v:userdefs>		<rect x="0" y="0" width="923" height="419.5" rx="4.5" ry="4.5" class="st1"></rect>	</g></g><g v:mid="0" v:index="2" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape28-3" v:mid="28" v:groupcontext="shape" transform="translate(18.75,-18.75)">		<title>Sheet.28</title>		<rect x="0" y="37.5" width="885.5" height="382" rx="4.5" ry="4.5" class="st2"></rect>	</g>	<g id="shape1-5" v:mid="1" v:groupcontext="shape" transform="translate(245.25,-37.25)">		<title>Sheet.1</title>		<rect x="0" y="75.5" width="384" height="344" rx="4.5" ry="4.5" class="st3"></rect>	</g>	<g id="shape22-7" v:mid="22" v:groupcontext="shape" transform="translate(453.25,-68.4658)">		<title>Sheet.22</title>		<desc>接口</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="72" cy="279.5" width="144" height="280"></v:textrect>		<rect x="0" y="139.5" width="144" height="280" rx="4.5" ry="4.5" class="st3"></rect>		<text x="59" y="157" class="st4" v:langid="2052"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>接口</text>		</g>	<g id="shape2-10" v:mid="2" v:groupcontext="shape" transform="translate(277.25,-68.884)">		<title>Sheet.2</title>		<desc>应用 DSP</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="72" cy="279.5" width="144" height="280"></v:textrect>		<rect x="0" y="139.5" width="144" height="280" rx="4.5" ry="4.5" class="st3"></rect>		<text x="44.24" y="158.48" class="st4" v:langid="2052"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>应用<tspan class="st5" v:langid="1033"> </tspan><tspan class="st5" v:langid="1033">DSP</tspan></text>		</g>	<g id="shape5-15" v:mid="5" v:groupcontext="shape" transform="translate(301.25,-172.884)">		<title>Sheet.5</title>		<desc>应用 DSP 固件</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48" cy="387.134" width="96.01" height="64.732"></v:textrect>		<rect x="0" y="354.768" width="96" height="64.732" rx="4.5" ry="4.5" class="st6"></rect>		<text x="5.25" y="392.13" class="st4" v:langid="2052"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>应用<tspan class="st5" v:langid="1033"> </tspan><tspan class="st5" v:langid="1033">DSP </tspan>固件</text>		</g>	<g id="shape6-20" v:mid="6" v:groupcontext="shape" transform="translate(477.25,-253.25)">		<title>Sheet.6</title>		<desc>TDM</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48" cy="387.134" width="96.01" height="64.732"></v:textrect>		<rect x="0" y="354.768" width="96" height="64.732" rx="4.5" ry="4.5" class="st6"></rect>		<text x="33.75" y="391.63" class="st7" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TDM</text>		</g>	<g id="shape7-23" v:mid="7" v:groupcontext="shape" transform="translate(477.25,-172.884)">		<title>Sheet.7</title>		<desc>MI2S</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48" cy="387.134" width="96.01" height="64.732"></v:textrect>		<rect x="0" y="354.768" width="96" height="64.732" rx="4.5" ry="4.5" class="st6"></rect>		<text x="32.2" y="391.63" class="st7" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>MI2S</text>		</g>	<g id="shape8-26" v:mid="8" v:groupcontext="shape" transform="translate(477.25,-92.518)">		<title>Sheet.8</title>		<desc>SoundWire</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48" cy="387.134" width="96.01" height="64.732"></v:textrect>		<rect x="0" y="354.768" width="96" height="64.732" rx="4.5" ry="4.5" class="st6"></rect>		<text x="14.53" y="391.63" class="st7" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SoundWire</text>		</g>	<g id="shape10-29" v:mid="10" v:groupcontext="shape" transform="translate(37.25,-69.25)">		<title>Sheet.10</title>		<desc>应用处理器</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="72" cy="279.5" width="144" height="280"></v:textrect>		<rect x="0" y="139.5" width="144" height="280" rx="4.5" ry="4.5" class="st3"></rect>		<text x="39.5" y="157" class="st4" v:langid="2052"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>应用处理器</text>		</g>	<g id="shape11-32" v:mid="11" v:groupcontext="shape" transform="translate(61.25,-172.884)">		<title>Sheet.11</title>		<desc>多媒体框架/ 内核驱动程序</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48" cy="387.134" width="96.01" height="64.732"></v:textrect>		<rect x="0" y="354.768" width="96" height="64.732" rx="4.5" ry="4.5" class="st6"></rect>		<text x="12" y="382.63" class="st4" v:langid="2052"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>多媒体框架/<v:lf></v:lf><tspan x="9" dy="1.5em" class="st8">内核驱动程序</tspan></text>		</g>	<g id="shape12-36" v:mid="12" v:groupcontext="shape" v:layermember="0" transform="translate(277.25,-168.384)">		<title>Dynamic connector.16</title>		<path d="M-8.68 407 L-9.04 407 L-96 407" class="st9"></path>	</g>	<g id="shape14-42" v:mid="14" v:groupcontext="shape" v:layermember="0" transform="translate(181.25,-192.75)">		<title>Dynamic connector.18</title>		<path d="M8.68 407 L9.04 407 L94.63 407" class="st9"></path>	</g>	<g id="shape15-47" v:mid="15" v:groupcontext="shape" transform="translate(182.75,-213.25)">		<title>Sheet.15</title>		<desc>音频录制</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.625" cy="409.5" width="63.26" height="20"></v:textrect>		<rect x="0" y="399.5" width="63.25" height="20" rx="4.5" ry="4.5" class="st11"></rect>		<text x="5.62" y="414" class="st4" v:langid="2052"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>音频录制</text>		</g>	<g id="shape16-50" v:mid="16" v:groupcontext="shape" transform="translate(182.75,-153.25)">		<title>Sheet.16</title>		<desc>音频播放</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.625" cy="409.5" width="63.26" height="20"></v:textrect>		<rect x="0" y="399.5" width="63.25" height="20" rx="4.5" ry="4.5" class="st11"></rect>		<text x="5.62" y="414" class="st4" v:langid="2052"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>音频播放</text>		</g>	<g id="shape17-53" v:mid="17" v:groupcontext="shape" transform="translate(856.45,-126.85)">		<title>Sheet.17</title>		<rect v:rectcontext="foreign" x="0" y="390.7" width="28.8" height="28.8" rx="4.5" ry="4.5" class="st11"></rect>		<image x="0" y="390.7" width="28.8" height="28.8" preserveaspectratio="none" xlink:href="data:image/png;base64,iVBOR					w0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvq					GQAAAMRSURBVGhD7ZhLaxRBFEbPzMRIUGKMQrL1BYpLQY1ZCooLxYX4E/QPuHCpCD5ABVHQILhTXAliFJcqPhcqLoSAD0QXoogLEaOgR					u50pVPzTc9UapxOT0IOXFLhfnXrVk/Xoy/MM/cYAkaAe8AXZ9a+AGxScSfRDZwA/gATDew3cHR9ou0ouoAnGQmnVq7937TWp2M4kiZX1					uRLdZNxdliDFMVG4K8kdx0Y7oM+EhsGRkVjfTZosCK4JIndUIHHTdHaYi+cB5LUZhV4mM/X3lFBEdg26Se1WAUe/VD2tZ9UMOPI7mIWw					unSiRROksjU7hMidsK5E5tQrD530mTc69ScunOieGITitXnTmxCE1CJ0edONRFvNwoRO+HciU1I70u5swcYc2ZtJX4CzfWh8aJ56Q1mb					SWUkBLSh8aLJjRgyK/oFVuJjRckFDDkV9yCb3iViI0XJBQw5FdC+pA/mlDAkF9pqi8F/K3wXQIuEv9H8feL38d8vtb6+thV3POXbez/5					q0Mukr8t8RvZZVGmC/VVpLPTJ81Euu1+FvikQTdLf5j4m/2SamTtWKAj+37vv+++FvivAQ9J/6VwLh8aY1CzxZgCbAMsLZ+D/8AVkgsH					eus+FtipwS1E1I5KJrp2AENArwSzQ4VRDOQLNqfEniryCrA48RX80s0soeuj89283m70C9X7WsLFyWBN8BC0dhgxxuWFkvVv1ZatDVTm					9gQPcAH6WOvU9sYdE/EH+CyihyTxd27wFdXtbB2s+LuNYk9nvz47eVk3VOF08nZ0zLW90xGXPsl282ArYUX/kDufbXdpVktqBG9wO2M5					J9C9ZXKhcFS/btq9t4twuliWuujcd4By1Xcbuy0tBNSBzezUuEhutgGrHXXjl7oXueStoq0adJP0PLUrmVb6GodLC+WTiYSb5nbrMWym					DNKGdgPfM5IaMrq60C+Wd99LlZh2HXh1OStNaNWmmXfXB9byB2DHU67gKvAcz9hN6lnwBWnWaCdOxF96rOO+QkUzayfwBildM/P+oboe					PZ6JUJrzzMn+QdjYPIFxW/sbgAAAABJRU5ErkJggg=="></image>		<rect v:rectcontext="foreign" x="0" y="390.7" width="28.8" height="28.8" rx="4.5" ry="4.5" class="st11"></rect>	</g>	<g id="shape18-57" v:mid="18" v:groupcontext="shape" transform="translate(856.45,-262.85)">		<title>Sheet.18</title>		<rect v:rectcontext="foreign" x="0" y="390.7" width="28.8" height="28.8" rx="4.5" ry="4.5" class="st11"></rect>		<image x="0" y="390.7" width="28.8" height="28.8" preserveaspectratio="none" xlink:href="data:image/png;base64,iVBOR					w0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvq					GQAAAMwSURBVGhD7ZpNq01RGMd/+9wiJsrgeikJqRsTQ8WIvIVQYkKJEjJQPgLyIZTJleQ974mUmPgAYijvM0IxouecdY+9/3vtvfba6					5xTt+6vnu45dz3P/7/WflvrnHVghunBQeAG8BH4O+QwD/M6oJ1owwLgacEgs7+ZmBbfZ+VOtY3Hrg+teeERHXU80U415bBHrBQDPNr+6					J5xDmnnmvBAxK4BE5o0BMzDvJxvx/7e0aQmfJMBrNKEIWJe+bNgN3Y0ejpHTbK/Pl1GzSAGkCSwD3jjwl7HknwAUwdgHZ96itjrWFL9k					wV6A+jFtBzAAC6hJP90gUSS/fvFWW8yGTWDG0BbgUSS/ZMFEkn2b/McHgN2AWeB+8AXF/eAM8BOoKNFFQxiAFECy4FX+ZqKlepLYKkWe					9C6aGIEjgI/PTVV8cMt16sZK9VE0y/u1Asc93SwOjqF98dULIfWRKPmPlYAvz25kzC2F1jowl5PevJ+ActU1KG50YQEMrue3dlxkdkNu					0ETc2xyN3Ve97nTUkL+QbqnLtdBZb3HZJ0medjoqVurSYX23oIwGjVRTkv7BU2o4aLUntKEBv4husuHOoGb0r5V2usWczuKtZ2r0m6E/					IOEBD5I+zxpr1tOL5ba99JuhPyDhAQ+S7s9bfLUDWBRsTYzLSXkHyQk8FDat0l73SW03S7R3ExtX+Eo/7WHdBOfl/ZbmlDDI6k9pwkN/					IOEBPZ7cvQs+LDFntTNsolOUe1oQgJzgbeSY5OUTVZVbO7AV6l5DczRxAb+QZoIrAH+eB65l9yRHmc+S4A97n+aZ8uQ1Srq0NxYsvwsX					Cdgk9DUjRYbJ1Ush+ZG4wr7H2rqsKXxd49pVVjuERURtCYaPaoh7FJpsJ+QPXMTWQitjaatgF3TJ4ArwCfgHXDZrf1jvuFu698nWSCRZ					P9kgUSS/XWtE3P6UylucPQuxWi6W0y59Ypt+6zUpCEwAVlui6kbdzWpCbs9pzEydDu2KkoTYTFms0U71xTd6CuFTHaNouL7IhelQd/WT					sVgm8y22ayiFVEyz0XgKPvDvMe1U22wbf9R/dTAPuldH9RPDWYYNv8A0H76scdT/SkAAAAASUVORK5CYII="></image>		<rect v:rectcontext="foreign" x="0" y="390.7" width="28.8" height="28.8" rx="4.5" ry="4.5" class="st11"></rect>	</g>	<g id="shape23-61" v:mid="23" v:groupcontext="shape" transform="translate(669.25,-69.25)">		<title>Sheet.23</title>		<desc>编解码器</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="72" cy="279.5" width="144" height="280"></v:textrect>		<rect x="0" y="139.5" width="144" height="280" rx="4.5" ry="4.5" class="st6"></rect>		<text x="46" y="284" class="st4" v:langid="2052"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>编解码器</text>		</g>	<g id="shape24-64" v:mid="24" v:groupcontext="shape" v:layermember="0" transform="translate(421.25,-189.966)">		<title>Dynamic connector</title>		<path d="M8.68 407 L9.04 407 L22.96 407" class="st12"></path>	</g>	<g id="shape25-72" v:mid="25" v:groupcontext="shape" v:layermember="0" transform="translate(629.25,-189.966)">		<title>Dynamic connector.25</title>		<path d="M8.68 407 L9.04 407 L30.96 407" class="st12"></path>	</g>	<g id="shape26-79" v:mid="26" v:groupcontext="shape" v:layermember="0" transform="translate(813.25,-261.966)">		<title>Dynamic connector.26</title>		<path d="M0 407 L27.96 407" class="st13"></path>	</g>	<g id="shape27-84" v:mid="27" v:groupcontext="shape" v:layermember="0" transform="translate(850.25,-125.966)">		<title>Dynamic connector.27</title>		<path d="M0 407 L-27.96 407" class="st13"></path>	</g></g>
</svg>

音频组件概述

音频系统包括：

- **应用处理器** – 处理音频处理任务的 CPU。任务包括：

    - 管理音频录制和播放
    - 解码音频格式
    - 使用 LPAI 进行后处理任务
- **低功耗 AI (LPAI)** – 运行音频播放/录制和语音激活 (VA) 算法的子系统。它集成了专用的 Qualcomm® Hexagon™ 处理器 (QDSP6) 和低功耗岛 (LPI)。
- **音频 codec** – 硬件包括：

    - 模数转换器 (ADC)
    - 数模转换器 (DAC)

    这些将模拟音频转换为数字音频，反之亦然。
- **扬声器 AMP 和麦克风** – 通过 I2S/TDM/SoundWire 连接的设备。

## 架构

下图显示了高级音频软件架构。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export architecture.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="14.4931in" height="9.48611in" viewbox="0 0 1043.5 683" xml:space="preserve" color-interpolation-filters="sRGB" class="st28" aria-label="../../_images/architecture.svg"><v:documentproperties v:langid="1033">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-2 .st1 { fill: #ffffff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st2 { fill: #ffffff; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st3 { fill: #000000; font-family: Roboto; font-size: 1.00001em; letter-spacing: 0.0833327em }
.svg-2 .st4 { fill: #fafafa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st5 { fill: #000000; font-family: SimHei; font-size: 1.00001em; font-weight: bold; letter-spacing: 0.0833327em }
.svg-2 .st6 { fill: #000000; font-family: SimHei; font-size: 1.00001em; letter-spacing: 0.0833327em }
.svg-2 .st7 { fill: #ffffff; stroke: #d2d7e1; stroke-width: 2 }
.svg-2 .st8 { fill: #007884; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st9 { fill: #ffffff; font-family: Roboto; font-size: 1.00001em; letter-spacing: 0.0833327em }
.svg-2 .st10 { fill: #2a2aea; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st11 { fill: #2a2aea; stroke: #fafafa; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st12 { fill: #ffffff; font-family: Roboto; font-size: 0.833336em; letter-spacing: 0.0999997em }
.svg-2 .st13 { fill: #d2d7e1; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st14 { marker-end: url("#mrkr4-68"); marker-start: url("#mrkr4-66"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-2 .st15 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.37313432835821 }
.svg-2 .st16 { fill: #ffffff; stroke: none; stroke-linecap: butt; stroke-width: 7.2 }
.svg-2 .st17 { fill: #000000; font-family: Roboto; font-size: 0.666664em; letter-spacing: 0.125em }
.svg-2 .st18 { fill: #2a2aea; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st19 { fill: #007884; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st20 { fill: #d2d7e1; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st21 { marker-end: url("#mrkr4-68"); stroke: #000000; stroke-dasharray: 10.5, 7.5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-2 .st22 { marker-end: url("#mrkr4-139"); marker-start: url("#mrkr4-137"); stroke: #f8cb9c; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-2 .st23 { fill: #f8cb9c; fill-opacity: 1; stroke: #f8cb9c; stroke-opacity: 1; stroke-width: 0.37313432835821 }
.svg-2 .st24 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st25 { fill: none; stroke: none; stroke-linecap: butt; stroke-width: 1 }
.svg-2 .st26 { font-family: SimHei; font-size: 1em }
.svg-2 .st27 { marker-end: url("#mrkr4-68"); marker-start: url("#mrkr4-66"); stroke: #000000; stroke-width: 1.5 }
.svg-2 .st28 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="mrkr4-66" class="st15" v:arrowtype="4" v:arrowsize="2" v:setback="5.12" refx="5.12" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(2.68) "></use>	</marker>	<marker id="mrkr4-68" class="st15" v:arrowtype="4" v:arrowsize="2" v:setback="5.36" refx="-5.36" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-2.68,-2.68) "></use>	</marker>	<marker id="mrkr4-137" class="st23" v:arrowtype="4" v:arrowsize="2" v:setback="5.12" refx="5.12" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(2.68) "></use>	</marker>	<marker id="mrkr4-139" class="st23" v:arrowtype="4" v:arrowsize="2" v:setback="5.36" refx="-5.36" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-2.68,-2.68) "></use>	</marker></defs><g v:mid="1" v:index="1" v:groupcontext="backgroundPage">	<v:userdefs>		<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>VBackground-1</title>	<v:pageproperties width="14.4931" height="9.48611" v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(0.00166111,1.13687E-13)">		<title>Solid</title>		<v:userdefs>			<v:ud v:nameu="Background" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="msvShapeCategories" v:prompt="" v:val="VT4(DoNotContain)"></v:ud>			<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>		</v:userdefs>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L1039 683 A4.5001 4.5001 -180 0 0 1043.5 678.5 L1043.5 4.5 A4.5001					 4.5001 -180 0 0 1039 -0 L4.5 0 A4.5001 4.5001 -180 0 0 -0 4.5 L0 678.5 Z" class="st1"></path>	</g></g><g v:mid="0" v:index="2" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape7-3" v:mid="7" v:groupcontext="shape" transform="translate(19.0017,-213.5)">		<title>Sheet.7</title>		<desc>PC</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="75.9983" cy="651" width="152" height="64"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L147.5 683 A4.5001 4.5001 -180 0 0 152 678.5 L152 623.5 A4.5001 4.5001					 -180 0 0 147.5 619 L4.5 619 A4.5001 4.5001 -180 0 0 -0 623.5 L0 678.5 Z" class="st2"></path>		<text x="4" y="636.5" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>PC</text>		</g>	<g id="shape1-6" v:mid="1" v:groupcontext="shape" transform="translate(872.502,-20.5)">		<title>Sheet.1</title>		<desc>Legend</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="75.9983" cy="609.25" width="152" height="147.5"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L147.5 683 A4.5001 4.5001 -180 0 0 152 678.5 L152 540 A4.5001 4.5001					 -180 0 0 147.5 535.5 L4.5 535.5 A4.5001 4.5001 -180 0 0 0 540 L0 678.5 Z" class="st4"></path>		<text x="4" y="553" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>图例</text>		</g>	<g id="shape2-9" v:mid="2" v:groupcontext="shape" transform="translate(203.002,-584)">		<title>Sheet.2</title>		<desc>Application layer</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="223.998" cy="643" width="448.01" height="80"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L443.5 683 A4.5001 4.5001 -180 0 0 448 678.5 L448 607.5 A4.5001 4.5001					 -180 0 0 443.5 603 L4.5 603 A4.5001 4.5001 -180 0 0 -0 607.5 L0 678.5 Z" class="st2"></path>		<text x="3.99" y="620.5" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>应用层</text>		</g>	<g id="shape3-12" v:mid="3" v:groupcontext="shape" transform="translate(203.002,-424)">		<title>Sheet.3</title>		<desc>Middleware layer</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="223.998" cy="611" width="448.01" height="144"></v:textrect>		<rect x="0" y="539" width="448" height="144" class="st7"></rect>		<text x="3.99" y="556.5" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>中间层</text>		</g>	<g id="shape4-15" v:mid="4" v:groupcontext="shape" transform="translate(203.002,-213.5)">		<title>Sheet.4</title>		<desc>Hardware abstraction layer</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="223.998" cy="585.75" width="448.01" height="194.5"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L443.5 683 A4.5001 4.5001 -180 0 0 448 678.5 L448 493 A4.5001 4.5001					 -180 0 0 443.5 488.5 L4.5 488.5 A4.5001 4.5001 -180 0 0 0 493 L0 678.5 Z" class="st2"></path>		<text x="3.99" y="506" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>硬件抽象层</text>		</g>	<g id="shape5-18" v:mid="5" v:groupcontext="shape" transform="translate(203.002,-117.5)">		<title>Sheet.5</title>		<desc>Kernel space</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="223.998" cy="643" width="448.01" height="80"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L443.5 683 A4.5001 4.5001 -180 0 0 448 678.5 L448 607.5 A4.5001 4.5001					 -180 0 0 443.5 603 L4.5 603 A4.5001 4.5001 -180 0 0 -0 607.5 L0 678.5 Z" class="st2"></path>		<text x="3.99" y="620.5" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>内核空间</text>		</g>	<g id="shape6-21" v:mid="6" v:groupcontext="shape" transform="translate(203.002,-21.5)">		<title>Sheet.6</title>		<desc>LPAI</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="223.998" cy="643" width="448.01" height="80"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L443.5 683 A4.5001 4.5001 -180 0 0 448 678.5 L448 607.5 A4.5001 4.5001					 -180 0 0 443.5 603 L4.5 603 A4.5001 4.5001 -180 0 0 -0 607.5 L0 678.5 Z" class="st2"></path>		<text x="3.99" y="620.5" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>LPAI</text>		</g>	<g id="shape8-24" v:mid="8" v:groupcontext="shape" transform="translate(379.002,-472)">		<title>Sheet.8</title>		<desc>PipeWire Pulse</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54.4983" cy="667" width="109" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L104.5 683 A4.5001 4.5001 -180 0 0 109 678.5 L109 655.5 A4.5001 4.5001					 -180 0 0 104.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 -0 655.5 L0 678.5 Z" class="st8"></path>		<text x="7.42" y="671.5" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PipeWire Pulse</text>		</g>	<g id="shape9-27" v:mid="9" v:groupcontext="shape" transform="translate(318.002,-285.25)">		<title>Sheet.9</title>		<desc>PAL</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="143.998" cy="667" width="288" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L283.5 683 A4.5001 4.5001 -180 0 0 288 678.5 L288 655.5 A4.5001 4.5001					 -180 0 0 283.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 -0 655.5 L0 678.5 Z" class="st10"></path>		<text x="131.57" y="671.5" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PAL</text>		</g>	<g id="shape10-30" v:mid="10" v:groupcontext="shape" transform="translate(315.002,-229.5)">		<title>Sheet.10</title>		<desc>ARGS</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="39.9983" cy="667" width="80" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L75.5 683 A4.5001 4.5001 -180 0 0 80 678.5 L80 655.5 A4.5001 4.5001					 -180 0 0 75.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 -0 655.5 L0 678.5 Z" class="st10"></path>		<text x="22.74" y="671.5" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>ARGS</text>		</g>	<g id="shape11-33" v:mid="11" v:groupcontext="shape" transform="translate(419.002,-229.5)">		<title>Sheet.11</title>		<desc>AGM</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="39.9983" cy="667" width="80" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L75.5 683 A4.5001 4.5001 -180 0 0 80 678.5 L80 655.5 A4.5001 4.5001					 -180 0 0 75.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 -0 655.5 L0 678.5 Z" class="st10"></path>		<text x="25.26" y="671.5" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>AGM</text>		</g>	<g id="shape12-36" v:mid="12" v:groupcontext="shape" transform="translate(523.002,-229.5)">		<title>Sheet.12</title>		<desc>TinyALSA</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="39.9983" cy="667" width="80" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L75.5 683 A4.5001 4.5001 -180 0 0 80 678.5 L80 655.5 A4.5001 4.5001					 -180 0 0 75.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 -0 655.5 L0 678.5 Z" class="st8"></path>		<text x="10.2" y="671.5" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TinyALSA</text>		</g>	<g id="shape13-39" v:mid="13" v:groupcontext="shape" transform="translate(254.002,-600)">		<title>Sheet.13</title>		<desc>Application</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="182.498" cy="667" width="365" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L360.5 683 A4.5001 4.5001 -180 0 0 365 678.5 L365 655.5 A4.5001 4.5001					 -180 0 0 360.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 0 655.5 L0 678.5 Z" class="st2"></path>		<text x="156.5" y="671.5" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>应用程序</text>		</g>	<g id="group14-42" transform="translate(215.002,-220.675)" v:mid="14" v:groupcontext="group">		<v:userdefs>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<title>Can</title>		<desc>ACDB</desc>		<g id="shape15-43" v:mid="15" v:groupcontext="shape">			<title>Sheet.15</title>			<v:userdefs>				<v:ud v:nameu="ControlHalfHeight" v:prompt="" v:val="VT0(0):26"></v:ud>				<v:ud v:nameu="FillForegnd" v:prompt="" v:val="VT0(0):26"></v:ud>			</v:userdefs>			<path d="M2.73 680.7 A20 5 -0 0 0 40 678.18 L40 642.68 A4.5 4.5 -180 0 0 35.5 638.18 L4.5 638.18 A4.5 4.5 -180 0						 0 0 642.68 L0 676.56 A4.5 4.5 -180 0 0 2.73 680.7 Z" class="st11"></path>		</g>		<g id="shape16-45" v:mid="16" v:groupcontext="shape" transform="translate(0,-39.8248)">			<title>shape11-48</title>			<desc>ACDB</desc>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="19.9983" cy="698" width="40" height="50"></v:textrect>			<ellipse cx="20" cy="678" rx="20" ry="5" class="st11"></ellipse>			<text x="5.09" y="701.75" class="st12" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>ACDB</text>			</g>	</g>	<g id="shape17-48" v:mid="17" v:groupcontext="shape" transform="translate(75.0017,-229.5)">		<title>Sheet.17</title>		<desc>QACT</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="39.9983" cy="667" width="80" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L75.5 683 A4.5001 4.5001 -180 0 0 80 678.5 L80 655.5 A4.5001 4.5001					 -180 0 0 75.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 -0 655.5 L0 678.5 Z" class="st10"></path>		<text x="22.47" y="671.5" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QACT</text>		</g>	<g id="shape18-51" v:mid="18" v:groupcontext="shape" transform="translate(419.002,-133.5)">		<title>Sheet.18</title>		<desc>ASOC</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.9983" cy="667" width="184" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L179.5 683 A4.5001 4.5001 -180 0 0 184 678.5 L184 655.5 A4.5001 4.5001					 -180 0 0 179.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 -0 655.5 L0 678.5 Z" class="st8"></path>		<text x="74.49" y="671.5" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>ASOC</text>		</g>	<g id="shape19-54" v:mid="19" v:groupcontext="shape" transform="translate(315.002,-37.5)">		<title>Sheet.19</title>		<desc>SPF</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="143.998" cy="667" width="288" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L283.5 683 A4.5001 4.5001 -180 0 0 288 678.5 L288 655.5 A4.5001 4.5001					 -180 0 0 283.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 -0 655.5 L0 678.5 Z" class="st10"></path>		<text x="131.84" y="671.5" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SPF</text>		</g>	<g id="shape20-57" v:mid="20" v:groupcontext="shape" transform="translate(688.002,-37.5)">		<title>Sheet.20</title>		<desc>Codec</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="39.9983" cy="667" width="80" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L75.5 683 A4.5001 4.5001 -180 0 0 80 678.5 L80 655.5 A4.5001 4.5001					 -180 0 0 75.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 -0 655.5 L0 678.5 Z" class="st13"></path>		<text x="20.47" y="671.5" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Codec</text>		</g>	<g id="shape21-60" v:mid="21" v:groupcontext="shape" v:layermember="0" transform="translate(355.002,-69.5)">		<title>Dynamic connector</title>		<path d="M0 530.68 L0 531.04 L0 531.68 L0 532.04 L0 673.96 L0 674.96" class="st14"></path>	</g>	<g id="shape22-69" v:mid="22" v:groupcontext="shape" v:layermember="0" transform="translate(155.002,-245.5)">		<title>Dynamic connector.42</title>		<desc>USB</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,0,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="29.9983" cy="686.182" width="40" height="20.0036"></v:textrect>		<path d="M7.68 683 L8.04 683 L8.68 683 L9.04 683 L50.96 683 L51.96 683" class="st14"></path>		<rect v:rectcontext="textBkgnd" x="21.0412" y="680.18" width="17.914" height="7.99997" class="st16"></rect>		<text x="21.04" y="686.18" class="st17" v:langid="1033"><v:paragraph v:spline="-1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>USB</text>		</g>	<g id="shape23-78" v:mid="23" v:groupcontext="shape" v:layermember="0" transform="translate(255.002,-245.5)">		<title>Dynamic connector.43</title>		<path d="M7.68 683 L8.04 683 L8.68 683 L9.04 683 L50.96 683 L51.96 683" class="st14"></path>	</g>	<g id="shape24-85" v:mid="24" v:groupcontext="shape" v:layermember="0" transform="translate(395.002,-245.5)">		<title>Dynamic connector.44</title>		<path d="M7.68 683 L8.04 683 L8.68 683 L9.04 683 L14.96 683 L15.96 683" class="st14"></path>	</g>	<g id="shape25-92" v:mid="25" v:groupcontext="shape" v:layermember="0" transform="translate(499.002,-245.5)">		<title>Dynamic connector.46</title>		<path d="M7.68 683 L8.04 683 L8.68 683 L9.04 683 L14.96 683 L15.96 683" class="st14"></path>	</g>	<g id="shape26-99" v:mid="26" v:groupcontext="shape" v:layermember="0" transform="translate(563.002,-165.5)">		<title>Dynamic connector.51</title>		<path d="M0 626.68 L0 627.04 L0 627.68 L0 628.04 L0 673.96 L0 674.96" class="st14"></path>	</g>	<g id="shape27-106" v:mid="27" v:groupcontext="shape" v:layermember="0" transform="translate(459.002,-165.5)">		<title>Dynamic connector.52</title>		<path d="M0 626.68 L0 627.04 L0 627.68 L0 628.04 L0 673.96 L0 674.96" class="st14"></path>	</g>	<g id="shape28-113" v:mid="28" v:groupcontext="shape" transform="translate(874.502,-126.5)">		<title>Sheet.28</title>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L35.5 683 A4.5001 4.5001 -180 0 0 40 678.5 L40 671.5 A4.5001 4.5001					 -180 0 0 35.5 667 L4.5 667 A4.5001 4.5001 -180 0 0 0 671.5 L0 678.5 Z" class="st18"></path>	</g>	<g id="shape29-115" v:mid="29" v:groupcontext="shape" transform="translate(874.502,-102.5)">		<title>Sheet.29</title>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L35.5 683 A4.5001 4.5001 -180 0 0 40 678.5 L40 671.5 A4.5001 4.5001					 -180 0 0 35.5 667 L4.5 667 A4.5001 4.5001 -180 0 0 0 671.5 L0 678.5 Z" class="st19"></path>	</g>	<g id="shape30-117" v:mid="30" v:groupcontext="shape" transform="translate(874.502,-78.5)">		<title>Sheet.30</title>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L35.5 683 A4.5001 4.5001 -180 0 0 40 678.5 L40 671.5 A4.5001 4.5001					 -180 0 0 35.5 667 L4.5 667 A4.5001 4.5001 -180 0 0 0 671.5 L0 678.5 Z" class="st20"></path>	</g>	<g id="shape31-119" v:mid="31" v:groupcontext="shape" v:layermember="0" transform="translate(874.502,-62.5)">		<title>Dynamic connector.96</title>		<path d="M7.68 683 L8.04 683 L8.68 683 L9.04 683 L30.96 683 L31.96 683" class="st14"></path>	</g>	<g id="shape32-126" v:mid="32" v:groupcontext="shape" v:layermember="0" transform="translate(874.502,-46.5)">		<title>Dynamic connector.97</title>		<path d="M0 683 L30.96 683 L31.96 683" class="st21"></path>	</g>	<g id="shape33-131" v:mid="33" v:groupcontext="shape" v:layermember="0" transform="translate(872.5,-30.5)">		<title>Dynamic connector.98</title>		<path d="M7.68 683 L8.04 683 L9.11 683 L9.49 683 L32.51 683 L33.96 683" class="st22"></path>	</g>	<g id="shape34-140" v:mid="34" v:groupcontext="shape" v:layermember="0" transform="translate(603.002,-69.5)">		<title>Dynamic connector.101</title>		<path d="M0 603 L125 603 L125 673.96 L125 674.96" class="st21"></path>	</g>	<g id="shape35-145" v:mid="35" v:groupcontext="shape" transform="translate(923.302,-125)">		<title>Sheet.35</title>		<desc>Qualcomm</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="39.1983" cy="671.75" width="78.4" height="22.5"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L73.9 683 A4.5001 4.5001 -180 0 0 78.4 678.5 L78.4 665 A4.5001 4.5001					 -180 0 0 73.9 660.5 L4.5 660.5 A4.5001 4.5001 -180 0 0 -0 665 L0 678.5 Z" class="st24"></path>		<text x="4" y="676.25" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Qualcomm</text>		</g>	<g id="shape36-148" v:mid="36" v:groupcontext="shape" transform="translate(923.302,-100.5)">		<title>Sheet.36</title>		<desc>Open source</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="44.1483" cy="673" width="88.3" height="20"></v:textrect>		<path d="M-0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L83.8 683 A4.5001 4.5001 -180 0 0 88.3 678.5 L88.3 667.5 A4.5001 4.5001					 -180 0 0 83.8 663 L4.5 663 A4.5001 4.5001 -180 0 0 0 667.5 L0 678.5 Z" class="st24"></path>		<text x="4" y="677.5" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>开源</text>		</g>	<g id="shape37-151" v:mid="37" v:groupcontext="shape" transform="translate(923.302,-76.5)">		<title>Sheet.37</title>		<desc>Hardware</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="34.8983" cy="673" width="69.81" height="20"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L65.3 683 A4.5001 4.5001 -180 0 0 69.8 678.5 L69.8 667.5 A4.5001 4.5001					 -180 0 0 65.3 663 L4.5 663 A4.5001 4.5001 -180 0 0 0 667.5 L0 678.5 Z" class="st24"></path>		<text x="3.99" y="677.5" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>硬件</text>		</g>	<g id="shape38-154" v:mid="38" v:groupcontext="shape" transform="translate(923.302,-52.5)">		<title>Sheet.38</title>		<desc>Data flow</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="34.8983" cy="673" width="69.81" height="20"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L65.3 683 A4.5001 4.5001 -180 0 0 69.8 678.5 L69.8 667.5 A4.5001 4.5001					 -180 0 0 65.3 663 L4.5 663 A4.5001 4.5001 -180 0 0 0 667.5 L0 678.5 Z" class="st24"></path>		<text x="3.99" y="677.5" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>数据流</text>		</g>	<g id="shape39-157" v:mid="39" v:groupcontext="shape" transform="translate(923.302,-36.5)">		<title>Sheet.39</title>		<desc>Data + control</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="50.2483" cy="673" width="100.5" height="20"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L96 683 A4.5001 4.5001 -180 0 0 100.5 678.5 L100.5 667.5 A4.5001 4.5001					 -180 0 0 96 663 L4.5 663 A4.5001 4.5001 -180 0 0 0 667.5 L0 678.5 Z" class="st24"></path>		<text x="4" y="677.5" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>数据 + 控制</text>		</g>	<g id="shape40-160" v:mid="40" v:groupcontext="shape" transform="translate(923.302,-20.5)">		<title>Sheet.40</title>		<desc>Control</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.8983" cy="673" width="63.8" height="20"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L59.3 683 A4.5001 4.5001 -180 0 0 63.8 678.5 L63.8 667.5 A4.5001 4.5001					 -180 0 0 59.3 663 L4.5 663 A4.5001 4.5001 -180 0 0 0 667.5 L0 678.5 Z" class="st24"></path>		<text x="4" y="677.5" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>控制</text>		</g>	<g id="shape41-163" v:mid="41" v:groupcontext="shape" v:layermember="0" transform="translate(768.002,-62.5)">		<title>Dynamic connector.111</title>		<path d="M56.32 683 L55.96 683 L55.32 683 L54.96 683 L9.04 683 L8.04 683" class="st22"></path>	</g>	<g id="shape42-170" v:mid="42" v:groupcontext="shape" v:layermember="0" transform="translate(768.002,-46.5)">		<title>Dynamic connector.112</title>		<path d="M56.32 683 L55.96 683 L55.32 683 L54.96 683 L9.04 683 L8.04 683" class="st22"></path>	</g>	<g id="shape43-177" v:mid="43" v:groupcontext="shape" transform="translate(831.602,-56.1)">		<title>Sheet.43</title>		<rect v:rectcontext="foreign" x="0" y="668.6" width="14.4" height="14.4" class="st25"></rect>		<image x="0" y="668.6" width="14.4" height="14.4" preserveaspectratio="none" xlink:href="data:image/png;base64,iVBOR					w0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvq					GQAAAGPSURBVEhLzZW9SkMxFIC/JGJROoio6CA6al9AfAAFbaE4+CQOroJDfQTduzk4iW6iWNEnUcFKXQRBieTntmm4t3pvKfSDQHJy/					nJuTi6MCXWUaklBB+gIaAHVWKkoNSQagQa0MnOknQO7sXIRTLYaxTlQsUOYuQkizN7QvPls1wOZCaQltANZYZJyRIgMeW5EUv+YLHlus					jLNkudGi9RMi5foxg9P90rGxPLbfrsMpDWy2SVo2b/uyqMASX8MRqQaZp0gdPj/kj0bxXlY9Ou2tN1r776lXKYirEz4PphbMt2unO2fX					LnrV9oxCwUtV7YJ08lrPpCZa1C+k1XVn+Ay8pWGbNi3By68oNYrU7cM2um4JARce5vjfl8pzMAq8OUdWQcoakLwAHwA78B98NDVve4ns					NLnbACHPssXKG3FmwHbwKsPcBBvZrJvS89TcIOa0y7ThVlYBvYUNIOSPbrPlY9J4AT4MU7ch+79F/z4BhpwZHSLMrUJnCm4Cxyb+SmwE					WsPSxJgZIw8QPQQjgG/bsOCSwo/KuEAAAAASUVORK5CYII="></image>		<rect v:rectcontext="foreign" x="0" y="668.6" width="14.4" height="14.4" class="st25"></rect>	</g>	<g id="shape44-181" v:mid="44" v:groupcontext="shape" transform="translate(833.602,-39.3)">		<title>Sheet.44</title>		<rect v:rectcontext="foreign" x="0" y="668.6" width="14.4" height="14.4" class="st25"></rect>		<image x="0" y="668.6" width="14.4" height="14.4" preserveaspectratio="none" xlink:href="data:image/png;base64,iVBOR					w0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvq					GQAAADdSURBVEhL7ZQ9CgIxFIS/TbplwRXRk9l4DI/kCTyGhRYqW4iKlZVY264k+0sw+iCx2w9SZd5MkbyBgQhMNKyBO7BwL0PJgSNQQ					lICD1cQQgZslTXnWoXYE4UUzaY2PGcwCw2YA6eeSXP25g1qTVBAQdIZK3gBK2DU0wQFCIbtI//Q+NCSAJHGi2RYovEiGZZovEiGJRovz					aZ+IyigAFUbJKVuv2luqqIhKMAs2qXahfY7mn2ItmguKXRVQYSq+IQpu501Tbj9I8AwBg4986criEA2NSG2thVL93YgmDdTZFX72mZti					wAAAABJRU5ErkJggg=="></image>		<rect v:rectcontext="foreign" x="0" y="668.6" width="14.4" height="14.4" class="st25"></rect>	</g>	<g id="shape45-185" v:mid="45" v:groupcontext="shape" transform="translate(358.002,-341)">		<title>Sheet.45</title>		<desc>PipeWire PAL plugin</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="99.9983" cy="667" width="200" height="32"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L195.5 683 A4.5001 4.5001 -180 0 0 200 678.5 L200 655.5 A4.5001 4.5001					 -180 0 0 195.5 651 L4.5 651 A4.5001 4.5001 -180 0 0 -0 655.5 L0 678.5 Z" class="st10"></path>		<text x="42.82" y="671.99" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PipeWire PAL <tspan class="st26">插件</tspan></text>		</g>	<g id="shape46-189" v:mid="46" v:groupcontext="shape" transform="translate(510.002,-449.6)">		<title>Sheet.46</title>		<desc>GStreamer</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="47.9983" cy="644.6" width="96.01" height="76.8"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L91.5 683 A4.5001 4.5001 -180 0 0 96 678.5 L96 610.7 A4.5001 4.5001					 -180 0 0 91.5 606.2 L4.5 606.2 A4.5001 4.5001 -180 0 0 -0 610.7 L0 678.5 Z" class="st8"></path>		<text x="14.95" y="649.1" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GStreamer</text>		</g>	<g id="shape47-192" v:mid="47" v:groupcontext="shape" v:layermember="0" transform="translate(458.002,-317.245)">		<title>Dynamic connector.1006</title>		<path d="M0 666.93 L0 667.29 L0 667.93 L0 668.29 L0 673.96 L0 674.96" class="st14"></path>	</g>	<g id="shape48-199" v:mid="48" v:groupcontext="shape" v:layermember="0" transform="translate(563.002,-261.495)">		<title>Dynamic connector.1017</title>		<path d="M0 666.93 L0 667.29 L0 667.93 L0 668.29 L0 673.96 L0 674.96" class="st14"></path>	</g>	<g id="shape49-206" v:mid="49" v:groupcontext="shape" transform="translate(261.002,-449.6)">		<title>Sheet.49</title>		<desc>PipeWire</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="47.9983" cy="644.6" width="96.01" height="76.8"></v:textrect>		<path d="M0 678.5 A4.5001 4.5001 -180 0 0 4.5 683 L91.5 683 A4.5001 4.5001 -180 0 0 96 678.5 L96 610.7 A4.5001 4.5001					 -180 0 0 91.5 606.2 L4.5 606.2 A4.5001 4.5001 -180 0 0 -0 610.7 L0 678.5 Z" class="st8"></path>		<text x="20.22" y="649.1" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PipeWire</text>		</g>	<g id="shape50-209" v:mid="50" v:groupcontext="shape" v:layermember="0" transform="translate(357.002,-488)">		<title>Dynamic connector.1020</title>		<path d="M7.68 683 L8.04 683 L8.68 683 L9.04 683 L12.96 683 L13.96 683" class="st14"></path>	</g>	<g id="shape51-216" v:mid="51" v:groupcontext="shape" v:layermember="0" transform="translate(488.005,-486.025)">		<title>Dynamic connector.1021</title>		<path d="M7.68 682.7 L8.04 682.71 L8.68 682.73 L9.04 682.74 L12.96 682.82 L13.96 682.84" class="st14"></path>	</g>	<g id="shape52-223" v:mid="52" v:groupcontext="shape" v:layermember="0" transform="translate(558.002,-526.4)">		<title>Dynamic connector.1024</title>		<path d="M0 617.08 L0 617.44 L0 618.08 L0 618.44 L0 673.96 L0 674.96" class="st14"></path>	</g>	<g id="shape53-230" v:mid="53" v:groupcontext="shape" v:layermember="0" transform="translate(308.002,-526.4)">		<title>Dynamic connector.1025</title>		<path d="M0 617.08 L0 617.44 L0 618.08 L0 618.44 L0 673.96 L0 674.96" class="st14"></path>	</g>	<g id="shape54-237" v:mid="54" v:groupcontext="shape" v:layermember="0" transform="translate(308.002,-373)">		<title>Dynamic connector.1026</title>		<path d="M0 614.08 L0 614.44 L0 615.08 L0 615.44 L0 621.6 L150 621.6 L150 673.96 L150 674.96" class="st27"></path>	</g></g>
</svg>

高级音频软件架构

以下是主要的音频软件架构组件：

[PipeWire](https://docs.qualcomm.com/doc/80-70022-16SC/topic/enable-audio.html#enable-pipewire)

PipeWire 是一款适用于 Linux 的多媒体服务器，可在应用程序和硬件之间传输音频。它取代了 PulseAudio，为应用程序提供低延迟、安全和灵活的媒体处理。

[平台抽象层 (PAL)](https://docs.qualcomm.com/doc/80-70022-16SC/topic/pal.html#pal)

提供更高级别的音频特定 API 来访问音频硬件和驱动程序以启用音频功能。

[音频图管理器 (AGM)](https://docs.qualcomm.com/doc/80-70022-16SC/topic/agm.html#agm)

提供接口以允许基于 TinyALSA 的混音器控件和 PCM/压缩插件进行交互并启用音频功能。

[AudioReach Graph Service (ARGS)](https://docs.qualcomm.com/doc/80-70022-16SC/topic/agm.html#args)

由图服务层 (GSL)、通用包路由器 (GPR) 和 ACDB 管理层 (AML) 模块组成。处理图的初始化和创建，以及创建用于向信号处理框架 (SPF) 发送一系列命令的数据包。

[音频校准数据库 (ACDB)](https://docs.qualcomm.com/doc/80-70022-16SC/topic/agm.html#section-rhd-fg4-zbc)

包括各种音频用例的信息，例如图、模块校准数据等。APPS 处理器解析 acdb 文件以获取 SPF 用于启用用例的图信息。

[信号处理框架 (SPF)](https://docs.qualcomm.com/doc/80-70022-16SC/topic/agm.html#spf-sw)

在 LPAI DSP 上运行的模块化框架。它有助于设置、配置和运行音频功能的信号处理模块。

[Qualcomm Audio Calibration Tool（QACT™ 平台）](https://docs.qualcomm.com/bundle/resource/topics/80-70022-16A/tools.html)

基于 PC 的软件，提供 GUI 来可视化、配置和存储音频用例的 acdb 中的音频图。

Last Published: Nov 04, 2025

[Previous Topic
音频文档](https://docs.qualcomm.com/bundle/publicresource/80-70022-16SC/topics/audio.md) [Next Topic
启用音频](https://docs.qualcomm.com/bundle/publicresource/80-70022-16SC/topics/enable-audio.md)