Help - Search - Members - Calendar
Full Version: Speex codec
Hydrogenaudio Forums > Lossy Audio Compression > Speech Codecs
Nazgul
Hello guys,

Has somebody had any experience with Speex codec? I have some questions about that. I would really appreciate your help
Garf
Just ask the questions.
CiTay
And please don't double-post again.
jmvalin
QUOTE(Nazgul @ Apr 21 2004, 03:53 PM)
Has somebody had any experience with Speex codec?

I do biggrin.gif
kurtnoise
Can we have the latest unstable version (1.1.5) for windows ?? In http://www.rarewares.org , only the 1.1.4 is available.

Thanks.
Nazgul
QUOTE(CiTay @ Apr 21 2004, 01:25 PM)
And please don't double-post again.

I am sorry, I am a newbie on this forum and did not notice a forum dedicated to codecs.

Actually, I would like to show you what I do in my application and would really appreaciate if you point me the spot where I am wrong.

I am sorry for my previous post. I made a mistake assuming that I get mu-law data. No. I get linear PCM, 8 bits per second, signed. So the sequence of my actions is the following:

void CompressAndDecompress (const char* cData, int iLength = /*160*/)
{
vector <short> vecLinearPCMdata

// Speex needs linear PCM, 16 bit per sample
// Convert my signed 8 bit to signed 16 bits

for (i = 0; i < iLength; i++)
{
short cTemp = (short) (cData[i] >> 8);
short_buffer.push_back ( cTemp);
}


// now we have 160 samples. Encode the frame

// array to keep encoded frame
char cEncodedFrame [38];

speex_bits_reset(&bits);

speex_encode(state, &short_buffer [0], &bits);

int nbBytes = speex_bits_write(&bits, cEncodedFrame, 38);

/// now decode the frame

short cDecodedData [160];
char cLinearPCM8Bits [160];

speex_bits_read_from (&dec_bits, cEncodedFrame, 38);

speex_decode (speex_dec, &dec_bits, cDecodedData );

for (int j=0; j < 160; j++)
{

// convert each sample back to signed 8 bits PCM

cLinearPCM8Bits [j] = (char) (cDecodedData [j] >> 8) ;
}

}


As a result, decompressed data does not match original data. They are totally different and I can't play them. Where am I wrong?

Thanks
ayeletz
I have the same problem,
i am trying to add to my application the speex,i get stream of audio of wideband(16khz) and each smaple have 16 bit, as i understood from the manual is that speex get one frame at the time to encode , (one frame for wide band is 320 sample, mean 640 bit), after encode i send it on tcp\ip to the other size and then take the stream i got from the encoder and do decode.
i see that the buf i got after decoder has many zero , and not like the stream before.
i use quality=10 and stiil it sound bad!!!
what do i do wrong?

is it write that the encoder of wideband get frame at size 640 bit , and put them in float array of 320, and in decoder i get array of float of 320 and put them into 640 bit, each 4 bit insert to 2 bit of short?

i would be greatfull if someone who understand the code behind the speex could help me with this.


Thanks,
Ayelet
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.