# Advanced audio features

## Minimize echo and noise

Echo and noise problems are common in VoIP systems. Speech
comes from the far-end speaker and echoes back with a time delay,
causing perception problems. Echo cancellation decreases the echo from the
far-end speaker during communication. Noise suppression
decreases the noise from the microphone channel.
The Fluence echo cancellation and noise suppression (ECNS) algorithm
provides stationary and nonstationary noise suppression and echo
cancellation.

Acoustic echo is when echoes occur due to the acoustic path (acoustic
coupling) between the loudspeaker and microphone of a device.
It is important for hands-free and teleconferencing
applications.

The following figure shows the acoustic echo path and how acoustic echo occurs between
loudspeakers and microphones.

<?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 ecns_overview.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="8.26111in" height="4.25in" viewbox="0 0 594.8 306" xml:space="preserve" color-interpolation-filters="sRGB" class="st10 svg-1" aria-label="../../_images/ECNS_overview.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 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st4 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st5 { fill: #000000; font-family: Roboto; font-size: 1.00001em; letter-spacing: 0.0833327em }
.svg-1 .st6 { marker-end: url("#1-mrkr4-65"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st7 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.44247787610619 }
.svg-1 .st8 { marker-end: url("#1-mrkr4-76"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st9 { marker-start: url("#1-mrkr4-82"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st10 { 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="1-mrkr4-65" class="st7" 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>	<marker id="1-mrkr4-76" class="st7" 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,-2.26) "></use>	</marker>	<marker id="1-mrkr4-82" class="st7" 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></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="8.26111" height="4.25" 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="594.8" height="306" 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="shape70-3" v:mid="70" v:groupcontext="shape" transform="translate(18.75,-18.75)">		<title>Sheet.70</title>		<rect x="0" y="37.5" width="557.3" height="268.5" rx="4.5" ry="4.5" class="st2"></rect>	</g>	<g id="shape35-5" v:mid="35" v:groupcontext="shape" transform="translate(370.163,-151.534) rotate(-5.59301)">		<title>Sheet.35</title>		<path d="M0 301.72 C9.22 303.76 18.73 305.18 28.26 305.72 C38.71 306.32 49.18 305.86 59.43 305.41 C63.5 305.23 67.53					 305.05 71.76 304.71 C73.74 304.55 75.76 304.35 77.22 303.58 C78.45 302.93 79.27 301.87 80.57 301.72" class="st3"></path>	</g>	<g id="shape36-8" v:mid="36" v:groupcontext="shape" transform="translate(721.265,-52.9172) rotate(60.0719)">		<title>Sheet.36</title>		<path d="M0 306 C6.08 301.87 12.87 300.56 19.78 300.31 C29.28 299.97 39.02 301.65 47.48 306" class="st3"></path>	</g>	<g id="shape37-11" v:mid="37" v:groupcontext="shape" transform="translate(672.362,288.765) rotate(123.453)">		<title>Sheet.37</title>		<path d="M0 304.78 C10.58 305.54 24.45 307.14 33.56 304.78" class="st3"></path>	</g>	<g id="shape38-14" v:mid="38" v:groupcontext="shape" transform="translate(418.069,-185.25)">		<title>Sheet.38</title>		<path d="M6.5 290 L6.5 293.29 A4.5 4.5 0 0 1 4.58 296.97 C1.59 299.07 0.7 302.94 0 306" class="st3"></path>	</g>	<g id="shape44-17" v:mid="44" v:groupcontext="shape" transform="translate(411.069,-200.475)">		<title>Sheet.44</title>		<path d="M0 305.23 C4 306.2 9.2 306.37 13.5 305.23" class="st3"></path>	</g>	<g id="shape47-20" v:mid="47" v:groupcontext="shape" transform="translate(409.807,-201.25)">		<title>Sheet.47</title>		<path d="M1.26 306 C0.41 305.21 -0.17 303.95 0.05 302.48 A4.5 4.5 -180 0 0 0.08 301.44 C-0.03 300.04 0.16 298.54 0.15					 298" class="st3"></path>	</g>	<g id="shape48-23" v:mid="48" v:groupcontext="shape" transform="translate(401.566,-206.25)">		<title>Sheet.48</title>		<path d="M8.5 299 C8.46 298.51 8.1 298.2 7.54 297.86 A2.25 2.25 0 0 1 6.47 295.6 C6.62 294.6 6.35 293.63 5.67 292.73					 A2.25 2.25 -180 0 0 3.92 291.84 C2.4 291.81 0.11 292.04 0 290.4 C-0.01 290.14 0.03 289.83 0.24 289.64 A4.5					 4.5 -180 0 0 0.95 288.86 C3.25 285.59 5.83 283.1 8.66 279.95 A2.25 2.25 -180 0 0 9.09 277.65 C8.65 276.48					 8.04 275.52 7.3 274.7 A4.5 4.5 0 0 1 6.16 271.21 C6.42 268.72 6.96 266.46 7.7 264.3 C8.33 262.47 9.09 260.72					 10.39 259.48 A4.5 4.5 -180 0 0 11.74 255.57 C11.48 253.81 12.11 251.79 13.01 250.51 A4.5 4.5 -180 0 0 13.83					 248.1 C13.91 246.02 15.76 245.03 17.7 244.5 C21.45 243.48 25.56 244.19 29.5 245 C35.94 246.32 41.9 247.93					 48.5 248.2 C52.49 248.36 56.71 248.03 59.08 251.33 A4.5 4.5 -180 0 0 60.3 252.49 C63.53 254.56 66.56 257.53					 68.3 261.3 C71.11 267.36 70.62 275.49 68.1 282.2 C65.69 288.65 61.4 293.77 56.7 298.31 A4.5 4.5 0 0 1 56.35					 298.62 C54.17 300.31 53.79 303.44 54.5 306" class="st3"></path>	</g>	<g id="shape50-26" v:mid="50" v:groupcontext="shape" transform="translate(714.342,101.564) rotate(91.6592)">		<title>Sheet.50</title>		<path d="M0 304.4 C-0.39 307.34 3.97 305.6 4 304.4" class="st3"></path>	</g>	<g id="shape51-29" v:mid="51" v:groupcontext="shape" transform="translate(226.957,-198.45)">		<title>Sheet.51</title>		<rect v:rectcontext="foreign" x="0" y="277.2" width="28.8" height="28.8" rx="4.5" ry="4.5" class="st4"></rect>		<image x="0" y="277.2" width="28.8" height="28.8" preserveaspectratio="none" xlink:href="data:image/png;base64,iVBOR					w0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH					3gAAAMRSURBVGhD7ZhLaxRBFEbPzMRIUGKMQrL1BYpLQY1ZCooLxYX4E/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="277.2" width="28.8" height="28.8" rx="4.5" ry="4.5" class="st4"></rect>	</g>	<g id="shape53-33" v:mid="53" v:groupcontext="shape" transform="translate(58.4356,-211.25)">		<title>Sheet.53</title>		<desc>Near-end speech signal</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="81.3214" cy="296" width="162.65" height="20"></v:textrect>		<rect x="0" y="286" width="162.643" height="20" rx="4.5" ry="4.5" class="st4"></rect>		<text x="4" y="300.5" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Near-end speech signal</text>		</g>	<g id="shape56-36" v:mid="56" v:groupcontext="shape" transform="translate(68.55,-85.25)">		<title>Sheet.56</title>		<desc>Far-end speech signal</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="81.3214" cy="296" width="162.65" height="20"></v:textrect>		<rect x="0" y="286" width="162.643" height="20" rx="4.5" ry="4.5" class="st4"></rect>		<text x="4" y="300.5" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Far-end speech signal</text>		</g>	<g id="shape61-39" v:mid="61" v:groupcontext="shape" transform="translate(394.757,-136.25)">		<title>Sheet.61</title>		<desc>Near-end speaker</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="81.3214" cy="296" width="162.65" height="20"></v:textrect>		<rect x="0" y="286" width="162.643" height="20" rx="4.5" ry="4.5" class="st4"></rect>		<text x="4" y="300.5" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Near-end speaker</text>		</g>	<g id="shape62-42" v:mid="62" v:groupcontext="shape" transform="translate(386.757,-89.25)">		<title>Sheet.62</title>		<desc>Environmental noise</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="81.3214" cy="296" width="162.65" height="20"></v:textrect>		<rect x="0" y="286" width="162.643" height="20" rx="4.5" ry="4.5" class="st4"></rect>		<text x="4" y="300.5" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Environmental noise</text>		</g>	<g id="shape63-45" v:mid="63" v:groupcontext="shape" transform="translate(326.436,-37.25)">		<title>Sheet.63</title>		<desc>Acoustic echo path</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="81.3214" cy="296" width="162.65" height="20"></v:textrect>		<rect x="0" y="286" width="162.643" height="20" rx="4.5" ry="4.5" class="st4"></rect>		<text x="4" y="300.5" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Acoustic echo path</text>		</g>	<g id="shape64-48" v:mid="64" v:groupcontext="shape" transform="translate(162.869,-122.75)">		<title>Sheet.64</title>		<desc>Acoustic echo</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="50.8407" cy="296" width="101.69" height="20"></v:textrect>		<rect x="0" y="286" width="101.681" height="20" rx="4.5" ry="4.5" class="st4"></rect>		<text x="4" y="300.5" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Acoustic echo</text>		</g>	<g id="shape65-51" v:mid="65" v:groupcontext="shape" transform="translate(58.757,-181.25)">		<title>Sheet.65</title>		<desc>Near-end speech</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="81.3214" cy="296" width="162.65" height="20"></v:textrect>		<rect x="0" y="286" width="162.643" height="20" rx="4.5" ry="4.5" class="st4"></rect>		<text x="4" y="300.5" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Near-end speech</text>		</g>	<g id="shape66-54" v:mid="66" v:groupcontext="shape" transform="translate(68.55,-58.75)">		<title>Sheet.66</title>		<desc>Far-end speech</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="81.3214" cy="296" width="162.65" height="20"></v:textrect>		<rect x="0" y="286" width="162.643" height="20" rx="4.5" ry="4.5" class="st4"></rect>		<text x="4" y="300.5" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Far-end speech</text>		</g>	<g id="shape69-57" v:mid="69" v:groupcontext="shape" transform="translate(332.941,-75.0093) rotate(12.9148)">		<title>Sheet.69</title>		<path d="M0 306 L114.09 306" class="st3"></path>	</g>	<g id="shape15-60" v:mid="15" v:groupcontext="shape" v:layermember="0" transform="translate(393.757,-196.75)">		<title>Dynamic connector.15</title>		<path d="M0 293.5 L-125.96 293.5" class="st6"></path>	</g>	<g id="shape52-66" v:mid="52" v:groupcontext="shape" v:layermember="0" transform="translate(226.957,-196.75)">		<title>Dynamic connector.52</title>		<path d="M0 293.5 L-171.16 293.5" class="st6"></path>	</g>	<g id="shape57-71" v:mid="57" v:groupcontext="shape" transform="translate(-20.978,281.953) rotate(-101.618)">		<title>Sheet.57</title>		<path d="M0 291.5 C13.24 304.85 72.07 313.93 100.99 296.93 L101.28 296.71" class="st8"></path>	</g>	<g id="shape58-77" v:mid="58" v:groupcontext="shape" transform="translate(477.716,-94.0467) rotate(47.7367)">		<title>Sheet.58</title>		<path d="M8.68 305.85 L9.04 305.85 C48.53 304.62 118.02 296.74 162.48 302.19 C170.59 303.18 177.87 304.62 185.12 306" class="st9"></path>	</g>	<g id="shape60-83" v:mid="60" v:groupcontext="shape" transform="translate(448.503,-134.922) rotate(38.4416)">		<title>Sheet.60</title>		<path d="M8.68 306 L9.04 306 L164.06 306" class="st9"></path>	</g>	<g id="shape67-88" v:mid="67" v:groupcontext="shape" v:layermember="0" transform="translate(167.757,-169.273)">		<title>Dynamic connector.67</title>		<path d="M0 294.02 L-112.06 293.05" class="st6"></path>	</g>	<g id="shape68-93" v:mid="68" v:groupcontext="shape" v:layermember="0" transform="translate(187.343,-46.25)">		<title>Dynamic connector.68</title>		<path d="M-8.68 293.5 L-9.04 293.5 L-118.79 293.5" class="st9"></path>	</g>	<g id="shape71-98" v:mid="71" v:groupcontext="shape" transform="translate(232,-66)">		<title>Sheet.71</title>		<rect v:rectcontext="foreign" x="0" y="271.65" width="34.35" height="34.35" rx="4.5" ry="4.5" class="st4"></rect>		<image x="0" y="271.65" width="34.35" height="34.35" preserveaspectratio="none" xlink:href="data:image/png;base64,iV					BORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad					5mH3gAAADdSURBVEhL7ZQ9CgIxFIS/TbplwRXRk9l4DI/kCTyGhRYqW4iKlZVY264k+0sw+iCx2w9SZd5MkbyBgQhMNKyBO7BwL0PJgS					NQQlICD1cQQgZslTXnWoXYE4UUzaY2PGcwCw2YA6eeSXP25g1qTVBAQdIZK3gBK2DU0wQFCIbtI//Q+NCSAJHGi2RYovEiGZZovEiGJR					ovzaZ+IyigAFUbJKVuv2luqqIhKMAs2qXahfY7mn2ItmguKXRVQYSq+IQpu501Tbj9I8AwBg4986criEA2NSG2thVL93YgmDdTZFX72m					ZtiwAAAABJRU5ErkJggg=="></image>		<rect v:rectcontext="foreign" x="0" y="271.65" width="34.35" height="34.35" rx="4.5" ry="4.5" class="st4"></rect>	</g>	<g id="shape75-102" v:mid="75" v:groupcontext="shape" transform="translate(72,-83.15)">		<title>Sheet.75</title>		<path d="M0 306 L144.96 306" class="st6"></path>	</g></g>
</svg>

Noise and acoustic echo

- **Echo Canceller** – An adaptive filter that self-adjusts
coefficients to cancel out echo. Every echo has an echo path, and is
characterized by an impulse response. The echo canceller adapts to the network echo path
such that it cancels out the echo.
- **Noise Suppression** – Single mic echo canceller and noise suppressor (SMECNS) helps to suppress the surrounding stationary
noise when using devices in noisy locations.

### Enable SMECNS for recording

When recording, Fluence keeps speech quality in the
recording path by suppressing background noise captured by the
microphone.

For single-microphone recordings, only
stationary noise suppression is possible. Stationary noise is where the frequency
does not change over time, for example, road noise or white noise.

The following figure shows how gains, SMECNS, and postprocessing modules are used to remove
outside noise and echo to output clean speech.

<?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 fluence_recording.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.6389in" height="3.95139in" viewbox="0 0 910 284.5" xml:space="preserve" color-interpolation-filters="sRGB" class="st14" aria-label="../../_images/fluence_recording.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-2 .st1 { fill: #ffffff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st2 { fill: #fafafa; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-2 .st3 { fill: #fafafa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-2 .st4 { fill: #ffffff; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st5 { fill: #6280cc; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st6 { fill: #ffffff; font-family: Roboto; font-size: 1.00001em; letter-spacing: 0.0833327em }
.svg-2 .st7 { font-size: 1em }
.svg-2 .st8 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st9 { fill: #000000; font-family: Roboto; font-size: 1.16666em; letter-spacing: 0.0714292em }
.svg-2 .st10 { fill: #ffffff; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st11 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st12 { marker-end: url("#2-mrkr4-37"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st13 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.44247787610619 }
.svg-2 .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="2-mrkr4-37" class="st13" 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.6389" height="3.95139" 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="910" height="284.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="shape18-3" v:mid="18" v:groupcontext="shape" transform="translate(18.75,-18.75)">		<title>Sheet.18</title>		<rect x="0" y="37.5" width="872.5" height="247" rx="4.5" ry="4.5" class="st2"></rect>	</g>	<g id="shape17-5" v:mid="17" v:groupcontext="shape" transform="translate(37,-37.5)">		<title>Sheet.17</title>		<rect x="0" y="75.5" width="835.5" height="209" rx="4.5" ry="4.5" class="st3"></rect>	</g>	<g id="shape2-7" v:mid="2" v:groupcontext="shape" transform="translate(207.136,-56.5)">		<title>Sheet.2</title>		<rect x="0" y="148.5" width="510.864" height="136" rx="4.5" ry="4.5" class="st4"></rect>	</g>	<g id="shape3-9" v:mid="3" v:groupcontext="shape" transform="translate(222,-88.5)">		<title>Rectangle</title>		<desc>Gains</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="64" cy="248.5" width="128" height="72"></v:textrect>		<rect x="0" y="212.5" width="128" height="72" rx="4.5" ry="4.5" class="st5"></rect>		<text x="46.29" y="253" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Gains</text>		</g>	<g id="shape4-12" v:mid="4" v:groupcontext="shape" transform="translate(398,-88.5)">		<title>Rectangle.4</title>		<desc>SMECNS</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="64" cy="248.5" width="128" height="72"></v:textrect>		<rect x="0" y="212.5" width="128" height="72" rx="4.5" ry="4.5" class="st5"></rect>		<text x="37.05" y="253" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SMECNS</text>		</g>	<g id="shape5-15" v:mid="5" v:groupcontext="shape" transform="translate(574,-88.5)">		<title>Rectangle.5</title>		<desc>Postprocessing modules</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="64" cy="248.5" width="128" height="72"></v:textrect>		<rect x="0" y="212.5" width="128" height="72" rx="4.5" ry="4.5" class="st5"></rect>		<text x="15.28" y="244" class="st6" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Postprocessing <tspan x="37.4" dy="1.5em" class="st7">modules</tspan></text>		</g>	<g id="shape6-19" v:mid="6" v:groupcontext="shape" transform="translate(402.786,-207.929)">		<title>Sheet.6</title>		<desc>Qualcomm LPAI</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="76" cy="274.5" width="152" height="20"></v:textrect>		<rect x="0" y="264.5" width="152" height="20" rx="4.5" ry="4.5" class="st8"></rect>		<text x="4" y="279.75" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Qualcomm LPAI</text>		</g>	<g id="shape9-22" v:mid="9" v:groupcontext="shape" transform="translate(55,-93.5)">		<title>Sheet.9</title>		<desc>Speech + Noise + Echo input</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="46.25" cy="253.5" width="92.51" height="62"></v:textrect>		<rect x="0" y="222.5" width="92.5" height="62" rx="4.5" ry="4.5" class="st8"></rect>		<text x="4" y="237.75" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Speech + <v:lf></v:lf><tspan x="4" dy="1.5em" class="st7">Noise + <v:lf></v:lf></tspan><tspan x="4" dy="1.5em" class="st7">Echo input</tspan></text>		</g>	<g id="shape10-27" v:mid="10" v:groupcontext="shape" transform="translate(150,-108.5)">		<title>Circle</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 268.5 A16 16 0 1 1 32 268.5 A16 16 0 0 1 0 268.5 Z" class="st10"></path>	</g>	<g id="shape11-29" v:mid="11" v:groupcontext="shape" transform="translate(434.5,124) rotate(90)">		<title>Sheet.11</title>		<path d="M0 284.5 L72 284.5" class="st11"></path>	</g>	<g id="shape12-32" v:mid="12" v:groupcontext="shape" transform="translate(182,-124.5)">		<title>Sheet.12</title>		<path d="M0 284.5 L30.96 284.5" class="st12"></path>	</g>	<g id="shape13-38" v:mid="13" v:groupcontext="shape" transform="translate(350,-124.5)">		<title>Sheet.13</title>		<path d="M0 284.5 L38.96 284.5" class="st12"></path>	</g>	<g id="shape14-43" v:mid="14" v:groupcontext="shape" transform="translate(526,-124.5)">		<title>Sheet.14</title>		<path d="M0 284.5 L38.96 284.5" class="st12"></path>	</g>	<g id="shape15-48" v:mid="15" v:groupcontext="shape" transform="translate(702,-128.5)">		<title>Sheet.15</title>		<path d="M0 284.5 L43.96 284.5" class="st12"></path>	</g>	<g id="shape16-53" v:mid="16" v:groupcontext="shape" transform="translate(761.5,-98.5)">		<title>Sheet.16</title>		<desc>Clean speech output</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="46.25" cy="253.5" width="92.51" height="62"></v:textrect>		<rect x="0" y="222.5" width="92.5" height="62" rx="4.5" ry="4.5" class="st8"></rect>		<text x="4" y="237.75" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Clean <tspan x="4" dy="1.5em" class="st7">speech </tspan><tspan x="4" dy="1.5em" class="st7">output</tspan></text>		</g></g>
</svg>

SMECNS software block for recording

To enable the SMECNS in the recording path:

1. Use the `wpctl status` command to list available nodes.

wpctl status
        Copy to clipboard
2. Run `wpctl set-default` to set the source node to the handset mic.

wpctl set-default <handset mic node>
        Copy to clipboard
3. Run `pw-record` to start recording. The following example runs in verbose mode
and saves the recording to `/opt/test.wav`.

pw-record /opt/test.wav -v
        Copy to clipboard

### Enable SMECNS for VoIP

Fluence reduces noise and eliminates echo in VoIP communication. It also suppresses noise and acoustic echo on the microphone signal.

The SDK supports a PipeWire VoIP source and sink, which
you can use when developing applications.

The following figure shows the flow of input speech to output speech when gains, Fluence, and
postprocessing modules are applied for VoIP communication.

<?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 voip_call_diagram.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="10.4479in" height="6.61979in" viewbox="0 0 752.25 476.625" xml:space="preserve" color-interpolation-filters="sRGB" class="st15" aria-label="../../_images/voip_call_diagram.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-3 .st1 { fill: #ffffff; stroke: none; stroke-width: 0.25 }
.svg-3 .st2 { fill: #fafafa; stroke: #d2d7e1; stroke-width: 1.5 }
.svg-3 .st3 { fill: #ffffff; stroke: #d2d7e1; stroke-width: 2 }
.svg-3 .st4 { fill: #6280cc; stroke: none; stroke-width: 2 }
.svg-3 .st5 { fill: #ffffff; font-family: Roboto; font-size: 1.00001em }
.svg-3 .st6 { font-size: 1em }
.svg-3 .st7 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-3 .st8 { fill: none; stroke: #000000; stroke-width: 2 }
.svg-3 .st9 { marker-end: url("#3-mrkr4-45"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-3 .st10 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.44247787610619 }
.svg-3 .st11 { fill: none; stroke: none; stroke-width: 0.5 }
.svg-3 .st12 { fill: #000000; font-family: Roboto; font-size: 1.00001em }
.svg-3 .st13 { fill: none; stroke: none; stroke-width: 2 }
.svg-3 .st14 { stroke: #000000; stroke-dasharray: 14, 10; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-3 .st15 { 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="3-mrkr4-45" 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="msvThemeOrder" v:val="VT0(0):26"></v:ud>		<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>VBackground-1</title>	<v:pageproperties width="10.4479" height="6.61979" v:drawingscale="1" v:pagescale="1" v:drawingunits="19" 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="752.25" height="476.625" class="st1"></rect>	</g></g><g v:mid="0" v:index="2" v:groupcontext="foregroundPage">	<v:userdefs>		<v:ud v:nameu="msvThemeOrder" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape38-3" v:mid="38" v:groupcontext="shape" transform="translate(19.5,-19.5)">		<title>Sheet.38</title>		<rect x="0" y="39" width="713.25" height="437.625" class="st2"></rect>	</g>	<g id="shape1-5" v:mid="1" v:groupcontext="shape" transform="translate(114.9,-40.5)">		<title>Sheet.1</title>		<rect x="0" y="99.625" width="522" height="377" rx="4.5" ry="4.5" class="st3"></rect>	</g>	<g id="shape3-7" v:mid="3" v:groupcontext="shape" transform="translate(164.4,-314)">		<title>Sheet.3</title>		<desc>Gains</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.5" cy="454.125" width="99" height="45"></v:textrect>		<rect x="0" y="431.625" width="99" height="45" rx="4.5" ry="4.5" class="st4"></rect>		<text x="34.29" y="457.73" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Gains</text>		</g>	<g id="shape4-10" v:mid="4" v:groupcontext="shape" transform="translate(164.4,-237.5)">		<title>Sheet.4</title>		<desc>Gains</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.5" cy="454.125" width="99" height="45"></v:textrect>		<rect x="0" y="431.625" width="99" height="45" rx="4.5" ry="4.5" class="st4"></rect>		<text x="34.29" y="457.73" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Gains</text>		</g>	<g id="shape5-13" v:mid="5" v:groupcontext="shape" transform="translate(497.4,-269)">		<title>Sheet.5</title>		<desc>Postprocessing modules</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.5" cy="454.125" width="99" height="45"></v:textrect>		<rect x="0" y="431.625" width="99" height="45" rx="4.5" ry="4.5" class="st4"></rect>		<text x="7.78" y="450.53" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Postprocessing <tspan x="26.4" dy="1.2em" class="st6">modules</tspan></text>		</g>	<g id="shape6-17" v:mid="6" v:groupcontext="shape" transform="translate(339.9,-201.5)">		<title>Sheet.6</title>		<desc>Fluence</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.5" cy="386.625" width="99" height="180"></v:textrect>		<rect x="0" y="296.625" width="99" height="180" rx="4.5" ry="4.5" class="st4"></rect>		<text x="28.61" y="390.23" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Fluence</text>		</g>	<g id="shape7-20" v:mid="7" v:groupcontext="shape" transform="translate(155.4,-80)">		<title>Sheet.7</title>		<desc>Gains</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.5" cy="454.125" width="99" height="45"></v:textrect>		<rect x="0" y="431.625" width="99" height="45" rx="4.5" ry="4.5" class="st4"></rect>		<text x="34.29" y="457.73" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Gains</text>		</g>	<g id="shape8-23" v:mid="8" v:groupcontext="shape" transform="translate(326.4,-80)">		<title>Sheet.8</title>		<desc>Fluence</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.5" cy="454.125" width="99" height="45"></v:textrect>		<rect x="0" y="431.625" width="99" height="45" rx="4.5" ry="4.5" class="st4"></rect>		<text x="28.61" y="457.73" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Fluence</text>		</g>	<g id="shape9-26" v:mid="9" v:groupcontext="shape" transform="translate(497.4,-80)">		<title>Sheet.9</title>		<desc>Postprocessing modules</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.5" cy="454.125" width="99" height="45"></v:textrect>		<rect x="0" y="431.625" width="99" height="45" rx="4.5" ry="4.5" class="st4"></rect>		<text x="7.78" y="450.53" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Postprocessing <tspan x="26.4" dy="1.2em" class="st6">modules</tspan></text>		</g>	<g id="shape12-30" v:mid="12" v:groupcontext="shape" transform="translate(555.525,122.125) rotate(90)">		<title>Sheet.12</title>		<path d="M0 476.62 L36 476.62" class="st7"></path>	</g>	<g id="shape13-33" v:mid="13" v:groupcontext="shape" transform="translate(555.525,198.625) rotate(90)">		<title>Sheet.13</title>		<path d="M0 476.62 L36 476.62" class="st7"></path>	</g>	<g id="shape15-36" v:mid="15" v:groupcontext="shape" transform="translate(79.575,-327.5)">		<title>Sheet.15</title>		<ellipse cx="9" cy="467.625" rx="9" ry="9" class="st8"></ellipse>	</g>	<g id="shape16-38" v:mid="16" v:groupcontext="shape" transform="translate(79.425,-251)">		<title>Sheet.16</title>		<ellipse cx="9" cy="467.625" rx="9" ry="9" class="st8"></ellipse>	</g>	<g id="shape17-40" v:mid="17" v:groupcontext="shape" v:layermember="0" transform="translate(97.425,-251)">		<title>Dynamic connector</title>		<path d="M0 467.62 L57.94 467.62" class="st9"></path>	</g>	<g id="shape18-46" v:mid="18" v:groupcontext="shape" v:layermember="0" transform="translate(97.5708,-327.363)">		<title>Dynamic connector.18</title>		<path d="M0 467.76 L57.79 467.52" class="st9"></path>	</g>	<g id="shape20-51" v:mid="20" v:groupcontext="shape" v:layermember="0" transform="translate(263.4,-327.5)">		<title>Dynamic connector.20</title>		<path d="M0 467.62 L67.46 467.62" class="st9"></path>	</g>	<g id="shape21-56" v:mid="21" v:groupcontext="shape" v:layermember="0" transform="translate(263.4,-251)">		<title>Dynamic connector.21</title>		<path d="M0 467.62 L67.46 467.62" class="st9"></path>	</g>	<g id="shape22-61" v:mid="22" v:groupcontext="shape" v:layermember="0" transform="translate(155.4,-111.5)">		<title>Dynamic connector.22</title>		<path d="M0 485.62 L-49.46 485.63" class="st9"></path>	</g>	<g id="shape23-66" v:mid="23" v:groupcontext="shape" v:layermember="0" transform="translate(326.4,-93.5)">		<title>Dynamic connector.23</title>		<path d="M0 467.62 L-62.96 467.62" class="st9"></path>	</g>	<g id="shape24-71" v:mid="24" v:groupcontext="shape" v:layermember="0" transform="translate(497.4,-93.5)">		<title>Dynamic connector.24</title>		<path d="M0 467.62 L-62.96 467.62" class="st9"></path>	</g>	<g id="shape25-76" v:mid="25" v:groupcontext="shape" v:layermember="0" transform="translate(654.9,-93.5)">		<title>Dynamic connector.25</title>		<path d="M0 467.63 L-49.46 467.62" class="st9"></path>	</g>	<g id="shape26-81" v:mid="26" v:groupcontext="shape" v:layermember="0" transform="translate(596.4,-300.5)">		<title>Dynamic connector.26</title>		<path d="M0 485.62 L49.46 485.63" class="st9"></path>	</g>	<g id="shape27-86" v:mid="27" v:groupcontext="shape" v:layermember="0" transform="translate(438.9,-282.5)">		<title>Dynamic connector.27</title>		<path d="M0 467.62 L49.46 467.62" class="st9"></path>	</g>	<g id="shape31-91" v:mid="31" v:groupcontext="shape" v:layermember="0" transform="translate(123.9,-102.5)">		<title>Dynamic connector.31</title>		<path d="M9 476.62 L9 359.63" class="st7"></path>	</g>	<g id="shape32-94" v:mid="32" v:groupcontext="shape" v:layermember="0" transform="translate(132.9,-210.5)">		<title>Dynamic connector.32</title>		<path d="M0 467.62 L197.96 467.62" class="st9"></path>	</g>	<g id="shape33-99" v:mid="33" v:groupcontext="shape" transform="translate(654.9,-269)">		<title>Sheet.33</title>		<desc>Speech output</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="29.45" cy="456.175" width="58.91" height="40.9"></v:textrect>		<rect x="0" y="435.725" width="58.9" height="40.9" class="st11"></rect>		<text x="9.72" y="452.58" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Speech <v:newlinechar></v:newlinechar><tspan x="12.13" dy="1.2em" class="st6">output</tspan></text>		</g>	<g id="shape35-103" v:mid="35" v:groupcontext="shape" transform="translate(654.9,-80)">		<title>Sheet.35</title>		<desc>Speech input</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="29.45" cy="456.175" width="58.91" height="40.9"></v:textrect>		<rect x="0" y="435.725" width="58.9" height="40.9" class="st11"></rect>		<text x="9.72" y="452.58" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Speech <v:newlinechar></v:newlinechar><tspan x="16.05" dy="1.2em" class="st6">input</tspan></text>		</g>	<g id="shape36-107" v:mid="36" v:groupcontext="shape" transform="translate(38,-80)">		<title>Sheet.36</title>		<desc>Speaker</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="29.45" cy="456.175" width="58.91" height="40.9"></v:textrect>		<rect x="0" y="435.725" width="58.9" height="40.9" class="st11"></rect>		<text x="7.83" y="459.78" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Speaker</text>		</g>	<g id="shape37-110" v:mid="37" v:groupcontext="shape" transform="translate(332.075,-417.5)">		<title>Sheet.37</title>		<desc>Qualcomm LPAI</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="55.3375" cy="466.7" width="110.68" height="19.85"></v:textrect>		<rect x="0" y="456.775" width="110.675" height="19.85" class="st13"></rect>		<text x="12.06" y="470.3" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm LPAI</text>		</g>	<g id="shape39-113" v:mid="39" v:groupcontext="shape" transform="translate(526.5,-177.55)">		<title>Sheet.39</title>		<desc>Transmission path</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54.1" cy="468.65" width="108.2" height="15.95"></v:textrect>		<rect x="0" y="460.675" width="108.2" height="15.95" class="st11"></rect>		<text x="4.35" y="472.25" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Transmission path</text>		</g>	<g id="shape40-116" v:mid="40" v:groupcontext="shape" transform="translate(543.163,-147.275)">		<title>Sheet.40</title>		<desc>Receiving path</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="43.4187" cy="468.65" width="86.84" height="15.95"></v:textrect>		<rect x="0" y="460.675" width="86.8375" height="15.95" class="st11"></rect>		<text x="4.35" y="472.25" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Receiving path</text>		</g>	<g id="shape41-119" v:mid="41" v:groupcontext="shape" transform="translate(114.9,-171)">		<title>Sheet.41</title>		<path d="M0 476.62 L522 476.62" class="st14"></path>	</g></g>
</svg>

SMECNS software block for VoIP

To enable the SMECNS in the VoIP path:

| **Set record source** | pw-record /opt/record_voip.wav -v --target=voip-tx0<br>    Copy to clipboard |
| --- | --- |
| **Set playback sink** | pw-play /opt/test.wav -v --target=voip-rx0<br>    Copy to clipboard |

Note

Be sure to push a PCM file (`<FileName>.wav`) to the `/opt/` folder.

Last Published: Jan 07, 2026

[Previous Topic
Troubleshoot audio](https://docs.qualcomm.com/bundle/publicresource/80-70023-16/topics/troubleshoot.md) [Next Topic
References](https://docs.qualcomm.com/bundle/publicresource/80-70023-16/topics/references.md)