compression
AudioWorkletStream
compression | AudioWorkletStream | |
---|---|---|
2 | 5 | |
81 | 25 | |
- | - | |
1.1 | 5.6 | |
about 1 year ago | 4 months ago | |
HTML | HTML | |
GNU General Public License v3.0 or later | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
compression
-
Compressing Text into Images
Unfortunately it still doesn't expose Brotli [1], which should be already in web browsers due to `Content-Encoding: br`. There is a very roundabout way to decompress a Brotli stream though, and that's how I've got a typing game into 1 KB of JavaScript [2] back in 2022.
[1] https://github.com/WICG/compression/issues/34
[2] https://js1024.fun/demos/2022/18/readme
-
You May Not Know Beacon
There's a new API you can use to compress data on client side: compression
AudioWorkletStream
-
Node.js fetch() vs. Deno fetch(): Implementation details...
// Exits half way through reading response when --max-old-space-size=6 is set // Exits immediately when --jitless flag is set // // Usage: // // port.postMessage({ // url: 'https://github.com/guest271314/AudioWorkletStream/raw/master/house--64kbs-0-wav', // method: 'get', // body: null // })
-
Are you using generators?
Yes. Fetching a single or multiple files for an infinite stream of audio https://github.com/guest271314/AudioWorkletStream/blob/master/worker.js. Streaming (real-time) audio is non-trivial. Any gaps or glitches in playback will be audible to the user. We could test for expected Float32Arrays. I would suggest complentary manual test in, e.g., WPT to determine audio output does not have gaps or glitches; and renders the expected playback rate.
-
I Created A Web Speech API NPM Package Called SpeechKit
One way to do that is utilizing Native Messaging on Chromium or Firefox https://github.com/guest271314/native-messaging-espeak-ng, and https://github.com/guest271314/webtransport/blob/main/webTransportEspeakNg.js for some WebTransport experiments. Technically we don't need a local server. We can stream and parse the WAV directly and pipe to AudioWorklet or a MediaStreamTrackGenerator https://github.com/guest271314/AudioWorkletStream. The same is true for speech recognition, where audio is piped to the local application and text or JSON piped back. Note also espeak-ng has been compiled to WebAssembly. I created native-messaging-espeak-ng for the ability to pass SSML directly to espeak-ng.
-
How to stream/play a video or audio file on HTTP?
You can stream audio and/or video over HTTP using fetch() https://github.com/guest271314/AudioWorkletStream as long as you know how to parse the codec, if the media is encoded.
-
Is it possible to have an accurate timer in javascript
Re using a dedicated Worker and AudioWorklet to stream, see, e.g., https://github.com/guest271314/AudioWorkletStream; https://plnkr.co/edit/nECtUZ.
What are some alternatives?
fetch-progress-indicators - Progress indicators/bars using Streams, Service Workers, and Fetch APIs
streams - Streams Standard
beacon - Beacon
GoogleNetworkSpeechSynthesis - Google's Network Speech Synthesis: Bring your own Google API key and proxy
speech-kit - Simplifying the Speech Synthesis and Speech Recognition engines for Javascript. Listen for commands and perform callback actions, make the browser speak and transcribe your speech!
musical-timer - Timers based in musical parameters (time signature, tempo and beat resolution)
native-messaging-espeak-ng - Native Messaging => eSpeak NG => MediaStreamTrack
pocketsphinx - A small speech recognizer
proposal-common-minimum-api
espeak-ng - eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.
WebCodecsOpusRecorder - WebCodecs Opus Recorder/Media Source Extensions Opus EncodedAudioChunk Player
txiki.js - A tiny JavaScript runtime