\section{Introduction} Asterisk utilizes a variety of sound prompts that are available in several file formats and languages. Multiple languages and formats can be installed on the same system, and Asterisk will utilize prompts from languages installed, and will automatically pick the least CPU intensive format that is available on the system (based on codecs in use, in additional to the codec and format modules installed and available). In addition to the prompts available with Asterisk, you can create your own sets of prompts and utilize them as well. This document will tell you how the prompts available for Asterisk are created so that the prompts you create can be as close and consistent in the quality and volume levels as those shipped with Asterisk. \section{Getting The Sounds Tools} The sounds tools are available in the publicly accessible repotools repository. You can check these tools out with Subversion via the following command: \begin{astlisting} \begin{verbatim} # svn co http://svn.asterisk.org/svn/repotools \end{verbatim} \end{astlisting} The sound tools are available in the subdirectory sound_tools/ which contains the following directories: \begin{itemize} \item audiofilter \item makeg722 \item scripts \end{itemize} \section{About The Sounds Tools} The following sections will describe the sound tools in more detail and explain what they are used for in the sounds package creation process. \subsection{audiofilter} The audiofilter application is used to "tune" the sound files in such a way that they sound good when being used while in a compressed format. The values in the scripts for creating the sound files supplied in repotools is essentially a high-pass filter that drops out audio below 100Hz (or so). (There is an ITU specification that states for 8KHz audio that is being compressed frequencies below a certain threshold should be removed because they make the resulting compressed audio sound worse than it should.) The audiofilter application is used by the 'converter' script located in the scripts subdirectory of repotools/sound_tools. The values being passed to the audiofilter application is as follows: \begin{astlisting} \begin{verbatim} audiofilter -n 0.86916 -1.73829 0.86916 -d 1.00000 -1.74152 0.77536 \end{verbatim} \end{astlisting} The two options -n and -d are 'numerator' and 'denominator'. Per the author, Jean-Marc Valin, "These values are filter coefficients (-n means numerator, -d is denominator) expressed in the z-transform domain. There represent an elliptic filter that I designed with Octave such that 'the result sounds good'." \subsection{makeg722} The makeg722 application is used by the 'converters' script to generate the G.722 sound files that are shipped with Asterisk. It starts with the RAW sound files and then converts them to G.722. \subsection{scripts} The scripts folder is where all the magic happens. These are the scripts that the Asterisk open source team use to build the packaged audio files for the various formats that are distributed with Asterisk. \begin{itemize} \item chkcore - used to check that the contents of core-sounds-$<$lang$>$.txt are in sync \item chkextra - same as above, but checks the extra sound files \item mkcore - script used to generate the core sounds packages \item mkextra - script used to generate the extra sounds packages \item mkmoh - script used to generate the music on hold packages \item converters - script used to convert the master files to various formats \end{itemize}