[vorbis] Detecting silence

craig duncan duncan at nycap.rr.com
Fri Jan 19 05:27:19 PST 2001



Completely new topic, and perhaps more important than it might appear
just at a casual glance, if one hasn't been thinking about -- and
really wanting to write -- some possible future (istic?)
applications (as i have . . . and do).

What i would like to have, which would _very_ much simplify what's
involved in writing the code for certain things i have in mind, is
(let me just say this and clarify it afterward) a callback mechanism
(perhaps) that notifies me whenever a period of (relative) silence
begins . . . or ends.  I'm thinking about multiplexing different
content streams that aren't really generated together in real time but
that i want to "produce" (time-delayed) to sound as if they were
(taking out the silences introduced by the time-delay involved in the
propagation of signals over the internet).  I want to be able to do
this automatically, programatically, in real-time.

The requirement is actually a little tricky, and so i don't know
exactly how i'd implement it -- thus i'm not saying that a callback
mechanism is specifically what is needed.  I'd rather just try to
convey the requirement. . . which is . . . being able to have your
program suddenly have the "beginning of substream" available, at a
point when the underlying streaming mechanism has detected a change
between "silence" and signal.  And vice versa (which is probably
easier . . . but very much related) . . . discontinuing the delivery
of data at the point (or shortly -- up to a second? -- thereafter)
where the silence began.

Does this make any sense?  Is it even possible?  My basic thought is
that putting some mechanism that gives me this capability into the
underlying streaming layer would mean that an application that might
otherwise be very tricky to write, with all sorts of timing issues
that needed to be handled manually, would be quite easy . . . with the
right underlying mechanism available.

On further thought, what i really had in mind in writing this (other
than to actually try to present my idea clearly enough so that someone
with some knowledge of ogg streaming internals could tell me what was
[potentially] achievable and what was just too pie in the sky) is that
the probable (realistic) answer to providing something that would work
well for me along these lines is something somewhere in the middle,
that tells me about where "silence" exists and doesn't (i don't want
to constantly have to be doing FFT's on the stream data*) but that
doesn't relieve me of worrying about all the timing issues (i.e. i'll
have to buffer stuff up myself and then, having some indication from
the stream about where silence exists or not, retransmit the data with
streams multiplexed/sequenced and gaps removed).

So my thought was, that providing this sort of mechanism (although i'm
unsure of exactly what would be the best way to implement it) would
probably be relatively easy to do, and therefore (at least from my
perspective :) worth doing, even if no one (so far) has seemed to have
any particular need for doing it (although i can't really say about
that).  Making the mechanism available, if it wasn't too much work
(it's probably more work to figure out the right mechanism, than to
actually implement it), could turn out to be quite useful and save
more than just me a lot of trouble if others ever want to do anything
similar (often people never have a thought about doing certain things
until they see someone else actually doing it!)

craig

* I left this comment in so that you'd know that i'm really not sure
  what i'm talking about.  How do you detect "silence"?  Is there a
  distinction that can be made between "content silence" and silence
  introduced by propagation delays (lack of signal)?  Is automated
  production over the internet not too difficult or creeping into
  the area of being an AI problem?  For what kind of "production"?
  My interest (to answer this last question) is in grass-roots
  (what we _used_ to think of as radio) journalism and the development
  of decentralized means of producing and distributing it (otherwise,
  corporate media is going to control everything we hear, see and
think).

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Vorbis mailing list