{"_id":"@4players/voice-filter","_rev":"7-e5fd2e443a480a71b33bf084be985734","name":"@4players/voice-filter","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@4players/voice-filter","version":"1.0.0","keywords":["voice","filter","audio","typescript"],"license":"MIT OR Apache-2.0","_id":"@4players/voice-filter@1.0.0","maintainers":[{"name":"svenpaulsen","email":"info@sven-paulsen.de"},{"name":"pschuster","email":"pschuster@me.com"}],"dist":{"shasum":"39a0ca0bb5ecb43047fab8963901f40c0eacc465","tarball":"https://registry.npmjs.org/@4players/voice-filter/-/voice-filter-1.0.0.tgz","fileCount":4,"integrity":"sha512-3JWeSnLgah4Z7I0TfHNkoZzpWCU1J3uJ645uXbFnA4NoONxdyTK/7Vxk3vzaDVHeC/iAmQb/84C1+KS7Nhr+fg==","signatures":[{"sig":"MEUCICL9pWuynYdgQOtd+4ePBXEljcfEVa5qPxuJ0zXo1Fe1AiEA/aHJ3hOvc8ChFWzLQfd27jXaxixC27y5k3s/Tg0kRfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7906},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"9dc18dbf68be0e47bcff636be58946eb2b3be011","scripts":{"build":"tsc","clean":"rimraf dist","prepare":"npm run build"},"_npmUser":{"name":"pschuster","email":"pschuster@me.com"},"_npmVersion":"11.3.0","description":"a voice filtering library","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6","typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/voice-filter_1.0.0_1749138885830_0.8290662846033392","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@4players/voice-filter","version":"1.0.1","keywords":["voice","filter","audio","typescript"],"license":"MIT OR Apache-2.0","_id":"@4players/voice-filter@1.0.1","maintainers":[{"name":"svenpaulsen","email":"info@sven-paulsen.de"},{"name":"pschuster","email":"pschuster@me.com"}],"dist":{"shasum":"deb2a9d13526107076063f4a10d61c0b16929e33","tarball":"https://registry.npmjs.org/@4players/voice-filter/-/voice-filter-1.0.1.tgz","fileCount":4,"integrity":"sha512-lS+N0lTV8wThaveCpCq6wm1ajSx2rXEDBmWb1k4lsBfWdsw5t86KksohN/VnS5rEt6ZA4iPKZPy1zwf/L6ekDg==","signatures":[{"sig":"MEQCIH6i1s5PuJV+MmGSM3fTZJDEngMV+8C13rBTJFYddic6AiACqX2HvJTw9lv9bWRtVAPzUX9eKxpkAo3FoTPU2qZklQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7928},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"64b4b950de7fdcefdf78cb1b91f6845cc3890c92","private":false,"scripts":{"build":"tsc","clean":"rimraf dist","prepare":"npm run build"},"_npmUser":{"name":"pschuster","email":"pschuster@me.com"},"_npmVersion":"11.3.0","description":"a voice filtering library","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6","typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/voice-filter_1.0.1_1749139905561_0.8128405063558721","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@4players/voice-filter","version":"1.1.0","keywords":["voice","filter","audio","typescript"],"license":"MIT OR Apache-2.0","_id":"@4players/voice-filter@1.1.0","maintainers":[{"name":"svenpaulsen","email":"info@sven-paulsen.de"},{"name":"pschuster","email":"pschuster@me.com"}],"dist":{"shasum":"c231f227ab95a4fc16f137ab427c369dfa9fe1d7","tarball":"https://registry.npmjs.org/@4players/voice-filter/-/voice-filter-1.1.0.tgz","fileCount":5,"integrity":"sha512-5WpasHFNpnGPh96a0aSVTwMrm7DiUd4yNpcRAPL/XhQ2uIT7eErhJGN33GV3HJddOpgFPcEjy1q0yG3L0GT3Gw==","signatures":[{"sig":"MEQCIBuWdlTptKqZ+RmeVpufRDmc2de3XsXVhnFhP7nsw13kAiBLEPILnfZPMylk2ZlzsECWnkRXWgl9tE9haGHiD1yKYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9524},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"13a72fea127aa648c0281cf060cc0bb2b46cfa34","private":false,"scripts":{"build":"tsc","clean":"rimraf dist","prepare":"npm run build"},"_npmUser":{"name":"pschuster","email":"pschuster@me.com"},"_npmVersion":"11.3.0","description":"A custom filter library for speech enhancement","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6","typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/voice-filter_1.1.0_1749644803100_0.5377526561285471","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@4players/voice-filter","version":"1.2.0","keywords":["voice","filter","audio","typescript"],"license":"MIT OR Apache-2.0","_id":"@4players/voice-filter@1.2.0","maintainers":[{"name":"svenpaulsen","email":"info@sven-paulsen.de"},{"name":"pschuster","email":"pschuster@me.com"}],"dist":{"shasum":"d9bae89c877bb844f8f5872ee8ca77a619aeae14","tarball":"https://registry.npmjs.org/@4players/voice-filter/-/voice-filter-1.2.0.tgz","fileCount":5,"integrity":"sha512-PTA/PUK+SKwO6l/PbuS0cHFrUKciwBL/qf1GLoWY6tO4uZNaOH09yOSu3DULSvwgedaXjJef4NeFW1Ju+y7f+w==","signatures":[{"sig":"MEUCIQCAOdfpoIP2CWBnBLIUySdxbPOzj1pKo+KjkZAjFjZyRQIgUAxdC14gihV9lsUEQgugIgfMq2+mv7ib6QtqhetNX7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10708},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"52faacd84a2809b1638bb231a6204392ee6f068c","private":false,"scripts":{"build":"tsc","clean":"rimraf dist target","prepare":"npm run build"},"_npmUser":{"name":"pschuster","actor":{"name":"pschuster","type":"user","email":"pschuster@me.com"},"email":"pschuster@me.com"},"_npmVersion":"11.3.0","description":"A custom filter library for speech enhancement","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6","typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/voice-filter_1.2.0_1750194930515_0.02436252563239849","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@4players/voice-filter","version":"1.2.1","keywords":["voice","filter","audio","typescript"],"license":"MIT OR Apache-2.0","_id":"@4players/voice-filter@1.2.1","maintainers":[{"name":"svenpaulsen","email":"info@sven-paulsen.de"},{"name":"pschuster","email":"pschuster@me.com"}],"dist":{"shasum":"0d263eff8e1ebe9c1d9a01c315afa6134190fd95","tarball":"https://registry.npmjs.org/@4players/voice-filter/-/voice-filter-1.2.1.tgz","fileCount":5,"integrity":"sha512-Do5dScX4ZlHpPn94fikSkzZreNYWrp7mz9K4oyiUCa6lWvCwea1gRqbIkKQF74QMqetuQGDBuJVk9bteH9tyrg==","signatures":[{"sig":"MEUCIQDXFRxfWz0zwnobMxdcfxmVQdW1/0I+xJgGnP0PecloDwIgBvEbvlKoNXFQeVM7tP6GhENEQaGxHqsXBhnqGxmd20w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10782},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ba9a81f2a2f3dc9eb8a2a4cb6317866b918fb946","private":false,"scripts":{"build":"tsc","clean":"rimraf dist target","prepare":"npm run build"},"_npmUser":{"name":"pschuster","actor":{"name":"pschuster","type":"user","email":"pschuster@me.com"},"email":"pschuster@me.com"},"_npmVersion":"11.3.0","description":"A custom filter library for speech enhancement","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6","typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/voice-filter_1.2.1_1750197050221_0.8362402161887714","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-06-05T15:54:45.828Z","modified":"2026-07-23T15:34:52.456Z","1.0.0":"2025-06-05T15:54:46.045Z","1.0.1":"2025-06-05T16:11:45.767Z","1.1.0":"2025-06-11T12:26:43.273Z","1.2.0":"2025-06-17T21:15:30.715Z","1.2.1":"2025-06-17T21:50:50.430Z"},"license":"MIT OR Apache-2.0","keywords":["voice","filter","audio","typescript"],"description":"A custom filter library for speech enhancement","maintainers":[{"email":"info@sven-paulsen.de","name":"svenpaulsen"},{"email":"pschuster@me.com","name":"pschuster"},{"email":"acc@zinomedia.de","name":"zino1337"}],"readme":"# @4players/voice-filter\n\nA WebAssembly-based real-time voice isolation filter for mono and stereo audio. This package provides a JavaScript wrapper for a low-latency denoising filter compiled from native code.\n\n## Features\n\n- WebAssembly-powered denoising filter\n- Mono and stereo support\n- Adjustable attenuation and post-filter parameters\n- Efficient audio buffer management\n- Simple async API\n\n## Installation\n\n```bash\nnpm install @4players/voice-filter\n```\n\n## Usage\n\n```ts\nimport { Vif } from '@4players/voice-filter';\n\nconst filter = await Vif.create(true); // `true` for stereo\n\n// Configure parameters\nfilter.attenuationLimit = 90;\nfilter.postFilterBeta = 0.5;\n\n// Process audio\nconst input = new Float32Array(...); // Fill with input samples (20ms 48kHz stereo interleaved)\nconst output = new Float32Array(input.length);\nconst lsnr = filter.processFrame(input, output);\n\n// Clean up\nfilter.close();\n```\n\n## API\n\n### `Vif.create(stereo: boolean): Promise<Vif>`\nCreates a filter instance. `stereo` determines mono/stereo mode.\n\n### Properties\n\n- `frameLength: number` — Frame length required per channel\n- `attenuationLimit: number` — dB limit for noise attenuation\n- `postFilterBeta: number` — Post-filter smoothing factor\n- `stereo: boolean` — Indicates stereo mode\n\n### `processFrame(input: Float32Array, output: Float32Array): number`\nProcesses a frame and returns a signal-to-noise ratio estimate.\n\n### `close()`\nUnregisters internal memory buffers and destroys the filter instance.\n\n## License\n\nMIT or APACHE-2.0\n","readmeFilename":"README.md"}