Maskinoversættelse · Engelsk original

Talerrepræsentationer

Uddrag 256- dimensional L2-normalized højttaler vektorer ved hjælp af WeSpeaker ResNet34-LMDisse indlejringer indfanger en højttalers unikke stemmeegenskaber og kan bruges til identifikation, verifikation og stemmesøgning.

Arkitektur

WeSpeaker ResNet34-LM er et dybt restnetværk, der er uddannet til at lære at repræsentere højttalere.

FaseDetaljer
InputConv2d (1 til 32-kanaler)
ResNet34[3, 4, 6, 3] tilbageværende blokke
Stats PoolingMiddelværdi + standardafvigelse over tid
FremskrivningLineær (5120 til 256)
OutputL2-normalized 256- dim indlejring

Model størrelse: ~ 6.6M parametre, ~ 25 MB på disk.

Mel funktioner

Modellen bruger 80- dimensionelle mel- frekvens funktioner beregnet med et Hamming vindue. Log skalering bruger en simpel log(max(mel, 1e-10)) formel uden yderligere normalisering. Batch normalisering er smeltet ind i Conv2d lag ved konvertering tid for inferens effektivitet.

CLI-brug

# 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

Indstillinger

ValgmulighedVarebeskrivelse
--enginemlx eller coreml for WeSpeaker redimnet2 for navngivet identitet camplusplus for CosyVoice kloning
--jsonJSON output format med fuld indlejring vektor

Navngivet talekendskab med ReDimNet2-B6

Anvendelse --engine redimnet2 for at matche en ren stemme på tværs af optagelser. Det returnerer en 192- dimensional normaliseret indlejring fra mindst to seksogsekunders tale. Det faste seksogt. CoreML vindue gentager kortere prøver og center- afgrøder længere dem.

Separate indlejringsrum

ReDimNet2 er for navngivne stemmeprofiler. Diarisering holder sin egen WeSpeaker indlejringer. ReDimNet2, standalone WeSpeaker og Community-1 centroider kan ikke sammenlignes med hinanden.

Brug cases

Formålskontrol

Sammenlign to lydprøver for at afgøre, om de er fra samme højttaler. Uddrag indlejringer fra begge og beregne cosinens lighed. En højere lighed score indikerer en højere sandsynlighed for samme højttalerne.

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

Højttaleridentifikation

Match en ukendt audio prøve mod en database af tilmeldte højttaler indlejringer. Den indskrevne højttaler med den højeste cosinlighed er den forudsagte identitet.

Stemmesøgning

Indeks en samling af lydoptagelser ved højttaler indlejring, derefter forespørgsel med en ny lydprøve til at finde alle optagelser fra den samme højttaler.

Vigtigt

Højttalerindlejringer fungerer bedst med ren tale af mindst 2- 3 sekunder. Meget korte klip eller støjende optagelser kan producere mindre pålidelige indlejringer. Overvej at anvende tale- forbedring Først for larmende lyd.

Model Downloads

ModelBackendStørrelseHuggingFace
WeSpeaker-ResNet34-LMMLX~ 25 MBaufklarer / WeSpeaker-ResNet34-LM-MLX
WeSpeaker-ResNet34-LMCoreML~ 25 MBaufklarer / 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