; airpods host-side uplink processing graph graphName uplink_echo_airpods_offload ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Macros ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; [sampleRate] and [blockSize] macro definitions are absent because currently they're ; loaded via AUDSPGraph which relies on using substitutions only when these ; macros aren't defined and compiling the graph throws an exception [def DNNSampleRate 24000] [def DNNBlockSize 480] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; I/O ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; in in out out ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Boxes ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; box MicInputGain dbgn 1 1 box InputSRC src 1 1 box VIRES (aufx nnet appl) 1 1 box ZeroConstant constant 0 1 box VIRESjoin join 2 1 box VIRESSplit split 1 2 box NoiseExtractDiff adif 2 1 box AmbGain dbgn 1 1 ; for scaling ambience box VoiGain gain 1 1 ; for scaling voice box PostEQ (aufx tmst appl) 1 1 ; for applying eq to Voice and Ambience box VoiAmb_Join join 2 1 box VoiAmb_Split split 1 2 box VoiAmbMix asum 2 1 box OutputSRC src 1 1 box postgain dbgn 1 1 box VoiLDNM (aufx ldnm appl) 1 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Wires ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Input and outputs to VIRES wire in MicInputGain ([sampleRate] 1 [blockSize]) wire MicInputGain InputSRC ([sampleRate] 1 [blockSize]) wire InputSRC (VIRESjoin 0) ([DNNSampleRate] 1 [DNNBlockSize]) wire ZeroConstant (VIRESjoin 1) ([DNNSampleRate] 1 [DNNBlockSize]) wire VIRESjoin (VIRES 0) ([DNNSampleRate] 2 [DNNBlockSize]) wire (VIRES 0) VIRESSplit ([DNNSampleRate] 2 [DNNBlockSize]) ; Extract Noise from Voice + Noise => Voice+Noise - Voice wire (VIRESSplit 1) (NoiseExtractDiff 0) ([DNNSampleRate] 1 [DNNBlockSize]) wire (VIRESSplit 0) (NoiseExtractDiff 1) ([DNNSampleRate] 1 [DNNBlockSize]) ; PostEQ on Voice and Ambience signals wire (VIRESSplit 0) (VoiAmb_Join 0) ([DNNSampleRate] 1 [DNNBlockSize]) wire NoiseExtractDiff (VoiAmb_Join 1) ([DNNSampleRate] 1 [DNNBlockSize]) wire (VoiAmb_Join) PostEQ ([DNNSampleRate] 2 [DNNBlockSize]) wire PostEQ (VoiAmb_Split) ([DNNSampleRate] 2 [DNNBlockSize]) ; scales on eqd speech and eqd ambience for mix wire (VoiAmb_Split 0) VoiGain ([DNNSampleRate] 1 [DNNBlockSize]) wire (VoiAmb_Split 1) AmbGain ([DNNSampleRate] 1 [DNNBlockSize]) wire VoiGain VoiLDNM ([DNNSampleRate] 1 [DNNBlockSize]) wire VoiLDNM (VoiAmbMix 0) ([DNNSampleRate] 1 [DNNBlockSize]) wire AmbGain (VoiAmbMix 1) ([DNNSampleRate] 1 [DNNBlockSize]) wire VoiAmbMix postgain ([DNNSampleRate] 1 [DNNBlockSize]) wire postgain OutputSRC ([DNNSampleRate] 1 [DNNBlockSize]) wire OutputSRC out ([sampleRate] 1 [blockSize]) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Parameters ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; param spem 1.00 in ; Default speech mix (should be a constant) wireGraphParam spem (VoiGain 0 0 0) ; VI input scaling for ambience extraction ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Properties ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; property tudp in wireGraphProperty tudp (VIRES 40000)