Small, modern WASM bindings for libopus raw packet encode/decode.
The default path is Discord/realtime voice ready: 48 kHz, stereo, 20 ms PCM frames, raw Opus packets, no Ogg/WebM container layer.
npm install libopus-wasm
import { createDecoder, createEncoder } from "libopus-wasm";
using encoder = await createEncoder();
using decoder = await createDecoder();
const pcm = new Int16Array(960 * 2);
const packet = encoder.encode(pcm);
const decoded = decoder.decode(packet);
const concealed = decoder.decodePacketLoss(960);