Desert Ant Labs

Who

Wie zei watBèta

Label de sprekers in een opname en zie precies wanneer iedereen begint en stopt met praten, volledig op het apparaat.

Label wie wat zei in audio en video.

Who is gemaakt voor podcasts, interviews, calls en vergaderingen, en verwerkt opnames van elke lengte. Een interview van 50 minuten is op een MacBook Pro in 3s klaar, volledig op het apparaat. Gebruik de tijdstempels om een transcript per spreker te labelen, naar het volgende moment te springen waarop een gast praat, of te knippen bij elke wisseling van spreker.

Who nummert de sprekers in de volgorde waarin ze voor het eerst spreken, en als twee mensen tegelijk praten, markeert Who ze allebei. Who verwerkt elk fragment van vijf minuten in één keer en koppelt stemmen over de fragmenten heen.

Op vergaderopnames uit AMI labelt Who sprekers met een foutpercentage van 12,6%, lager dan de 13,1% van pyannote op een server-GPU en de 19,4% van FluidAudio op dezelfde Mac. Who is ook twee keer zo snel als FluidAudio.

Een uur audio in 4s.

Who haalt 950x realtime op een MacBook Pro met de M5 Pro, via de SDK. Op AMI-vergaderingen is het diarisatiefoutpercentage van Who 12,6%, tegenover 13,1% voor pyannote en 19,4% voor FluidAudio.

950x
Sneller dan realtime
MacBook Pro (M5 Pro), float16, via de SDK
12,6%
Diarisatiefoutpercentage
AMI-vergaderingen, 16 opnames, lager is beter; pyannote 13,1%
2,1x
Sneller dan FluidAudio
een Core ML-port van pyannote, dezelfde Mac
81MB
Download
float16; 42 MB met 8-bit-gewichten

Volledige testsets op één MacBook Pro (M5 Pro), één opname tegelijk. De tijden van Who zijn inclusief het laden van het model. Op AMI doet FluidAudio er volgens zijn eigen meting 73s over, en 79s inclusief het laden van zijn modellen.

TestsetTijd WhoRealtime-factor WhoRealtime-factor FluidAudio
AMI test, 544 minutes34s950x445x
VoxConverse test, 43.5 hours165s948x426x

Diarisatiefoutpercentage op volledige opnames, lager is beter. Dezelfde opnames en dezelfde scoringstool in elke rij

ModelAMIVoxConverse, maximaal 4 sprekersNOTSOFAR-1, maximaal 4 sprekersEarnings-21DiPCo
Who, on the Neural Engine12,6%8,4%16,2%27,7%41,1%
pyannote community-1, PyTorch13,1%7,3%18,7%7,3%33,4%
FluidAudio, Core ML19,4%9,6%32,7%12,0%42,7%

Op de twee vergadersets, AMI en NOTSOFAR-1, scoort Who het best; op de andere drie blijft Who achter bij pyannote: de Earnings-21-calls hebben tot 20 sprekers, en op VoxConverse met negen of meer sprekers komt Who uit op 24,7%. pyannote draaide op server-GPU's; Who en FluidAudio draaiden op de Neural Engine van de M5 Pro. De scores van pyannote en FluidAudio zijn onze eigen runs en staan niet op de model card.

Toepassingen

Label wie wat zei in audio en video.

Een transcript per spreker labelen

Combineer Who met Voz, dan staat bij elke regel van het transcript wie er aan het woord is. Een lezer volgt het gesprek in plaats van één anoniem blok tekst.

Naar de volgende beurt van een gast springen

Filter een interview of vergadering van twee uur op één spreker en ga meteen naar de beurten van die persoon, in plaats van door de tijdlijn te scrubben. De opname blijft op het apparaat.

Knippen bij elke wisseling van spreker

Schakel naar een andere camerahoek in een interview met twee camera's of een videopodcast, zodra er iemand anders aan het woord is. Elke beurt heeft een begin- en eindtijd, dus elke sprekerswissel is een knippunt.

