[Speex-dev] SPEEX tech specs

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Thu May 3 05:09:59 PDT 2007


B. Mitchell Loebel a écrit :
> Thank you Jean-Marc.
> My understanding is that G.729 is a telephone codec, so there must have
> been some reason why its developers went to 10ms/frame. Do you know why
> that might be?

AFAIK G.729 had lower delay requirements because it was also meant to be
used on circuit-switched network. For VoIP, what most people do is just
put two frames per packet.

> From a recent post on this list I saw somebody talking about your
> decoded sample rate being 8KHZ/sec. and then he mentioned that being 160
> bytes at 20ms/frame. 

No, it's 160 *samples* per frame. Speex doesn't care what the samples
are as long as you convert them to either float or short before sending
them.

> That said, I take it that your decoded samples are
> 1 byte wide ... is that correct? 

No. See above.

> We're using G.729 and we'd like to
> consider SPEEX at sometime in the future. That's why I asked you about
> the quality comparison. Of course, G.729's decoded samples are 16 bits
> wide so that's another quality consideration.

No, it happens that your implementation of G.729 has an API that gives
you 16-bit samples. Fundamentally, a codec compresses *samples*.

	Jean-Marc

> 
> At 09:30 PM 5/3/2007 +1000, Jean-Marc Valin wrote:
>> B. Mitchell Loebel a écrit :
>> > Thank you. You're right ... my error ... I meant to say 12 bytes
>> > (including the 2 bytes for VAD). And it is 10ms/frame. No matter ...
>> > thank you for the SPEEX specs. In terms of quality, what SPEEX bit rate
>> > compares with G.729 at 8kbps data rate please?
>>
>> Haven't done formal testing and it depends on whether it's G.729 or
>> G.729A. I'd say probably 8 kbps or 11 kbps.
>>
>> > Is there some reason why
>> > you chose the 20ms frame rate?
>>
>> It's a good value I think. Speex is designed for VoIP, so 10 ms is
>> pretty much useless because you'd be sending about 32 kbps worth of
>> overhead (each packet has 40 bytes for IP+UDP+RTP headers).
>>
>> > Do you keep that same frame rate for the
>> > different bit rates?
>>
>> Yes.
>>
>> > The faster frame rate would seem to better adapt to
>> > multiple speakers cutting in and out ... yes/no?
>>
>> I don't think we should really worry about speakers interrupting each
>> other at 10 ms interval. If that happens, you've got much more important
>> problems than the codec :-)
>>
>> > Btw, 6 bytes/frame at 50 frames/second seems to be 2.4kbps so I'm
>> > guessing that the lower rate you mentioned is because of some overhead
>> > for VAD in your 6 bytes.
>>
>> Well, technically 2.15 kbps would mean 5.375 bytes/frame, but then you
>> need to round up to the next whole byte -- unless you put multiple
>> frames in a packet, in which case it matters.
>>
>>         Jean-Marc
>>
>> > At 07:11 PM 5/3/2007 +1000, Jean-Marc Valin wrote:
>> >> B. Mitchell Loebel a écrit :
>> >> > How many bits do you have in a frame please and what is your frame
>> >> rate?
>> >> > For example, G.729 (ACELP) has 12 bits/frame including VAD and the
>> >> frame
>> >> > rate is 100/second ... I'm looking for the comparable figures for
>> >> SPEEX.
>> >>
>> >> I'm sorry but if G.729 used 12 bits/frame at 100 frames/second, it
>> would
>> >> have a bit-rate of 1.2 kbps. G.729 actually uses 10 *bytes* (i.e. 80
>> >> bits) per frame. Speex has 20 ms frames (50 frames per second) and
>> >> supports bit-rates that range from 2.15 kbps (6 bytes per frame) to 44
>> >> kbps (110 bytes per frame).
>> >>
>> >>         Jean-Marc
>> >
>> >
>> > ---
>> > B. Mitchell Loebel, CEO, VP Engineering                             
>> 408
>> > 425-9920
>> > InstaFlash International Corporation
>> > (formerly Minute-Tape International Corporation)
>> >
> 
> ---
> B. Mitchell Loebel, Executive Director                              408
> 425-9920
> 
> The Tech Startup Connection
> (formerly The PARALLEL Processing Connection)
> 
> 


More information about the Speex-dev mailing list