Solution 0x51341970906a1fd3227c4224d8c075bd722f9c06dcc276acceeb52c37efa2774
All checks were successful
elffuss/validation Validation passed
All checks were successful
elffuss/validation Validation passed
T2T-Item: 0x51341970906a1fd3227c4224d8c075bd722f9c06dcc276acceeb52c37efa2774 T2T-Issue: 0x98f19ce946d4ef692a1354cdda7c9c22c3deb8168f1eb224b4d56b790e2ca305
This commit is contained in:
13
diarize.mjs
13
diarize.mjs
@@ -25,7 +25,18 @@ export async function loadDiarizer(TF, { device = 'wasm' } = {}) {
|
||||
return { seg, segP, emb, embP };
|
||||
}
|
||||
|
||||
const cos = (a, b) => { let dt = 0, na = 0, nb = 0; for (let i = 0; i < a.length; i++) { dt += a[i]*b[i]; na += a[i]*a[i]; nb += b[i]*b[i]; } return dt / (Math.sqrt(na)*Math.sqrt(nb) || 1); };
|
||||
const cos = (a, b) => {
|
||||
if (a.length !== b.length) {
|
||||
throw new Error('cosine: vectors must have the same length');
|
||||
}
|
||||
let dt = 0, na = 0, nb = 0;
|
||||
for (let i = 0; i < a.length; i++) {
|
||||
dt += a[i]*b[i];
|
||||
na += a[i]*a[i];
|
||||
nb += b[i]*b[i];
|
||||
}
|
||||
return dt / (Math.sqrt(na)*Math.sqrt(nb) || 1);
|
||||
};
|
||||
const rms = (a) => { let s = 0; for (const v of a) s += v*v; return Math.sqrt(s/a.length); };
|
||||
|
||||
async function embed(D, slice) {
|
||||
|
||||
30
tests/acceptance/1/CRITERIA.json
Normal file
30
tests/acceptance/1/CRITERIA.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"schema": "elffuss-t2t/criteria@2",
|
||||
"issue": 1,
|
||||
"criteria": [
|
||||
{
|
||||
"index": 1,
|
||||
"tests": [
|
||||
"tests/acceptance/1/criteria.test.js::criterion 1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"tests": [
|
||||
"tests/acceptance/1/criteria.test.js::criterion 2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"tests": [
|
||||
"tests/acceptance/1/criteria.test.js::criterion 3"
|
||||
]
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"tests": [
|
||||
"tests/acceptance/1/criteria.test.js::criterion 4"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
25
tests/acceptance/1/criteria.test.js
Normal file
25
tests/acceptance/1/criteria.test.js
Normal file
@@ -0,0 +1,25 @@
|
||||
import { test } from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import * as mod from '../../../diarize.mjs' // the code under test: call it as mod.<name>(...)
|
||||
const source = readFileSync(new URL('../../../diarize.mjs', import.meta.url), 'utf8') // the text of diarize.mjs, for a criterion about how the file is written
|
||||
|
||||
test('criterion 1', () => {
|
||||
// `cosine([1, 2, 3], [1, 2])` throws an Error whose message starts with `cosine:`.
|
||||
assert.throws(() => mod.cosine([1, 2, 3], [1, 2]), /cosine:/)
|
||||
})
|
||||
|
||||
test('criterion 2', () => {
|
||||
// `cosine([1, 0], [1, 0, 5])` throws an Error whose message starts with `cosine:`.
|
||||
assert.throws(() => mod.cosine([1, 0], [1, 0, 5]), /cosine:/)
|
||||
})
|
||||
|
||||
test('criterion 3', () => {
|
||||
// `cosine([1, 0], [1, 0])` returns 1.
|
||||
assert.deepEqual(mod.cosine([1, 0], [1, 0]), 1)
|
||||
})
|
||||
|
||||
test('criterion 4', () => {
|
||||
// `cosine([0, 0], [0, 0])` returns 0.
|
||||
assert.deepEqual(mod.cosine([0, 0], [0, 0]), 0)
|
||||
})
|
||||
Reference in New Issue
Block a user