Comments (11)
Hey Patrick,
Yes, great idea! I'll be glad to help should you decide to do it yourself.
Large files are a problem we couldn't solve (it seems decodeAudioData
has limits on audio buffer size, and it's crashing when the file is over 60 MB). However, speech is easily compressed due to narrower frequency ranges, plus high quality usually isn't required.
from wavesurfer.js.
Cool! Is there any documentation on writing WaveSurfer plugins? Otherwise I guess I can just try to model it from the interface in the ELAN plugin. My Javascript skills are nowhere near as good as yours, but I want to try!
Have you looked into the “streaming” capability of createMediaElementSource
for the possibility of addressing the file size issues you mention?
In my line of work we do use huge .wav
files, often (gulp) half a gig, because sometimes we do acoustic analysis on them—we use nice mics, etc.
Incidentally, have you seen this blog post? He mentions WaveSurfer and claims to have come up with a way to handle long files, but I can’t seem to find the Github link he mentions.
from wavesurfer.js.
ELAN "plugin" is just a number of functions in WaveSurfer
namespace, it's not integrated in any way with the main program. Whereas you'll have to access WaveSurfer
instance to analyze the peaks array and mark silent sections, so yours will be the first real plugin. Just pass a WaveSurfer
instance as a parameter, and we'll figure out how to enable plugins by names via main init options later.
Chunking is a way to go, but it will be 1) slow (the browser will have to download the half gig of chunks anyway), 2) you'll have to prepare the chunks somehow (outside wavesurfer). I think the better similar option is to setup a server and decode audio/find peaks there, then just download peaks and use Audio element/createMediaElementSource
for playing (SoundCloud's waveform.js does exactly that).
I'll see this weekend how Aurora.js decodes MP3. They must somehow preprocess audio stream before playing it (I don't think they can be fast enough to decode in realtime). If I'm right, we could use that to draw waveforms from audio streams.
from wavesurfer.js.
I've started working on this for a transcription tool: http://www.wavesurfer.fm/example/annotation/
from wavesurfer.js.
kats, you don't even know how grateful I am for that demo. :') I was designing a music annotator with wavesurfer.js and fabric.js and, seriously, that demo will help me to organize some ideas. 💃
Thanks!!!
from wavesurfer.js.
@echo66, you're welcome, man!
from wavesurfer.js.
As I mentioned before I’m a big fan of this plugin too!
It seems that the audio isn’t currently loading?
from wavesurfer.js.
Eh? Loading for me.
from wavesurfer.js.
+1 for the Silence Finder
from wavesurfer.js.
+1 for the Silence Finder
Anyone made an extension for silence finding?
from wavesurfer.js.
Anyone made an extension for silence finding?
Doesn't the demo annotation plugin do this? Demo.
Relevant source: http://wavesurfer-js.org/example/annotation/app.js
from wavesurfer.js.
Related Issues (20)
- Regions with split channels
- Timeline reports wrong numbers when zooming out
- Incorrect filter name in web audio example
- Regions: No resize handles when setting resize is enabled with setOptions
- CPU overloading when container hasn't width HOT 1
- Using MediaElement always seeks to position 0 HOT 1
- Scroll waveform when dragging a region past the edge
- Error when repeatedly recording HOT 2
- Can't scroll long waveform on Iphone HOT 1
- [7.x] isPlaying() returns false just after PlayPause() HOT 1
- Scrolling on IOS doesn't work with regions plugin HOT 3
- Progress color does not completely fill the wave area HOT 1
- Bring back Web Audio playback support
- Render w/o audio if peaks are provided
- Cors issue after uploading to 7
- Can't add new regions by drag selection when timeline plugin is created with insertPosition 'beforebegin' HOT 2
- [Regions] Creating regions by dragging doesn't work with clip-path
- Seeking doesn't work if no audio is provided HOT 1
- Region plugin content going out of bounds HOT 7
- RecordPlugin not resetting `interact` and `cursorWidth` options to their original values HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wavesurfer.js.