- From: Raymond Toy <rtoy@google.com>
- Date: Fri, 11 Sep 2015 09:16:27 -0700
- To: Josh Nielsen <josh@joshontheweb.com>
- Cc: Stephen C Phillips <steve@scphillips.com>, "public-audio@w3.org" <public-audio@w3.org>
- Message-ID: <CAE3TgXHRNs8WV3EAwfto6q0e=u5+hHS6SuLeO+XMJ7jr5iX3rg@mail.gmail.com>
On Thu, Sep 10, 2015 at 3:28 PM, Josh Nielsen <josh@joshontheweb.com> wrote: > I'd like to throw in my vote for configurable sample rates as well. I'm > recording audio from the microphone via webrtc and I have to resample the > stream if it isn't at the desired sample rate (44100). This causes major > performance issues if the default sample rate is too high. It is also very > unintuitive to figure out how to adjust the sample rate at the OS level for > most people. > The last proposal was for allowing the AudioContext to run at a selectable rate. The output of the graph would get resampled to match the actual HW sampling rate. Selecting inputs and outputs is still being worked on, I think. > > On Fri, Sep 11, 2015 at 10:09 AM, Raymond Toy <rtoy@google.com> wrote: > >> First, this is the wrong list. This list is for issues with the spec. You >> should probably be posting to public-audio-dev. >> >> >> However,... >> >> On Tue, Sep 8, 2015 at 1:21 PM, Stephen C Phillips <steve@scphillips.com> >> wrote: >> >>> Hi, >>> >>> I've only just joined the mailing list, so please accept my apologies if >>> I ask questions already resolved - I can't find answers from my searches. >>> >>> >>> First, I'd love it if you took a look at an application I have just >>> published on my Morse code website to listen to the microphone and attempt >>> to decode any Morse code sounds that are audible. It uses the Web Audio API >>> of course and the FFT function in particular. I haven't seen many (any?) >>> demos that have a practical use of the FFT so I did wonder if you'd like to >>> add it to the demos list? >>> >>> The page is here: http://morsecode.scphillips.com/labs/decoder/ >>> >> >> That's a really neat demo with a nice explanation of what's going on! >> >> >>> >>> >>> Secondly, in writing the application I came across some limitations with >>> the API and wondered if they had been discussed: >>> >>> >>> 1. It would be useful to set the sample rate. >>> >>> Chrome has it set to 48 kHz which of course gives a maximum sampled >>> frequency of 24 kHz. For the Morse code decoder, a max frequency of 4 kHz >>> would have been fine. The reason it might matter is that my application >>> uses a 512 point FFT which gives a time-step of 10ms (between samples) and >>> a frequency resolution of 93 Hz. if it was sampled at 6 kHz (say) then you >>> could do a 64 point FFT to give the same resolutions while still having a >>> max frequency higher than required - saving some processing time. >>> >> >> Selectable sample rates (on output) have been considered but no one has >> actually done the work to spec it. I don't think we've considered being >> able to select the sample rate on the input side. >> >> Also, many OSes allow you to set the audio sample rate. Perhaps you can >> change that on your OS for the rate that you want. WebAudio should be able >> to use the new sample rate. >> >>> >>> >>> 2. The time resolution of the analysis is limited by the fact that the >>> FFT input data samples cannot overlap. >>> >>> Or at least I assume this to be so. My application uses the AnalyzerNode >>> with a 512 point buffer and a ScriptProcessorNode of the same size. When >>> the ScriptProcessorNode is called (every 512 frames) it inspects the >>> contents of the AnalyzerNode to get the frequency-domain data.. >>> >>> What I'd like, is to be able to do a FFT using a moving window of input >>> data (i.e. a FIFO queue of samples) in order to get a higher time >>> resolution. Combined with a slower sampling period (see (1)) this might be >>> feasible. >>> >>> I'm wondering whether it would be fast enough to use a >>> ScriptProcessorNode to do the FFT itself in this way (i.e. implement the >>> FFT in JavaScript) but have not tried yet. >>> >> >> You don't get higher resolution by overlapping frames. You just get a >> smoother resulting FFT. The only way to get higher resolution is to use a >> larger FFT and to sample fast enough. >> >> You could certainly do the FFT in Javascript, but it probably won't be as >> fast as the FFT built into WebAudio, but you'd have more control over >> exactly how you want to do your FFT overlapping and smoothing. >> >> > > > -- > Thanks, > Josh Nielsen > @joshontheweb <http://twitter.com/joshontheweb> > joshontheweb.com >
Received on Friday, 11 September 2015 16:16:55 UTC