--- license: apache-2.0 library_name: pytorch pipeline_tag: audio-to-audio tags: - audio-visual - target-speaker-extraction - speech-separation - streaming datasets: - JusperLee/RealSSA-Real - JusperLee/RealSSA-Sim ---

Falcon logo

# Falcon Causal audio-visual target speaker extraction model from the paper: a single-pass multi-scale separator trained with an encoder-space speaker contrastive loss (0.5 M trainable parameters). Code, training and evaluation: . Paper: *Efficient Streaming Audio-Visual Target Speaker Extraction for Real-World Acoustic Scenes* (NeurIPS 2026), Wendi Sang\*, Kai Li\*, Yifan Li, Jianqiang Huang, Xiaolin Hu (\*equal contribution). | File | Config in the code repo | Audio network | Total params | |---|---|---|---| | `falcon.pt` | `configs/Falcon.yml` | `FalconSpeakerContrastive` | 11.72 M | Total parameters include the frozen 11.2 M-parameter FRCNN lip-reading encoder. The file holds only `state_dict` (`audio_model.*`, `video_model.*`), the architecture name and the training epoch; load it with `torch.load(..., weights_only=True)`. ## Usage ```bash git clone https://github.com/JusperLee/Falcon.git cd Falcon/studio && pip install -r requirements.txt ``` ```python import numpy as np from falcon_runtime import FalconRuntime model = FalconRuntime.from_pretrained("JusperLee/Falcon") # downloads falcon.pt on first use audio = np.zeros(32000, dtype=np.float32) # 2 s mono 16 kHz mixture mouth = np.zeros((50, 96, 96), dtype=np.uint8) # 25 fps grayscale mouth crops of the target speaker target = model.infer(audio, mouth) # (32000,) target speech ``` Whole clips: `python infer_file.py --audio mix.wav --mouth mouth.npy --out target.wav --model JusperLee/Falcon`. Live separation in the browser and in Zoom / Tencent Meeting: see `studio/README.md` in the code repo. Input: mono 16 kHz audio and synchronized 25 fps grayscale 96×96 mouth crops (center-cropped to 88×88 and normalized inside the runtime). ## License Apache License 2.0, the same as the code repository.