; ========================================================================= ; Input DSP input graph -- 3 mics, 6 speaker references ; ========================================================================= graphName "InputDSP_3mic_6refs_16KHz" ; ------------------------------------------------------------------------- ; Definitions ; ------------------------------------------------------------------------- [def procSampleRate 16000] [def procBlockSize 512] [def numBeams 12] [def numMicsRefs 9] [def numMics 3] [def numRefs 2] [def ecInBusMic 0] [def ecInBusRef 1] [def ecOutBusEcout 0] [def ecOutBusEclee 1] [def ecOutBusRefal 2] in inputMicRefBus out siriOutput ; ------------------------------------------------------------------------- ; Siri boxes and audio units ; ------------------------------------------------------------------------- ; Mic alignment workaround box micAlignmentRefSplitter split 1 [numMicsRefs] box micAlignmentDelay0 (aufx sdly appl) 1 1 box micAlignmentDelay1 (aufx sdly appl) 1 1 box micAlignmentDelay2 (aufx sdly appl) 1 1 box extMicJoiner join [numMics] 1 ; Input conditioning box extMicTrim0 gain 1 1 ; mic sensitivity trim box extMicTrim1 gain 1 1 box extMicTrim2 gain 1 1 box extMicDelay (aufx sdly appl) 1 1 ; for optimal ref alignment box extMicGain gain 1 1 box extMicBPFilter (aufx nbeq appl) 1 1 box postECGain gain 1 1 ; applied after EC box refDelay0 (aufx sdly appl) 1 1 box refDelay1 (aufx sdly appl) 1 1 box refDelay2 (aufx sdly appl) 1 1 box refDelay3 (aufx sdly appl) 1 1 box refDelay4 (aufx sdly appl) 1 1 box refDelay5 (aufx sdly appl) 1 1 box refJoiner join [numRefs] 1 box refSum sum 6 1 box speakerSum1 sum 3 1 box speakerSum2 sum 3 1 ; EC MIMO, two input buses (mic and ref), 3 output buses. box SiriECM (aufx ecmo) 2 3 ; Multi-mic processing units box ANALY_ECOUT fft 1 1 box ANALY_ECLEE fft 1 1 box MCLP (aufx drev appl) 2 2 box PMWF (aufx dnos appl) 2 2 box BF (aufx bmfd appl) 2 4 box NNSPP (aufx nnsp appl) 3 1 box SYNTH_bfOut fft 1 1 ; Multiplexing and splitting box refalDeadEnd dead 1 0 box BFDeadEnd dead 3 0 box NNSPPDeadEnd dead 1 0 box siriOutJoiner join 2 1 ; ------------------------------------------------------------------------- ; Microphones and references ; ------------------------------------------------------------------------- ; Mic alignment workaround; apply mic trim wire inputMicRefBus micAlignmentRefSplitter ([procSampleRate] [numMicsRefs] [procBlockSize]) wire (micAlignmentRefSplitter 0) micAlignmentDelay0 ([procSampleRate] 1 [procBlockSize]) wire (micAlignmentRefSplitter 1) micAlignmentDelay1 ([procSampleRate] 1 [procBlockSize]) wire (micAlignmentRefSplitter 2) micAlignmentDelay2 ([procSampleRate] 1 [procBlockSize]) wire micAlignmentDelay0 extMicTrim0 ([procSampleRate] 1 [procBlockSize]) wire micAlignmentDelay1 extMicTrim1 ([procSampleRate] 1 [procBlockSize]) wire micAlignmentDelay2 extMicTrim2 ([procSampleRate] 1 [procBlockSize]) wire extMicTrim0 (extMicJoiner 0) ([procSampleRate] 1 [procBlockSize]) wire extMicTrim1 (extMicJoiner 1) ([procSampleRate] 1 [procBlockSize]) wire extMicTrim2 (extMicJoiner 2) ([procSampleRate] 1 [procBlockSize]) ; Delay the mic a little bit to put the self-IR peak at the right location wire extMicJoiner extMicDelay ([procSampleRate] [numMics] [procBlockSize]) ; Reference delays, to reduce causal delay between mic and refs wire (micAlignmentRefSplitter 3) refDelay0 ([procSampleRate] 1 [procBlockSize]) wire (micAlignmentRefSplitter 4) refDelay1 ([procSampleRate] 1 [procBlockSize]) wire (micAlignmentRefSplitter 5) refDelay2 ([procSampleRate] 1 [procBlockSize]) wire (micAlignmentRefSplitter 6) refDelay3 ([procSampleRate] 1 [procBlockSize]) wire (micAlignmentRefSplitter 7) refDelay4 ([procSampleRate] 1 [procBlockSize]) wire (micAlignmentRefSplitter 8) refDelay5 ([procSampleRate] 1 [procBlockSize]) wire refDelay0 (refSum 0) ([procSampleRate] 1 [procBlockSize]) wire refDelay1 (refSum 1) ([procSampleRate] 1 [procBlockSize]) wire refDelay2 (refSum 2) ([procSampleRate] 1 [procBlockSize]) wire refDelay3 (refSum 3) ([procSampleRate] 1 [procBlockSize]) wire refDelay4 (refSum 4) ([procSampleRate] 1 [procBlockSize]) wire refDelay5 (refSum 5) ([procSampleRate] 1 [procBlockSize]) wire refDelay0 (speakerSum1 0) ([procSampleRate] 1 [procBlockSize]) wire refDelay2 (speakerSum1 1) ([procSampleRate] 1 [procBlockSize]) wire refDelay4 (speakerSum1 2) ([procSampleRate] 1 [procBlockSize]) wire refDelay1 (speakerSum2 0) ([procSampleRate] 1 [procBlockSize]) wire refDelay3 (speakerSum2 1) ([procSampleRate] 1 [procBlockSize]) wire refDelay5 (speakerSum2 2) ([procSampleRate] 1 [procBlockSize]) wire speakerSum1 (refJoiner 0) ([procSampleRate] 1 [procBlockSize]) wire speakerSum2 (refJoiner 1) ([procSampleRate] 1 [procBlockSize]) ; ------------------------------------------------------------------------- ; Siri DSP Graph topology ; ------------------------------------------------------------------------- ; Filter to remove bass content wire extMicDelay extMicGain ([procSampleRate] [numMics] [procBlockSize]) wire extMicGain extMicBPFilter ([procSampleRate] [numMics] [procBlockSize]) ; Echo cancellation wire extMicBPFilter (SiriECM [ecInBusMic]) ([procSampleRate] [numMics] [procBlockSize]) wire refJoiner (SiriECM [ecInBusRef]) ([procSampleRate] [numRefs] [procBlockSize]) ; Post EC gain wire (SiriECM [ecOutBusEcout]) postECGain ([procSampleRate] [numMics] [procBlockSize]) wire postECGain ANALY_ECOUT ([procSampleRate] [numMics] [procBlockSize]) wire (SiriECM [ecOutBusEclee]) ANALY_ECLEE ([procSampleRate] [numMics] [procBlockSize]) wire (SiriECM [ecOutBusRefal]) refalDeadEnd ([procSampleRate] [numRefs] [procBlockSize]) ; Multi-mic processing ; Dereverberation wire ANALY_ECOUT (MCLP 0) (freq [procSampleRate] [numMics] [procBlockSize]) wire ANALY_ECLEE (MCLP 1) (freq [procSampleRate] [numMics] [procBlockSize]) ; Inject DNN SPP mask to PMWF wire (MCLP 0) (NNSPP 0) (freq [procSampleRate] [numMics] [procBlockSize]) wire ANALY_ECLEE (NNSPP 1) (freq [procSampleRate] [numMics] [procBlockSize]) wire ANALY_ECOUT (NNSPP 2) (freq [procSampleRate] [numMics] [procBlockSize]) wireProperty (NNSPP 3699) (PMWF 3699) true ; wire DNN SPP mask wireProperty (NNSPP 36999) (PMWF 36999) true ; wire post filter mask ; Denoise wire (MCLP 0) (PMWF 0) (freq [procSampleRate] [numMics] [procBlockSize]) wire (MCLP 1) (PMWF 1) (freq [procSampleRate] [numMics] [procBlockSize]) wire (PMWF 0) (BF 0) (freq [procSampleRate] [numMics] [procBlockSize]) wire (PMWF 1) (BF 1) (freq [procSampleRate] [numMics] [procBlockSize]) ; Connect deadends wire (NNSPP 0) NNSPPDeadEnd (freq [procSampleRate] [numMics] [procBlockSize]) wire (BF 1) (BFDeadEnd 0) (freq [procSampleRate] 1 [procBlockSize]) wire (BF 2) (BFDeadEnd 1) (freq [procSampleRate] [numBeams] [procBlockSize]) wire (BF 3) (BFDeadEnd 2) (freq [procSampleRate] [numBeams] [procBlockSize]) ; Convert back to time-domain wire (BF 0) SYNTH_bfOut (freq [procSampleRate] 1 [procBlockSize]) wire SYNTH_bfOut (siriOutJoiner 0) ([procSampleRate] 1 [procBlockSize]) wire refSum (siriOutJoiner 1) ([procSampleRate] 1 [procBlockSize]) wire siriOutJoiner siriOutput ([procSampleRate] 2 [procBlockSize])