Het gelach weglaten

Schrap het gelach van het publiek en de stem die vanaf de andere kant van de zaal één zin zei. Who laat elke spreker weg die onder het aandeel van de opname blijft dat je instelt, en nummert de rest opnieuw.

Wat het model doet

  • Who labelt maximaal vier sprekers per fragment van vijf minuten, en meer in een hele opname, door stemmen tussen fragmenten te koppelen.
  • Elke beurt is één aaneengesloten stuk spraak van één spreker, met een sprekernummer en begin- en eindtijden in seconden, tot op 10 ms nauwkeurig. Beurten van verschillende sprekers overlappen als mensen door elkaar heen praten.
  • In de SDK nummert Who sprekers vanaf nul, in de volgorde waarin ze voor het eerst spreken, en identificeert Who niemand bij naam.
  • Twee Core ML-graphs op de Neural Engine verwerken elk fragment: een encoder en een query-graph. Een derde graph maakt van elke spreker een stemafdruk uit de momenten waarop die alleen spreekt, en Who koppelt alle sprekers in één keer over de hele opname.
  • Een spreker die minder dan een seconde alleen aan het woord is, krijgt geen eigen stemafdruk en wordt samengevoegd met de spreker die qua tijd het dichtstbij is. Een seconde gelach midden in de beurt van iemand anders telt mee voor die spreker.
  • 950x realtime op een MacBook Pro met de M5 Pro, via de SDK: 544 minuten AMI-vergaderingen in 34s. De 8-bit-build haalt 953x.
  • Geheugen via de SDK: 275 MB met het model geladen, en een piek van 336 MB bij een opname van 8 minuten, 437 MB bij 34 minuten en 927 MB bij 2,65 uur.
  • De Core ML-download is 81 MB als float16 of 42 MB met 8-bit-gewichten, en beide builds hebben hetzelfde foutpercentage op AMI-vergaderingen: 12,6%. De 8-bit-build bespaart geen geheugen, omdat de Neural Engine de gewichten bij het laden decomprimeert.
  • Who is er ook als LiteRT-build van 49 MB, waarmee de SDK op Android, Linux en Windows draait, en als ONNX-build van 99 MB, die de SDK's nog niet ondersteunen. Alleen op de CPU verwerkt de LiteRT-build 544 minuten audio in 87s op de M5 Pro en in 191s op een AMD EPYC-server met 24 cores, gemeten buiten de SDK.
  • keepingSpeakers(minimumShare:) laat elke spreker weg die onder een bepaald aandeel van de opname blijft en nummert de rest opnieuw, zodat gelach, applaus en jingles verdwijnen. Bij 5% haalde het filter het gelach en het publiek weg uit de podcasts die we hebben getest. Bij een nieuwsprogramma met veel sprekers die maar kort aan het woord zijn, houd je het aandeel laag of zet je het filter uit.
  • Pas diarisatie toe op een audiobestand via een URL of pad, of geef monosamples door met een willekeurige samplerate. De SDK zet de samplerate voor je om.
  • Bij het eerste gebruik downloadt de SDK de gewichten van Hugging Face en bewaart ze in de cache. download(progress:) haalt ze vooraf op, en Who(directory:) draait offline vanuit een map die je zelf beheert.

Aan de slag

Voeg wie zei wat toe aan je iOS or macOS or Android-app in een paar regels code. Who docs.

iOS, macOS
Installeren
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core.git", from: "4.0.0")
// target dependency
.product(name: "Who", package: "desert-ant-core")
Voorbeeld - Swift
import Who

let who = Who()                       // downloads on first use
let result = try await who.diarize(contentsOf: url)

result.speakerCount                   // 3
for turn in result.turns {
    print(turn.speaker, turn.start, turn.end)   // 0 12.4 15.9
}
Bouwen met een prompt
Add Who from Desert Ant Labs to this Swift project (iOS, macOS).

What it does: on-device sprekerlabeling voor audio en video.

