Documentation needed for Asterisk sound formats incl. GSM

Currently there is no clear way for users to play, decode, and convert many of the audio files provided with Asterisk at http://downloads.asterisk.org/pub/telephony/asterisk/releases/. These files are only provided in the GSM audio file format. Why doesn’t Digium provide any documentation on this format? How are we supposed to import this into Audacity? I saw instructions to use “Import”–>“Raw”, but there are numerous options for importing a raw file. I assume I’m supposed to select encoding “GSM 6.10” and 1 channel (mono), but what “byte order” and sample rate must we select? Are users expected to simply guess this through trial and error? As an open-source project, all file formats that are used, especially ambiguous ones, should be fully documented. There are “readme” files with the archives but they contain no information on the “GSM” file format or how to read or open them. Can Digium please provide some kind of official documentation on what file format is being used here and exactly how this supposed to be imported into Audacity, with the exact options you’re supposed to use?

In addition, http://downloads.asterisk.org/pub/telephony/sounds/ contains other Asterisk sounds in the “GSM”, “ALAW”, “G722”, “SIREN7”, “SIREN14”, “SLN16”, and “WAV” file extensions. Can we please also have documentation for all of these formats? For example, what kind of WAV file is being used? What open-source software can be used to open these formats? Can Audacity be used for all of them? If not, what is the recommended open-source software?

Thank you.

The standard sounds are provided in multiple formats, including the very basic SLN format.

GSM format is formally documented in ETSI standards, which are relatively expensive paid for documents, however there are open source implementations of GSM, from which you can work out the format. In fact, the format for GSM is sufficiently complex that you really wouldn’t want to access it directly.

Asterisk provides commands to trasncode between formats for which it contains conversion paths.

Note that for some, patent encumbered, formats, Asterisk doesn’t need to know the details of the format, as it can only pass them through ligerally, unless you install additional, paid for, software.

If you want to manipulate sounds, you should not use GSM as a starting point, as GSM is a lossy compression scheme, optimised for the human voice. Also, read the licensing carefully; the sound files have more restrictive licensing than Asterisk itself.

ALAW is raw G.711 A-Law. This is specified in a, paid for, ITU-T document, atlhough Wikipedia will also give you details. G.722 is also specified by ITU-T. I’m not familiar with the SIREN codecs, however I imagine there is a Wikipedia page for them. SLN16 is raw, little endian, signed, linear, 16 bit words, mono, sampled at 16kHz,. WAV is specified by Microsoft. Asterisk uses two variants: wav is signed, signed, linear, little-endian, 16 bit words, mono, sampled at 8kHz, in a .wav (RIFF) wrapper. WAV is GSM in a .wav wrapper. (Endianess needs double checking.)

Thanks for these details! Some follow-up questions:

It looks like there are four separate libraries of sounds: the “asterisk-sounds” at http://downloads.asterisk.org/pub/telephony/asterisk/releases/, and the “core-sounds”, “extra-sounds”, and “moh” (music-on-hold) at http://downloads.asterisk.org/pub/telephony/sounds/. The former one, “asterisk-sounds”, is only provided in the GSM format, whereas the others are in all of those numerous formats (“GSM”, “ALAW”, “G722”, “SIREN7”, “SIREN14”, “SLN16”, and “WAV”). Could the “asterisk-sounds” also be provided in all of those other formats too? Is there a specific reason it is only provided in GSM? (Note: the license says it’s BSD. The other three say they have a Creative Commons or Creative Commons Share-Alike license.)

Can you please clarify this? How could Asterisk play and convert formats without having source code to decode them? Does this rely on some hardware or sound-card module, or proprietary binary codecs installed in Linux?

In addition, if it is relying something like this for which there is not an open-source code implementation, then is Asterisk violating its own open-source terms? Shouldn’t it only be relying on things for which there is a FOSS reference implementation?

  1. Can you please formally document all of these details in the Asterisk documentation and/or Wiki, including the information on which formats are proprietary / require payment for documents, which ones have FOSS implementations for playing/converting and what those programs are, which ones Asterisk has code for and which ones it doesn’t (and how that is the case), external links to the outside documentation for each format (paid or not), and all of the sub-details for each format like the ones you mentioned (after confirming the details you were unsure of)?

Can Asterisk translate from any of the formats to any other? If not, which ones can it translate to/from?

Thanks!

The GSM only ones look like they are ones for very old versions.

Typically you don’t want music in GSM, because it is a voice only codec.

Asterisk can convert between any codecs for which it can build a translation path; that depends on what codecs are installed. Some codecs may have to be purchased separately. However the easiest way of answering this sort of question is to install Asterisk and try for yourself.

I don’t have a recent installed system at home to check the copyrights, and don’t want to do a big download, but I’d be surprised if Allison agreed to a BSD licence.

There are binary modules. Asterisk with a licence that has additional permissions.

If you want them documented in the Wiki, please contribute the entries yourself. That level of technical detail really is not useful to the average user who only wants to know if the codecs are compatible with their phones. As far as I know the wiki is a community document, not a Digium document, even though a DIgium employee is one of the main contributors.

Generally you are asking questions to which the average user doesn’t need to know the answer and to which people who do need to know will generally know the answer, or where to get it.