Views
No views yet
npm i @xenova/transformersXenova/wavlm-base-plus-sv.1import { AutoProcessor, AutoModel, read_audio, cos_sim } from '@xenova/transformers';
2
3// Load processor and model
4const processor = await AutoProcessor.from_pretrained('Xenova/wavlm-base-plus-sv');
5const model = await AutoModel.from_pretrained('Xenova/wavlm-base-plus-sv');
6
7// Helper function to compute speaker embedding from audio URL
8async function compute_embedding(url) {
9 const audio = await read_audio(url, 16000);
10 const inputs = await processor(audio);
11 const { embeddings } = await model(inputs);
12 return embeddings.data;
13}
14
15// Generate speaker embeddings
16const BASE_URL = 'https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/sv_speaker';
17const speaker_1_1 = await compute_embedding(`${BASE_URL}-1_1.wav`);
18const speaker_1_2 = await compute_embedding(`${BASE_URL}-1_2.wav`);
19const speaker_2_1 = await compute_embedding(`${BASE_URL}-2_1.wav`);
20const speaker_2_2 = await compute_embedding(`${BASE_URL}-2_2.wav`);
21
22// Compute similarity scores
23console.log(cos_sim(speaker_1_1, speaker_1_2)); // 0.959439158881247 (Both are speaker 1)
24console.log(cos_sim(speaker_1_2, speaker_2_1)); // 0.618130172602329 (Different speakers)
25console.log(cos_sim(speaker_2_1, speaker_2_2)); // 0.962999814169370 (Both are speaker 2)onnx).