Desert Ant Labs

Who

Chi ha detto cosaBeta

Etichetta i parlanti di una registrazione e vedi esattamente quando ogni persona inizia e smette di parlare, interamente sul dispositivo.

Segna chi ha detto cosa in audio e video.

Who è pensato per podcast, interviste, chiamate e riunioni, e gestisce registrazioni di qualsiasi durata. Un'intervista di 50 minuti richiede 3 s su un MacBook Pro, interamente sul dispositivo. Usa i timestamp per indicare chi parla in una trascrizione, saltare al prossimo intervento di un ospite o tagliare a ogni cambio di parlante.

Who numera i parlanti nell'ordine in cui prendono la parola per la prima volta e, quando due persone parlano insieme, le segna entrambe. Who elabora ogni segmento di cinque minuti in un solo passaggio e abbina le voci tra un segmento e l'altro.

Sulle registrazioni delle riunioni AMI, Who etichetta i parlanti con un tasso di errore del 12,6%, più basso del 13,1% di pyannote su una GPU da server e del 19,4% di FluidAudio sullo stesso Mac. Who è anche due volte più veloce di FluidAudio.

Un'ora di audio in 4 s.

Who gira a 950x rispetto al tempo reale su un MacBook Pro con M5 Pro, tramite l'SDK. Sulle riunioni AMI, il tasso di errore di diarizzazione di Who è del 12,6%, contro il 13,1% di pyannote e il 19,4% di FluidAudio.

950x
Più veloce del tempo reale
MacBook Pro (M5 Pro), float16, tramite l'SDK
12,6%
Tasso di errore di diarizzazione
riunioni AMI, 16 registrazioni, più basso è meglio; pyannote 13,1%
2,1x
Più veloce di FluidAudio
un porting di pyannote su Core ML, stesso Mac
81 MB
Download
float16; 42 MB con pesi a 8 bit

Set di test completi su un solo MacBook Pro (M5 Pro), una registrazione alla volta. I tempi di Who includono il caricamento del modello. Su AMI FluidAudio impiega 73 s secondo la propria misurazione e 79 s contando i caricamenti dei suoi modelli.

Set di testTempo di WhoWho, fattore di tempo realeFluidAudio, fattore di tempo reale
AMI test, 544 minutes34 s950x445x
VoxConverse test, 43.5 hours165 s948x426x

Tasso di errore di diarizzazione su registrazioni intere, più basso è meglio. Le stesse registrazioni e lo stesso strumento di valutazione in ogni riga

ModelloAMIVoxConverse, fino a 4 parlantiNOTSOFAR-1, fino a 4 parlantiEarnings-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 è in testa sui due set di riunioni, AMI e NOTSOFAR-1, e resta dietro a pyannote sugli altri tre: le conference call di Earnings-21 arrivano a 20 parlanti, e su VoxConverse con nove o più parlanti il tasso di errore di Who è del 24,7%. pyannote è stato eseguito su GPU da server; Who e FluidAudio sul Neural Engine dell'M5 Pro. I punteggi di pyannote e FluidAudio sono nostre misurazioni e non sono sulla scheda del modello.

Casi d'uso

Segna chi ha detto cosa in audio e video.

Indica chi parla in una trascrizione

Abbina Who a Voz e ogni riga della trascrizione mostra chi l'ha detta. Chi legge segue la conversazione invece di un unico blocco di testo anonimo.

Salta al prossimo intervento di un ospite

Filtra un'intervista o una riunione di due ore per un solo parlante e vai dritto ai suoi interventi invece di scorrere la timeline. La registrazione resta sul dispositivo.

Taglia a ogni cambio di parlante

Cambia inquadratura in un'intervista con due camere o in un video podcast quando cambia chi parla. Ogni turno ha un tempo di inizio e uno di fine, quindi ogni cambio di parlante è un punto di taglio.

Escludi le risate

Togli le risate del pubblico e la voce che ha detto una sola battuta dall'altra parte della stanza. Who esclude ogni parlante sotto la percentuale della registrazione che imposti e rinumera gli altri.

