Desert Ant Labs

Who

Vem sa vadBeta

Märk talarna i en inspelning och se exakt när varje person börjar och slutar prata, helt på enheten.

Märk vem som sa vad i ljud och video.

Who är gjord för poddar, intervjuer, samtal och möten och klarar inspelningar av valfri längd. En 50 minuter lång intervju tar 3 s på en MacBook Pro, helt på enheten. Använd tidsstämplarna för att märka ett transkript per talare, hoppa till nästa gång en gäst pratar eller klippa vid varje talarbyte.

Who numrerar talarna i den ordning de först talar, och när två personer pratar samtidigt märker Who båda. Who bearbetar varje femminutersdel i en genomgång och matchar röster mellan delarna.

På mötesinspelningarna i AMI märker Who talarna med en felfrekvens på 12,6%, lägre än 13,1% för pyannote på en server-GPU och 19,4% för FluidAudio på samma Mac. Who är dessutom dubbelt så snabb som FluidAudio.

En timme ljud på 4 s.

Who når 950x realtid på en MacBook Pro med M5 Pro, via SDK:n. På AMI-möten har Who en diariseringsfelfrekvens på 12,6%, mot 13,1% för pyannote och 19,4% för FluidAudio.

950x
Snabbare än realtid
MacBook Pro (M5 Pro), float16, via SDK:n
12,6%
Diariseringsfelfrekvens
AMI-möten, 16 inspelningar, lägre är bättre; pyannote 13,1%
2,1x
Snabbare än FluidAudio
en Core ML-port av pyannote, samma Mac
81MB
Nedladdning
float16; 42 MB med 8-bitarsvikter

Hela testuppsättningar på en MacBook Pro (M5 Pro), en inspelning i taget. Tiderna för Who inkluderar laddningen av modellen. FluidAudio tar 73 s på AMI enligt sin egen tidtagning och 79 s inklusive modelladdningarna.

TestuppsättningTid (Who)Realtid (Who)Realtid (FluidAudio)
AMI test, 544 minutes34s950x445x
VoxConverse test, 43.5 hours165s948x426x

Diariseringsfelfrekvens på hela inspelningar, lägre är bättre. Samma inspelningar och samma poängsättning på varje rad

ModellAMIVoxConverse, upp till 4 talareNOTSOFAR-1, upp till 4 talareEarnings-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%

Who leder på de två mötesuppsättningarna, AMI och NOTSOFAR-1, och ligger efter pyannote på de övriga tre: samtalen i Earnings-21 har upp till 20 talare, och Who får 24,7% på VoxConverse med nio eller fler talare. pyannote kördes på server-GPU:er; Who och FluidAudio kördes på Neural Engine i M5 Pro. Resultaten för pyannote och FluidAudio kommer från våra egna körningar och finns inte på modellkortet.

Användningsfall

Märk vem som sa vad i ljud och video.

Märk ett transkript per talare

Kombinera Who med Voz så visar varje rad i transkriptet vem som sa den. Läsaren följer samtalet i stället för ett enda anonymt textblock.

Hoppa till nästa gång en gäst pratar

Filtrera fram en talare i en två timmar lång intervju eller ett möte och gå direkt till personens talturer i stället för att skrubba tidslinjen. Inspelningen stannar på enheten.

Klipp vid varje talarbyte

Växla kameravinkel där talaren byts, i en intervju med två kameror eller en videopodd. Varje taltur har en start- och en sluttid, så varje talarbyte är ett ställe att klippa på.

Rensa bort skratten

Ta bort publikens skratt och rösten som sa en enda replik från andra sidan rummet. Who utesluter varje talare som står för mindre än den andel av inspelningen du anger och numrerar om resten.

