
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
vmsg is a small library for creating voice messages. While traditional way of communication on the web is via text, sometimes it's easier or rather funnier to express your thoughts just by saying it. Of course it doesn't require any special support: record your voice with some standard program, upload to file hosting and share the link. But why bother with all of that boredom stuff if you can do the same in browser with a few clicks.
:fireworks: :tada: DEMO :tada: :fireworks:
Note that this haven't been extensively tested yet. Feel free to open issue in case of any errors.
npm install vmsg --save
import { record } from "vmsg";
someButton.onclick = function() {
record(/* {wasmURL: "/path/to/vmsg.wasm"} */).then(file => {
console.log("Recorded MP3", file);
// Can be used like this:
//
// const form = new FormData();
// form.append("file[]", file);
// fetch("/upload.php", {
// credentials: "include",
// method: "POST",
// body: form,
// }).then(resp => {
// });
});
};
That's it! Don't forget to include vmsg.css and vmsg.wasm in your project.
See also demo directory for a more feasible example.
LLVM_ROOT
variable of Emscripten config.git clone --recurse-submodules https://github.com/Kagami/vmsg.git && cd vmsg
make clean all
npm install
npm start
These instructions are very basic because there're a lot of systems with different conventions. Docker image would probably be provided to fix it.
vmsg uses LAME encoder underneath compiled with Emscripten to WebAssembly module. LAME build is optimized for size, weights only little more than 70kb gzipped and can be super-efficiently fetched and parsed by browser. It's like a small image.
Access to microphone is implemented with Web Audio API, data samples sent to Web Worker which is responsibe for loading WebAssembly module and calling LAME API.
Module is produced with modern LLVM WASM backend and LLD linker which
should become standard soon, also vmsg has own tiny WASM runtime instead
of Emscripten's to decrease overall size and simplify architecture.
Worker code is included in the main JS module so end-user has to care
only about 3 files: vmsg.js
, vmsg.css
and vmsg.wasm
. CSS can be
inlined too but IMO that would be ugly.
MediaStream Recording API is great but:
vmsg is licensed under CC0.
LAME is licensed under LGPL.
MP3 patents seems to have expired since April 23, 2017.
FAQs
Library for creating voice messages
The npm package vmsg receives a total of 9,052 weekly downloads. As such, vmsg popularity was classified as popular.
We found that vmsg demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.