UNPKG

echogarden

Version:

An easy-to-use speech toolset. Includes tools for synthesis, recognition, alignment, speech translation, language detection, source separation and more.

52 lines 1.59 kB
export function murmurHash3(bytes, seed = 0) { // https://github.com/bryc/code/blob/master/jshash/hashes/murmurhash3.js const p1 = 3432918353; const p2 = 461845907; const p3 = 2246822507; const p4 = 3266489909; const byteCount = bytes.length; const intIterationMaxIndex = byteCount & -4; let k = 0; let hash = seed | 0; let i = 0; for (; i < intIterationMaxIndex; i += 4) { k = bytes[i + 3] << 24 | bytes[i + 2] << 16 | bytes[i + 1] << 8 | bytes[i]; k = Math.imul(k, p1); k = k << 15 | k >>> 17; hash ^= Math.imul(k, p2); hash = hash << 13 | hash >>> 19; hash = (Math.imul(hash, 5) + 3864292196) | 0; // |0 = prevent float } k = 0; switch (bytes.length & 3) { case 3: { k ^= bytes[i + 2] << 16; } case 2: { k ^= bytes[i + 1] << 8; } case 1: { k ^= bytes[i]; k = Math.imul(k, p1); k = k << 15 | k >>> 17; hash ^= Math.imul(k, p2); } } hash ^= byteCount; hash ^= hash >>> 16; hash = Math.imul(hash, p3); hash ^= hash >>> 13; hash = Math.imul(hash, p4); hash ^= hash >>> 16; return hash >>> 0; } export function convertToSingleInt32Hash(hash) { const bytes = new Uint8Array(4); const ints = new Int32Array(bytes.buffer); return (int32Val) => { ints[0] = int32Val; return hash(bytes); }; } export const murmurHash3_int32Input = convertToSingleInt32Hash(murmurHash3); //# sourceMappingURL=Hashing.js.map