Konekäännös · Englanninkielinen alkuperäinen

Puhujaupotukset

Uute 256-dimensional L2-normalized kaiutinvektorit, joissa käytetään WeSpeaker ResNet34-LM. Nämä upotukset kuvaavat kaiuttimen ainutlaatuisia ääniominaisuuksia ja niitä voidaan käyttää tunnistamiseen, todentamiseen ja äänihakuun.

Arkkitehtuuri

WeSpeaker ResNet34-LM on syvä jäännösverkko, joka on koulutettu kaiutinten edustuksen oppimiseen.

Vaihe Yksityiskohdat
SyöteConv2d (1-32 kanavaa)
ResNet34[3, 4, 6, 3] jäännöslohkoja
Tilastojen yhdistäminen Keskihajonta + keskihajonta
EnnusteLineaarinen (5120-256)
TuotosL2-normalized 256 dimi upottaminen

Mallin koko: ~6,6M parametrit, ~25 MB levyllä.

Mel Ominaisuudet

Mallissa käytetään 80-ulotteisia mel-taajuusominaisuuksia, jotka on laskettu Hamming-ikkunalla. Lokiskaalauksessa käytetään yksinkertaista log(max(mel, 1e-10)) kaavaa ilman lisä normalisointia. Erän normalisointi sulautetaan Conv2d kerroksiin konversion aikana, jolloin vaikutustehokkuus saavutetaan.

CLI-käyttö

# Extract speaker embedding
.build/release/speech embed-speaker voice.wav

# JSON output (includes the 256-dim vector)
.build/release/speech embed-speaker voice.wav --json

# Choose inference engine
.build/release/speech embed-speaker voice.wav --engine coreml

Valinnat

Vaihtoehto Tavaran kuvaus
--enginemlx tai coreml WeSpeaker; redimnet2 nimetyn henkilöllisyyden osalta; camplusplus CosyVoice kloonaaminen
--jsonJSON-ulostulomuoto, jossa on täydellinen upotusvektori

Nimetty äänitunniste ReDimNet2-B6

Käyttää --engine redimnet2 sovittaa puhdas ääni kautta äänitykset. Se palauttaa 192-ulotteinen normalisoitu upotetaan vähintään kahden sekunnin puheen. Kiinteä kuusi sekuntia CoreML ikkuna toistaa lyhyempiä näytteitä ja keski-roiskeet pidempiä.

Erilliset upotustilat

ReDimNet2 on nimetty ääniprofiileille. Diarisointi pitää oman WeSpeaker upotukset. ReDimNet2, standalone WeSpeaker ja Community-1 centroideja ei voida verrata toisiinsa.

Käyttötapaukset

Puheenvarmistus

Vertaa kahta audio näytettä määrittää, jos ne ovat samasta kaiuttimesta. Pura kaiuttimet sekä ja laskea kosine samankaltaisuus. Korkeampi samankaltaisuuden pisteet osoittavat suurempi todennäköisyys saman kaiuttimen.

import SpeechVAD

let model = try await WeSpeakerModel.fromPretrained()

let samples1: [Float] = loadAudio("sample1.wav")
let samples2: [Float] = loadAudio("sample2.wav")
let embedding1 = model.embed(audio: samples1, sampleRate: 16000)
let embedding2 = model.embed(audio: samples2, sampleRate: 16000)

let similarity = WeSpeakerModel.cosineSimilarity(embedding1, embedding2)
print("Similarity: \(similarity)")  // > 0.7 typically same speaker

Puhujan tunnistus

Ottakaa tuntematon ääninäyte vastaan kirjautuvien kaiuttimien tietokanta.

Äänihaku

Hakemisto kokoelma äänitallenteita kaiuttimella kaiuttimen kaiuttimeen, sitten kyselyn uusi ääninäyte löytää kaikki tallenteet samasta kaiuttimesta.

Tärkeää

Kaiuttimet toimivat parhaiten vähintään 2-3 sekunnin puhtaalla puheella. Hyvin lyhyet leikkeet tai äänekkäät tallenteet saattavat tuottaa vähemmän luotettavia upotuksia. Harkitse puheen lisäämistä ensin äänekkäälle audiolle.

Mallilataukset

Malli Taustaosa KokoHuggingFace
WeSpeaker-ResNet34-LMMLX~25 Mtaufklarer/WeSpeaker-ResNet34-LM-MLX
WeSpeaker-ResNet34-LMCoreML~25 Mtaufklarer/WeSpeaker-ResNet34-LM-CoreML
ReDimNet2-B6CoreML~25 MiBaufklarer/ReDimNet2-B6-CoreML

Swift API

import SpeechVAD

let model = try await WeSpeakerModel.fromPretrained()

// Extract embedding from audio samples
let samples: [Float] = loadAudio("voice.wav")
let embedding = model.embed(audio: samples, sampleRate: 16000)
print("Embedding dimensions: \(embedding.count)")  // 256