Desert Ant Labs

Who

Quem disse o quêBeta

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.

950x
Mais rápido que o tempo real
MacBook Pro (M5 Pro), float16, através do SDK
12,6%
Taxa de erro de diarização
reuniões do AMI, 16 gravações, quanto mais baixo melhor; pyannote 13,1%
2,1x
Mais rápido que o FluidAudio
uma adaptação do pyannote para Core ML, no mesmo Mac
81 MB
Transferência
float16; 42 MB com pesos de 8 bits

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 testeTempo do WhoTempo real (Who)Tempo real (FluidAudio)
AMI test, 544 minutes34 s950x445x
VoxConverse test, 43.5 hours165 s948x426x

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

ModeloAMIVoxConverse, até 4 oradoresNOTSOFAR-1, até 4 oradoresEarnings-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%

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, e Who(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.

iOS, macOS
Instalação
// 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")
Exemplo - 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
}
Crie com um prompt
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.
Android
Instalação
// build.gradle.kts (Maven Central)
implementation("ai.desertant:who:4.0.0")
Exemplo - 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()
Crie com um prompt
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.

Recursos