Vad modellen gör

  • Who märker upp till fyra talare i varje femminutersdel, och fler i en hel inspelning, genom att matcha röster mellan delarna.
  • Varje taltur är ett sammanhängande stycke tal från en talare, med ett talarnummer och start- och sluttider i sekunder, avrundade till närmaste 10 ms. Talturer från olika talare överlappar när folk pratar i munnen på varandra.
  • I SDK:n numrerar Who talarna från noll, i den ordning de först talar, och identifierar ingen med namn.
  • Två Core ML-grafer på Neural Engine läser varje del: en encoder och en query-graf. En tredje graf gör ett röstavtryck av varje talare från de stunder då talaren pratar ensam, och Who matchar alla talare i hela inspelningen på en gång.
  • En talare som pratar ensam i mindre än en sekund får inget eget röstavtryck och slås ihop med den talare som ligger närmast i tid. En sekunds skratt inne i någon annans taltur tillskrivs den talaren.
  • 950x realtid på en MacBook Pro med M5 Pro, via SDK:n: 544 minuter AMI-möten på 34 s. 8-bitarsbygget når 953x.
  • Minne via SDK:n: 275 MB med modellen laddad, och en topp på 336 MB för en inspelning på 8 minuter, 437 MB för 34 minuter och 927 MB för 2,65 timmar.
  • Core ML-nedladdningen är 81 MB i float16 eller 42 MB med 8-bitarsvikter, och båda byggena har samma felfrekvens på AMI-mötena, 12,6%. 8-bitarsbygget sparar inget minne, eftersom Neural Engine packar upp vikterna när modellen laddas.
  • Who finns också som ett LiteRT-bygge på 49 MB, som SDK:n kör på Android, Linux och Windows, och ett ONNX-bygge på 99 MB, som SDK:erna inte kör ännu. Enbart på CPU kör LiteRT-bygget 544 minuter ljud på 87 s på M5 Pro och på 191 s på en AMD EPYC-server med 24 kärnor, uppmätt utanför SDK:n.
  • keepingSpeakers(minimumShare:) tar bort varje talare under en viss andel av inspelningen och numrerar om resten, så att skratt, applåder och jinglar försvinner. Vid 5% rensade filtret bort skratten och publiken i poddarna vi testade. För ett nyhetsprogram med många talare som bara hörs kort, håll andelen låg eller stäng av filtret.
  • Diarisera en ljudfil via URL eller sökväg, eller skicka in sampel i mono med valfri samplingsfrekvens. SDK:n omsamplar åt dig.
  • SDK:n laddar ned vikterna från Hugging Face vid första användningen och cachar dem. download(progress:) hämtar dem i förväg, och Who(directory:) körs offline från en mapp du själv hanterar.

Kom igång

Lägg till vem sa vad i din iOS or macOS or Android-app med några rader kod. Who-dokumentation.

iOS, macOS
Installera
// 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")
Exempel - 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
}
Bygg med en prompt
Add Who from Desert Ant Labs to this Swift project (iOS, macOS).

What it does: Talarmärkning på enheten för ljud och 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
Installera
// build.gradle.kts (Maven Central)
implementation("ai.desertant:who:4.0.0")
Exempel - 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()
Bygg med en prompt
Add Who from Desert Ant Labs to this Kotlin project (Android).

What it does: Talarmärkning på enheten för ljud och 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.

Specifikationer

Hastighet
950x realtid på en MacBook Pro (M5 Pro), en 50 minuter lång intervju på 3 s
Noggrannhet
12,6% diariseringsfelfrekvens på AMI-möten; 8,4% på VoxConverse med upp till 4 talare
Talare
Upp till 4 i varje femminutersdel, fler i en inspelning av valfri längd
Utdata
Talturer per talare med start- och sluttider i sekunder, avrundade till närmaste 10 ms; överlappande tal behålls
Storlek på enheten
81 MB Core ML (float16, standard); 42 MB med 8-bitarsvikter
Minne
275 MB med modellen laddad; topp på 927 MB för en inspelning på 2,65 timmar
Plattformar
iOS 18+, macOS 15+, tvOS 18+, visionOS 2+ (Core ML); Android, Linux och Windows (LiteRT, på CPU)

Who fungerar bäst på tätt inmikat ljud, som poddar, intervjuer och distanssamtal där varje person har en egen mikrofon. Långt från mikrofonen missar Who mer tal: 19-21% i gruppsamtal som spelats in från andra sidan rummet, mot 8% i möten med headset.

Who missar mest tal när två personer pratar samtidigt. På VoxConverse är felfrekvensen 8% med en eller två talare, 17% med fem till åtta och 25% med nio eller fler.

I samtalen i Earnings-21, med upp till 20 talare som gör korta inlägg, lägger Who 16% av talet på fel talare. Who märker talare med nummer, inte med namn, och transkriberar inte; vill du ha ett transkript märkt per talare kombinerar du Who med Voz.

På Android, Linux och Windows körs Who på CPU, tre till sju gånger långsammare än på Neural Engine. Who körs ännu inte i webbläsaren eller i Node.

Vanliga frågor

Vad är Who?

Märk talarna i en inspelning och se exakt när varje person börjar och slutar prata, helt på enheten.

Körs Who lokalt på enheten?

Ja. Who körs på enheten, utan något serveranrop, så att data stannar hos användaren.

Vilka plattformar stöder Who?

Who levereras som en nativ SDK på enheten för Swift, Kotlin.

Vad kostar Who?

Varje modell är gratis upp till 100k månadsaktiva enheter. Inferensen är obegränsad. Kontakta oss för anpassade licenser.

Hur träffsäker eller snabb är Who?

Who når 950x realtid på en MacBook Pro med M5 Pro, via SDK:n. På AMI-möten har Who en diariseringsfelfrekvens på 12,6%, mot 13,1% för pyannote och 19,4% för FluidAudio.

Resurser