Cosa fa il modello

  • Who etichetta fino a quattro parlanti in ogni segmento di cinque minuti, e di più sull'intera registrazione, abbinando le voci tra i segmenti.
  • Ogni turno è un tratto continuo in cui parla una sola persona, con il numero del parlante e i tempi di inizio e di fine in secondi, arrotondati ai 10 ms. I turni di parlanti diversi si sovrappongono quando le persone parlano una sopra l'altra.
  • Nell'SDK Who numera i parlanti partendo da zero, nell'ordine in cui prendono la parola per la prima volta, e non identifica nessuno per nome.
  • Due grafi Core ML sul Neural Engine leggono ogni segmento: un encoder e un grafo di query. Un terzo grafo ricava un'impronta vocale di ogni parlante dai momenti in cui parla da solo, e Who abbina tutti i parlanti dell'intera registrazione in un'unica operazione.
  • Chi parla da solo per meno di un secondo non ha un'impronta vocale propria e viene unito al parlante più vicino nel tempo. Un secondo di risate dentro il turno di un altro viene attribuito a quel parlante.
  • 950x rispetto al tempo reale su un MacBook Pro con M5 Pro, tramite l'SDK: 544 minuti di riunioni AMI in 34 s. La build a 8 bit gira a 953x.
  • Memoria tramite l'SDK: 275 MB con il modello caricato, e picchi di 336 MB su una registrazione di 8 minuti, di 437 MB su una di 34 minuti e di 927 MB su una di 2,65 ore.
  • Il download Core ML è di 81 MB in float16 o di 42 MB con pesi a 8 bit, e le due build hanno lo stesso tasso di errore sulle riunioni AMI, il 12,6%. La build a 8 bit non fa risparmiare memoria, perché il Neural Engine decomprime i pesi al caricamento.
  • Who è disponibile anche come build LiteRT da 49 MB, che l'SDK esegue su Android, Linux e Windows, e come build ONNX da 99 MB, che gli SDK non eseguono ancora. Solo su CPU, la build LiteRT elabora 544 minuti di audio in 87 s sull'M5 Pro e in 191 s su un server AMD EPYC a 24 core, con misure prese fuori dall'SDK.
  • keepingSpeakers(minimumShare:) scarta ogni parlante sotto una certa percentuale della registrazione e rinumera gli altri, così risate, applausi e jingle spariscono. Al 5%, il filtro ha eliminato risate e pubblico nei podcast che abbiamo provato. Per un notiziario con molti interventi brevi, tieni la percentuale bassa o disattiva il filtro.
  • Esegui la diarizzazione di un file audio da URL o da percorso, oppure passa campioni mono a qualsiasi frequenza di campionamento. L'SDK si occupa della conversione.
  • L'SDK scarica i pesi da Hugging Face al primo utilizzo e li tiene in cache. download(progress:) li recupera in anticipo, e Who(directory:) funziona offline da una cartella che gestisci tu.

Per iniziare

Aggiungi chi ha detto cosa alla tua app iOS or macOS or Android in poche righe di codice. Documentazione di Who.

iOS, macOS
Installazione
// 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")
Esempio - 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
}
Costruisci con un prompt
Add Who from Desert Ant Labs to this Swift project (iOS, macOS).

What it does: etichettatura dei parlanti on-device per audio e 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
Installazione
// build.gradle.kts (Maven Central)
implementation("ai.desertant:who:4.0.0")
Esempio - 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()
Costruisci con un prompt
Add Who from Desert Ant Labs to this Kotlin project (Android).

What it does: etichettatura dei parlanti on-device per audio e 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.

Specifiche

Velocità
950x rispetto al tempo reale su un MacBook Pro (M5 Pro), un'intervista di 50 minuti in 3 s
Accuratezza
Tasso di errore di diarizzazione del 12,6% sulle riunioni AMI; 8,4% su VoxConverse con al massimo 4 parlanti
Parlanti
Fino a 4 in ogni segmento di cinque minuti, di più su una registrazione di qualsiasi durata
Output
Turni per parlante con tempi di inizio e di fine in secondi, arrotondati ai 10 ms; il parlato sovrapposto viene mantenuto
Dimensione sul dispositivo
81 MB in Core ML (float16, predefinito); 42 MB con pesi a 8 bit
Memoria
275 MB con il modello caricato; picco di 927 MB su una registrazione di 2,65 ore
Piattaforme
iOS 18+, macOS 15+, tvOS 18+, visionOS 2+ (Core ML); Android, Linux e Windows (LiteRT, su CPU)

Who dà il meglio con l'audio ripreso da vicino, come podcast, interviste e chiamate da remoto in cui ogni persona ha il proprio microfono. Lontano dal microfono Who perde più parlato: il 19-21% nelle conversazioni di gruppo registrate dall'altra parte della stanza, contro l'8% nelle riunioni con microfoni a cuffia.

Il parlato che Who perde di più è quello sovrapposto, quando due persone parlano insieme. Su VoxConverse il tasso di errore è dell'8% con uno o due parlanti, del 17% da cinque a otto e del 25% da nove in su.

Nelle conference call di Earnings-21, dove intervengono brevemente fino a 20 parlanti, Who attribuisce il 16% del parlato al parlante sbagliato. Who indica i parlanti con un numero, non con un nome, e non trascrive: per una trascrizione divisa per parlante, abbina Who a Voz.

Su Android, Linux e Windows Who gira sulla CPU, da tre a sette volte più lentamente che sul Neural Engine. Who non gira ancora nel browser né in Node.

FAQ

Cos'è Who?

Etichetta i parlanti di una registrazione e vedi esattamente quando ogni persona inizia e smette di parlare, interamente sul dispositivo.

Who funziona sul dispositivo?

Sì. Who funziona sul dispositivo, senza chiamate a un server, quindi i dati restano con l'utente.

Quali piattaforme supporta Who?

Who è distribuito come SDK nativo on-device per Swift, Kotlin.

Quanto costa Who?

Ogni modello è gratuito fino a 100k dispositivi attivi mensili. L'inferenza è illimitata. Contattaci per licenze personalizzate.

Quanto è preciso o veloce Who?

Who gira a 950x rispetto al tempo reale su un MacBook Pro con M5 Pro, tramite l'SDK. Sulle riunioni AMI, il tasso di errore di diarizzazione di Who è del 12,6%, contro il 13,1% di pyannote e il 19,4% di FluidAudio.

Risorse