SDK:

Swift (iOS, macOS)
Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core.git", from: "4.0.0")
// target dependency
.product(name: "Who", package: "desert-ant-core")

Reference:
- Model page: https://desertant.com/models/who/
- Full catalog and other models: https://desertant.com/llms.txt

Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
Android
Installeren
// build.gradle.kts (Maven Central)
implementation("ai.desertant:who:4.0.0")
Voorbeeld - Kotlin
import ai.desertant.who.Who

val who = Who(context)                       // downloads on first use
val result = who.diarize(samples, 16_000.0)

result.speakerCount                          // 3
for (turn in result.turns) {
    println("${turn.speaker} ${turn.start} ${turn.end}")   // 0 12.4 15.9
}
who.close()
Bouwen met een prompt
Add Who from Desert Ant Labs to this Kotlin project (Android).

What it does: on-device sprekerlabeling voor audio en video.

SDK:

Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme
// build.gradle.kts (Maven Central)
implementation("ai.desertant:who:4.0.0")

Reference:
- Model page: https://desertant.com/models/who/
- Full catalog and other models: https://desertant.com/llms.txt

Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.

Specs

Snelheid
950x realtime op een MacBook Pro (M5 Pro), een interview van 50 minuten in 3s
Nauwkeurigheid
Diarisatiefoutpercentage van 12,6% op AMI-vergaderingen; 8,4% op VoxConverse met maximaal 4 sprekers
Sprekers
Maximaal 4 per fragment van vijf minuten, meer in een opname van elke lengte
Output
Beurten per spreker met begin- en eindtijden in seconden, tot op 10 ms nauwkeurig; overlappende spraak blijft behouden
Grootte op het apparaat
81 MB Core ML (float16, standaard); 42 MB met 8-bit-gewichten
Geheugen
275 MB met het model geladen; piek van 927 MB bij een opname van 2,65 uur
Platforms
iOS 18+, macOS 15+, tvOS 18+, visionOS 2+ (Core ML); Android, Linux en Windows (LiteRT, op de CPU)

Who werkt het best op audio met de microfoon dicht bij de spreker, zoals podcasts, interviews en online calls waarbij iedereen een eigen microfoon heeft. Ver van de microfoon mist Who meer spraak: 19 tot 21% in groepsgesprekken die van de andere kant van de ruimte zijn opgenomen, tegenover 8% in vergaderingen met headsets.

Who mist de meeste spraak als twee mensen tegelijk praten. Op VoxConverse is het foutpercentage 8% bij één of twee sprekers, 17% bij vijf tot acht en 25% bij negen of meer.

Bij de Earnings-21-calls, met maximaal 20 sprekers die korte opmerkingen maken, wijst Who 16% van de spraak aan de verkeerde spreker toe. Who geeft sprekers een nummer, geen naam, en transcribeert niet; combineer Who met Voz voor een transcript met sprekerlabels.

Op Android, Linux en Windows draait Who op de CPU, drie tot zeven keer zo langzaam als op de Neural Engine. Who draait nog niet in de browser of in Node.

FAQ

Wat is Who?

Label de sprekers in een opname en zie precies wanneer iedereen begint en stopt met praten, volledig op het apparaat.

Draait Who op het apparaat?

Ja. Who draait op het apparaat, zonder serveraanroep, dus de data blijft bij de gebruiker.

Welke platforms ondersteunt Who?

Who wordt geleverd als een native on-device SDK voor Swift, Kotlin.

Hoeveel kost Who?

Elk model is gratis voor maximaal 100k maandelijks actieve apparaten. Inference is onbeperkt. Neem contact op voor aangepaste licenties.

Hoe nauwkeurig of snel is Who?

Who haalt 950x realtime op een MacBook Pro met de M5 Pro, via de SDK. Op AMI-vergaderingen is het diarisatiefoutpercentage van Who 12,6%, tegenover 13,1% voor pyannote en 19,4% voor FluidAudio.

Bronnen