Create x-vector.html
This commit is contained in:
94
Examples/x-vector.html
Normal file
94
Examples/x-vector.html
Normal file
@@ -0,0 +1,94 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<script src="https://cdn.jsdelivr.net/gh/msqr1/Vosklet@1.2.1/Examples/Vosklet.js" async defer></script>
|
||||
<script>
|
||||
async function start() {
|
||||
console.log("Starting speech recognition...");
|
||||
|
||||
let ctx = new AudioContext({sinkId: {type: "none"}});
|
||||
|
||||
let micNode = ctx.createMediaStreamSource(await navigator.mediaDevices.getUserMedia({
|
||||
video: false,
|
||||
audio: {
|
||||
echoCancellation: true,
|
||||
noiseSuppression: true,
|
||||
channelCount: 1
|
||||
},
|
||||
}));
|
||||
|
||||
console.log("Microphone connected.");
|
||||
|
||||
let module;
|
||||
try {
|
||||
module = await loadVosklet();
|
||||
console.log("Vosklet module loaded.");
|
||||
} catch (error) {
|
||||
console.error("Error loading Vosklet module:", error);
|
||||
return;
|
||||
}
|
||||
|
||||
let model;
|
||||
try {
|
||||
model = await module.createModel(
|
||||
"https://ccoreilly.github.io/vosk-browser/models/vosk-model-small-en-us-0.15.tar.gz",
|
||||
"English",
|
||||
"vosk-model-small-en-us-0.15"
|
||||
);
|
||||
console.log("Speech recognition model loaded.");
|
||||
} catch (error) {
|
||||
console.error("Error loading speech recognition model:", error);
|
||||
return;
|
||||
}
|
||||
|
||||
let spkModel;
|
||||
try {
|
||||
spkModel = await module.createSpkModel(
|
||||
"https://arbdevml.github.io/x-vector/vosk-model-spk-0.4.tar.gz",
|
||||
"vosk-model-spk-0.4",
|
||||
"vosk-model-spk-0.4"
|
||||
);
|
||||
console.log("Speaker identification model loaded.");
|
||||
} catch (error) {
|
||||
console.error("Error loading speaker identification model:", error);
|
||||
return;
|
||||
}
|
||||
|
||||
let recognizer;
|
||||
try {
|
||||
recognizer = await module.createRecognizerWithSpkModel(model, ctx.sampleRate, spkModel);
|
||||
console.log("Recognizer with speaker model created.");
|
||||
} catch (error) {
|
||||
console.error("Error creating recognizer with speaker model:", error);
|
||||
return;
|
||||
}
|
||||
|
||||
recognizer.addEventListener("result", ev => {
|
||||
const result = JSON.parse(ev.detail);
|
||||
console.log("typeof ev.detail:", typeof ev.detail);
|
||||
console.log("typeof result:", typeof result);
|
||||
console.log("Speech recognized:", result);
|
||||
console.log("spk:", result.spk);
|
||||
console.log("ev:", ev);
|
||||
});
|
||||
recognizer.addEventListener("partialResult", ev => {
|
||||
console.log("Partial result:", ev.detail);
|
||||
});
|
||||
let transferer;
|
||||
try {
|
||||
transferer = await module.createTransferer(ctx, 128 * 150);
|
||||
console.log("Transferer created.");
|
||||
} catch (error) {
|
||||
console.error("Error creating transferer:", error);
|
||||
return;
|
||||
}
|
||||
transferer.port.onmessage = ev => recognizer.acceptWaveform(ev.data);
|
||||
micNode.connect(transferer);
|
||||
console.log("Microphone data connected to Vosklet.");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<button onclick="start()">Start</button>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user