Social-science data is full of people. Open survey answers mention names and employers, interviews carry voices that identify the speaker, and photo and video answers show faces. Before such data can be shared, reused or analysed with external models, the people in it need protecting, while the data stays useful for research.
In ENTAILab Measure 2 (CIRCLET) this is handled by a set of DUUI components, one per modality. Because they are ordinary DUUI components, a project can place anonymization at the start of any pipeline, before transcription, topic modeling or a vision-language model ever sees the raw data.
| Modality | Component | Approach |
|---|---|---|
| Text | duui-anonymize | PII detection and redaction with token-classification models |
| Speech | duui-speaker-anonymization | Transcribe, replace the speaker identity, re-synthesize the voice |
| Images & video | duui-face_anon | Diffusion-based face anonymization, or blur, blackout and pixelation |
Text: duui-anonymize
duui-anonymize is a FastAPI service that receives text from DUUI through a Lua communication script, detects spans of personal information, and writes them back as annotations with character offsets and a category. It also adds a second view of the document holding the redacted text, so later pipeline steps can work on the redacted version while the original stays in its own view.
No single model is best at everything, so the component offers three, selected per pipeline:
| Model | Labels | Languages | Use it for |
|---|---|---|---|
openai/privacy-filter (default) | 8 broad categories | English | Keeping as much of the original wording as possible |
OpenMed/privacy-filter-nemotron | 55 fine-grained types | English | Broad identifier removal, e.g. first vs. last names |
bardsai/eu-pii-anonimization-multilang | 36 GDPR categories | 24 EU languages | Multilingual data and GDPR Art. 9 special categories |
Spans can be replaced with placeholders such as [private_person] or removed entirely. The service can analyse a selected window of the document instead of the whole text, ships CPU and CUDA images, and is covered by unit tests plus Java integration tests on German and English samples.
How the three models compare
The models were evaluated on TAB, SPIA and RAT-Bench; the full results are in Choosing a Text Anonymization Model. In short:
- OpenMed Nemotron removes the most: TAB token recall of 70.2% and the lowest explicit re-identification rate on RAT-Bench (49.8%), at the cost of changing more text (BLEU 0.893).
- OpenAI Privacy Filter preserves the wording best (BLEU 0.970, precision 91.6%) but misses more identifiers (recall 33.1%).
- BardsAI protects best against attribute inference on SPIA, but barely against explicit profile linkage (90.3% re-identification, versus 93.2% without anonymization).
The hardest case is identification from context. On RAT-Bench's implicit level, re-identification fell only from 36.3% to 32.0–35.3%, and no model solved it. This is the limit of span-level redaction, and the reason the model choice is left to each project rather than fixed.
Speech: duui-speaker-anonymization
A voice is biometric data: removing names from a transcript is not enough if the recording itself is shared. The component builds on the IMS speaker-anonymization pipeline. It transcribes the audio with Whisper large-v3, replaces the speaker embedding with an artificial one generated by a GAN, and re-synthesizes the content with IMS-Toucan in the new voice. What was said is kept; who said it is not. Supported languages are English, German, French, Italian, Spanish, Portuguese, Dutch, Polish and Russian.
Faces in images and video: duui-face_anon
The component builds on Face Anonymization Made Simple. A diffusion model (Stable Diffusion 2.1 with CLIP ViT-L/14 conditioning) generates a different face that keeps the original pose and expression, for one face or many. The degree of anonymization is adjustable, and a fixed seed makes results reproducible. Where generation is not wanted, faces can instead be blurred, blacked out or pixelated, at scopes from half the face to the whole head.
For video, the component samples frames either uniformly (every Nth frame) or adaptively, choosing representative frames per time segment, so long recordings remain affordable to process.
Why components, not a single tool
Projects supported by ENTAILab Measure 2 (CIRCLET) mix modalities differently: one has only open text answers, another has video interviews. Separate components let each project compose only what it needs, in a pipeline that is documented and repeatable.
Anonymize first
A typical pipeline anonymizes first, then transcribes or analyses. Every later step, including vision-language models, then works only on protected data.
Contributors and code
duui-anonymize was developed by Ali Abusaleh. duui-speaker-anonymization was developed by Tim Wolf, and duui-face_anon by Tim Wolf and Coco Sittardt, both under the supervision of Ali Abusaleh and Giuseppe Abrami. All three components are available in texttechnologylab/duui-uima.

