Maskinoversettelse · Engelsk original

Talerrepresentasjoner

Uttrekk 256-dimensjonale L2-normalized høyttalervektorer ved bruk av WeSpeaker ResNet34-LM. Disse inneleggerne fanger de unike vokalegenskaperne til en høyttaler og kan brukes til identifikasjon, verifisering og talesøk.

Arkitektur

WeSpeaker ResNet34-LM er et dypt gjenværende nettverk utdannet for høyttalerrepresentasjon læring.

Stage Detaljer
InngangConv2d (1 til 32 kanaler)
ResNet34[3, 4, 6, 3] restblokker
Statistics Pooling Gjennomsnittlig + standardavvik over tid
ProjectionLinear (5120 til 256)
UtgangL2-normalized 256-dim-innbygging

Modellstørrelse: ~6.6M parametre, ~25 MB på disken.

Mel funksjoner

Modellen bruker 80-dimensjonal mel-frekvens funksjoner beregnet med et Hamming-vindu. Log skalering bruker en enkel log(max(mel, 1e-10)) formel uten ekstra normalisering. Batch normalisering er fusjonert til Conv2d lag ved konverteringstid for inferens effektivitet.

CLI bruk

# 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

Alternativer

Mulighet Beskrivelse
--enginemlx eller coreml for WeSpeaker; redimnet2 for navngitt identitet; camplusplus for CosyVoice kloning
--jsonJSON-utgangsformat med full innebygge vektor

Oppkalt stemmeidentitet med ReDimNet2-B6

Bruk --engine redimnet2 for å matche en ren stemme på tvers av opptak. Det returnerer en 192-dimensjonal normalisert innbygging fra minst to sekunders tale. Den faste seks sekunders CoreML -vinduet gjentar kortere prøver og senter-krap lengre.

Separate innbyggingsrom

ReDimNet2 er for navngitte stemmeprofiler. Diarisering holder sine egne WeSpeaker emboliger. ReDimNet2, standalone WeSpeaker og Community-1 centroider kan ikke sammenlignes med hverandre.

Bruk tilfeller

Høyttaler Verifisering

Sammenlign to lydprøver for å bestemme om de er fra samme høyttaler. Ekstrakt innlegg fra både og beregne cosinuslikheten. En høyere likhetsscore indikerer en høyere sannsynlighet for den samme høyttaleren.

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øyttaleridentifikasjon

Match en ukjent lydprøve mot en database med innspillinger av høyttalere. Den registrerte høyttaleren med den høyeste cosinuslikhet er den forutsagte identiteten.

Stemmesøk

Indekser en samling lydopptak ved høyttalerinnbygging, og spør deretter med en ny lydprøve for å finne alle opptak fra samme høyttaler.

Viktig

Høyttalerinnbygginger fungerer best med ren tale på minst 2-3 sekunder. Svært korte klipp eller støyende opptak kan gi mindre pålitelige innbygginger. Vurder å bruke speech forbedring først for støyende lyd.

Modellnedlastninger

ModellMotor Stø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