; ; uplink_echo_airpods_offload.dspg ; graphName uplink_echo_airpods_offload ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Macros ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [def MIC_INPUT_CHANNEL_COUNT 1] [def MIC_CLIP_DATA_INPUT_CHANNEL_COUNT 1] [def REF_INPUT_CHANNEL_COUNT 1] [def IO_BLOCK_SIZE 256] [def IO_SAMPLE_RATE 24000] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Constants ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [def kAUNeuralNetParam_NeuralNetModelPathBaseOverride 40000] [def kAUDSPGraphProperty_DisableGraph dsbg] [def kAUDSPGraphProperty_PropertyStripResourcePath prrp] [def kAUDSPGraphProperty_ResetGraph rstg] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; I/O ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; in MicInput in RefInput in MicClipDataInput out MicOutput ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Boxes ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; box MicChannelSelector (aufx clsl appl) 1 1 box VAD (aufx dspg appl) 1 1 box Mute gain 1 1 box VADDeadEnd dead 1 0 box RefDeadEnd dead 1 0 box MicClipDeadEnd dead 1 0 box MicInputGain dbgn 1 1 box VIDNN (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 postgain dbgn 1 1 box VoiLDNM (aufx ldnm appl) 1 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Wires ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; wire RefInput RefDeadEnd ([IO_SAMPLE_RATE] [REF_INPUT_CHANNEL_COUNT] [IO_BLOCK_SIZE]) wire MicClipDataInput MicClipDeadEnd ([IO_SAMPLE_RATE] [MIC_CLIP_DATA_INPUT_CHANNEL_COUNT] [IO_BLOCK_SIZE]) wire MicInput MicChannelSelector ([IO_SAMPLE_RATE] [MIC_INPUT_CHANNEL_COUNT] [IO_BLOCK_SIZE]) wire MicChannelSelector VAD ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire VAD VADDeadEnd ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire MicChannelSelector Mute ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) ; ======================================================================================== ; Offload AirPods DSP ; ======================================================================================== ; Input and outputs to VIDNN wire Mute MicInputGain ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire MicInputGain (VIRESjoin 0) ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire ZeroConstant (VIRESjoin 1) ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire VIRESjoin (VIDNN 0) ([IO_SAMPLE_RATE] 2 [IO_BLOCK_SIZE]) wire (VIDNN 0) VIRESSplit ([IO_SAMPLE_RATE] 2 [IO_BLOCK_SIZE]) ; Extract Noise from Voice + Noise => Voice+Noise - Voice wire (VIRESSplit 1) (NoiseExtractDiff 0) ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire (VIRESSplit 0) (NoiseExtractDiff 1) ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) ; PostEQ on Voice and Ambience signals wire (VIRESSplit 0) (VoiAmb_Join 0) ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire NoiseExtractDiff (VoiAmb_Join 1) ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire (VoiAmb_Join) PostEQ ([IO_SAMPLE_RATE] 2 [IO_BLOCK_SIZE]) wire PostEQ (VoiAmb_Split) ([IO_SAMPLE_RATE] 2 [IO_BLOCK_SIZE]) ; Scales on EQ-ed speech and EQ-ed ambience for mix wire (VoiAmb_Split 0) VoiGain ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire (VoiAmb_Split 1) AmbGain ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire VoiGain VoiLDNM ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire VoiLDNM (VoiAmbMix 0) ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire AmbGain (VoiAmbMix 1) ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire VoiAmbMix postgain ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) wire postgain MicOutput ([IO_SAMPLE_RATE] 1 [IO_BLOCK_SIZE]) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; 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 param ulvm 0 in ; vp::vx::Graph_Parameter_ID::Uplink_Near_End_Voice_Output_Mute wireGraphParam ulvm (Mute 1) wireGraphParam ulvm (postgain 1) param uspb 0 out ; vp::vx::Graph_Parameter_ID::Uplink_Speech_Probability_Boolean_Value wireGraphParam uspb (VAD uspb) param uspf 0 out ; vp::vx::Graph_Parameter_ID::Uplink_Speech_Probability_Float_Value wireGraphParam uspf (VAD uspf) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Properties ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; property tudp in ; vp::vx::Graph_Property_ID::Tuning_Directory_Path wireGraphProperty tudp (VAD [kAUDSPGraphProperty_PropertyStripResourcePath]) wireGraphProperty tudp (VIDNN [kAUNeuralNetParam_NeuralNetModelPathBaseOverride]) property uspd in ; vp::vx::Graph_Property_ID::Uplink_Speech_Probability_Disable_Graph wireGraphProperty uspd (VAD [kAUDSPGraphProperty_DisableGraph]) property uspr in ; vp::vx::Graph_Property_ID::Uplink_Speech_Probability_Reset_Graph wireGraphProperty uspr (VAD [kAUDSPGraphProperty_ResetGraph])