Page 1 of 1

Please add Codec2 audio codec

Posted: 12 Jul 2023 23:13
by Ben321
This codec was developed with the intent of specifically encoding speech, not audio in general. It outputs an ultra low bandwidth data stream that contains sufficient data to reconstruct the human voice on the receiving end. It can have its bitrate set between about 700bps (yes that's 700 bits per second, not 700kbps) and 3200bps. It's particularly useful in the ham radio community for encoding voice for narrow band digital audio transmissions. It was developed in response to the fact that most low bandwidth codecs that exist are patented, and the only other public domain speech audio codec (called Speex) which has a narrow bandwidth still doesn't have a narrow enough bandwidth for ham radio transmissions in the HF ham bands (though other patented codecs do). Basically, Codec2 is the community response to the patented speech audio codecs, in the same way that PNG image compression was the community response to the patented GIF image compression (by the way, the GIF patent has already expired). So this new speech audio codec is something I'd like to see VLC player at least be able to decode/play, even if an encoder isn't implemented in it. FFMPEG already has implemented both an encoder and a decoder for it. I don't know if it's part of the official specs for Codec2 (or if it only specifies an audio stream encoding/compression), but FFMPEG also has a container file format for this audio compression. In particular, it seems to prepend a short header before the start of the actual stream data, when saving it in a file (when codec2 format is selected, though if you select the codec2raw format then it saves only the stream without the header). The file extension for this file format is c2. Note that Codec2 has 9 modes, from mode 0 to mode 8, each specifying a different bitrate, so it seems it's some form of constant-bitrate compression, as it can guarantee a specific bitrate. The highest bitrate (3200bps) is used in mode 0, and the lowest bitrate (700bps) is used in modes 6 through 8 (not sure the difference between these last 3 modes, but it may have something to do with the amount of error correction coding that's applied to the audio stream).