Who
Etiquete os oradores de uma gravação e veja exatamente quando cada pessoa começa e deixa de falar, inteiramente no dispositivo.

Marque quem disse o quê em áudio e vídeo.
O Who foi feito para podcasts, entrevistas, chamadas e reuniões, e lida com gravações de qualquer duração. Uma entrevista de 50 minutos leva 3 s num MacBook Pro, inteiramente no dispositivo. Use as marcas de tempo para etiquetar uma transcrição por orador, saltar para a próxima intervenção de um convidado ou cortar a cada mudança de orador.
O Who numera os oradores por ordem da primeira intervenção e, quando duas pessoas falam ao mesmo tempo, marca ambas. O Who processa cada segmento de cinco minutos numa só passagem e faz corresponder as vozes entre segmentos.
Nas gravações de reuniões do AMI, o Who etiqueta os oradores com uma taxa de erro de 12,6%, abaixo dos 13,1% do pyannote numa GPU de servidor e dos 19,4% do FluidAudio no mesmo Mac. O Who também corre duas vezes mais depressa do que o FluidAudio.
Uma hora de áudio em 4 s.
O Who corre a 950x o tempo real num MacBook Pro com M5 Pro, através do SDK. Nas reuniões do AMI, a taxa de erro de diarização do Who é de 12,6%, contra 13,1% do pyannote e 19,4% do FluidAudio.
Conjuntos de teste completos num único MacBook Pro (M5 Pro), uma gravação de cada vez. Os tempos do Who incluem o carregamento do modelo. No AMI, o FluidAudio demora 73 s segundo a sua própria medição e 79 s incluindo o carregamento dos seus modelos.
| Conjunto de teste | Tempo do Who | Tempo real (Who) | Tempo real (FluidAudio) |
|---|---|---|---|
| AMI test, 544 minutes | 34 s | 950x | 445x |
| VoxConverse test, 43.5 hours | 165 s | 948x | 426x |
Taxa de erro de diarização em gravações completas, quanto mais baixo melhor. As mesmas gravações e o mesmo sistema de pontuação para todos os modelos
| Modelo | AMI | VoxConverse, até 4 oradores | NOTSOFAR-1, até 4 oradores | Earnings-21 | DiPCo |
|---|---|---|---|---|---|
| Who, on the Neural Engine | 12,6% | 8,4% | 16,2% | 27,7% | 41,1% |
| pyannote community-1, PyTorch | 13,1% | 7,3% | 18,7% | 7,3% | 33,4% |
| FluidAudio, Core ML | 19,4% | 9,6% | 32,7% | 12,0% | 42,7% |
O Who lidera nos dois conjuntos de reuniões, AMI e NOTSOFAR-1, e fica atrás do pyannote nos outros três: as teleconferências do Earnings-21 chegam a 20 oradores, e o Who regista 24,7% no VoxConverse com nove ou mais oradores. O pyannote correu em GPUs de servidor; o Who e o FluidAudio correram no Neural Engine do M5 Pro. Os resultados do pyannote e do FluidAudio são execuções nossas e não constam do model card.
Casos de uso
Marque quem disse o quê em áudio e vídeo.
Etiquete a transcrição por orador
Combine o Who com o Voz e cada linha da transcrição mostra quem a disse. Quem lê acompanha a conversa em vez de um bloco de texto anónimo.
Salte para a próxima intervenção de um convidado
Filtre uma entrevista ou reunião de duas horas por um só orador e vá diretamente às intervenções dessa pessoa em vez de percorrer a linha de tempo. A gravação fica no dispositivo.
Corte a cada mudança de orador
Troque de plano numa entrevista filmada com duas câmaras ou num podcast em vídeo sempre que outra pessoa toma a palavra. Cada intervenção tem um tempo de início e um de fim, por isso cada mudança de orador é um ponto de corte.
Deixe os risos de fora
Elimine os risos do público e a voz que disse uma única frase do outro lado da sala. O Who deixa de fora todos os oradores cuja parte na gravação fique abaixo do limite que definir e renumera os restantes.
O que o modelo faz
- O Who etiqueta até quatro oradores em cada segmento de cinco minutos, e mais ao longo de uma gravação inteira, ao fazer corresponder as vozes entre segmentos.
- Cada intervenção é um troço contínuo de fala de um orador, com o número do orador e os tempos de início e fim em segundos, arredondados aos 10 ms. As intervenções de oradores diferentes sobrepõem-se quando as pessoas falam umas por cima das outras.
- No SDK, o Who numera os oradores a partir de zero, por ordem da primeira intervenção, e não identifica ninguém pelo nome.
- Dois grafos Core ML no Neural Engine leem cada segmento: um encoder e um grafo de queries. Um terceiro grafo cria uma impressão vocal de cada orador a partir dos momentos em que fala sozinho, e o Who faz corresponder todos os oradores na gravação inteira de uma só vez.
- Um orador com menos de um segundo de fala a solo não tem impressão vocal própria e junta-se ao orador mais próximo no tempo. Um segundo de riso no meio da intervenção de outra pessoa fica atribuído a esse orador.
- 950x o tempo real num MacBook Pro com M5 Pro, através do SDK: 544 minutos de reuniões do AMI em 34 s. A build de 8 bits corre a 953x.
- Memória através do SDK: 275 MB com o modelo carregado e um pico de 336 MB numa gravação de 8 minutos, 437 MB numa de 34 minutos e 927 MB numa de 2,65 horas.
- A transferência Core ML tem 81 MB em float16 ou 42 MB com pesos de 8 bits, e as duas builds têm a mesma taxa de erro nas reuniões do AMI: 12,6%. A build de 8 bits não poupa memória, porque o Neural Engine descomprime os pesos ao carregar.
- O Who também está disponível numa build LiteRT de 49 MB, que o SDK corre no Android, no Linux e no Windows, e numa build ONNX de 99 MB, que os SDKs ainda não executam. Apenas na CPU, a build LiteRT processa 544 minutos de áudio em 87 s no M5 Pro e em 191 s num servidor AMD EPYC de 24 núcleos, com medições feitas fora do SDK.
keepingSpeakers(minimumShare:)remove todos os oradores cuja parte na gravação fique abaixo de uma percentagem mínima e renumera os restantes, por isso os risos, os aplausos e os jingles ficam de fora. A 5%, o filtro eliminou os risos e o público nos podcasts que testámos. Num noticiário com muitos oradores que falam pouco, mantenha a percentagem baixa ou desative o filtro.- Faça a diarização de um ficheiro de áudio a partir de um URL ou de um caminho, ou passe amostras mono a qualquer taxa de amostragem. O SDK faz a conversão por si.
- O SDK transfere os pesos do Hugging Face na primeira utilização e guarda-os em cache.
download(progress:)descarrega-os antecipadamente, eWho(directory:)corre offline a partir de uma pasta gerida por si.
Primeiros passos
Adicione quem disse o quê ao seu app iOS or macOS or Android em poucas linhas de código. Docs do Who.
// 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")
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
}
Add Who from Desert Ant Labs to this Swift project (iOS, macOS). What it does: etiquetagem de oradores no dispositivo para áudio e vídeo. 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.
// build.gradle.kts (Maven Central)
implementation("ai.desertant:who:4.0.0")
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()
Add Who from Desert Ant Labs to this Kotlin project (Android).
What it does: etiquetagem de oradores no dispositivo para áudio e vídeo.
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.
Especificações
- Velocidade
- 950x o tempo real num MacBook Pro (M5 Pro), uma entrevista de 50 minutos em 3 s
- Exatidão
- Taxa de erro de diarização de 12,6% nas reuniões do AMI; 8,4% no VoxConverse com até 4 oradores
- Oradores
- Até 4 em cada segmento de cinco minutos, mais ao longo de uma gravação de qualquer duração
- Saída
- Intervenções por orador com tempos de início e fim em segundos, arredondados aos 10 ms; a fala sobreposta é mantida
- Tamanho no dispositivo
- 81 MB em Core ML (float16, por predefinição); 42 MB com pesos de 8 bits
- Memória
- 275 MB com o modelo carregado; pico de 927 MB numa gravação de 2,65 horas
- Plataformas
- iOS 18+, macOS 15+, tvOS 18+, visionOS 2+ (Core ML); Android, Linux e Windows (LiteRT, na CPU)
O Who funciona melhor com áudio captado de perto, como podcasts, entrevistas e chamadas remotas em que cada pessoa tem o seu próprio microfone. Longe do microfone, o Who deixa escapar mais fala: 19-21% em conversas de grupo gravadas do outro lado da sala, contra 8% em reuniões com headset.
É quando duas vozes se sobrepõem que o Who deixa escapar mais fala. No VoxConverse, a taxa de erro é de 8% com um ou dois oradores, 17% com cinco a oito e 25% com nove ou mais.
Nas teleconferências do Earnings-21, com até 20 oradores a fazer intervenções curtas, o Who atribui 16% da fala ao orador errado. O Who etiqueta os oradores com um número, não com um nome, e não transcreve; para uma transcrição etiquetada por orador, combine o Who com o Voz.
No Android, no Linux e no Windows, o Who corre na CPU, três a sete vezes mais devagar do que no Neural Engine. O Who ainda não funciona no navegador nem no Node.
FAQ
O que é o Who?
Etiquete os oradores de uma gravação e veja exatamente quando cada pessoa começa e deixa de falar, inteiramente no dispositivo.
O Who é executado no dispositivo?
Sim. O Who é executado no dispositivo, sem qualquer chamada a servidores, por isso os dados ficam com o utilizador.
Que plataformas suporta o Who?
O Who é distribuído como um SDK nativo no dispositivo para Swift, Kotlin.
Quanto custa o Who?
Cada modelo é gratuito para até 100 mil dispositivos ativos mensais. A inferência é ilimitada. Contacte-nos para licenças personalizadas.
Qual é a precisão ou a rapidez do Who?
O Who corre a 950x o tempo real num MacBook Pro com M5 Pro, através do SDK. Nas reuniões do AMI, a taxa de erro de diarização do Who é de 12,6%, contra 13,1% do pyannote e 19,4% do FluidAudio.