From: <Saved by Microsoft Internet Explorer 5>
Subject: Rockbox . Main . VoiceBuilding
Date: Sun, 18 Jun 2006 19:23:13 -0500
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0006_01C6930C.A48B48C0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869

This is a multi-part message in MIME format.

------=_NextPart_000_0006_01C6930C.A48B48C0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML lang=3Den xml:lang=3D"en" =
xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>Rockbox . Main . =
VoiceBuilding</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3DISO-8859-1"><LINK=20
href=3D"http://www.rockbox.org/style.css" type=3Dtext/css =
rel=3Dstylesheet><LINK=20
href=3D"/favicon.ico" rel=3D"shortcut icon">
<META content=3D"MSHTML 6.00.2900.2912" name=3DGENERATOR></HEAD>
<BODY text=3Dblack vLink=3Dpurple aLink=3Dred link=3Dblue =
bgColor=3D#b6c6e5 leftMargin=3D0=20
topMargin=3D0 marginheight=3D"0" marginwidth=3D"0">
<TABLE height=3D"100%" cellSpacing=3D0 cellPadding=3D7 border=3D0>
  <TBODY>
  <TR vAlign=3Dtop>
    <TD vAlign=3Dtop bgColor=3D#6887bb><BR>
      <DIV align=3Dcenter><A href=3D"http://www.rockbox.org/"><IMG =
height=3D30=20
      alt=3D"Rockbox Logo" src=3D"http://www.rockbox.org/rockbox100.png" =
width=3D99=20
      border=3D0></A>=20
      <P align=3Dright><A class=3Dmenulink=20
      href=3D"http://www.rockbox.org/">home</A><BR><A class=3Dmenulink=20
      href=3D"http://www.rockbox.org/download/">download</A><BR><A =
class=3Dmenulink=20
      =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/DocsIndex">documentati=
on</A><BR><A=20
      class=3Dmenulink href=3D"http://www.rockbox.org/mail/">mailing =
lists</A><BR><A=20
      class=3Dmenulink =
href=3D"http://www.rockbox.org/twiki/">wiki</A><BR><A=20
      class=3Dmenulink =
href=3D"http://www.rockbox.org/irc/">IRC</A><BR><A=20
      class=3Dmenulink =
href=3D"http://forums.rockbox.org/">forums</A><BR><A=20
      class=3Dmenulink href=3D"http://www.rockbox.org/daily.shtml">daily =

      builds</A><BR><A class=3Dmenulink=20
      href=3D"http://www.rockbox.org/cvs.shtml">CVS builds</A><BR><A=20
      class=3Dmenulink=20
      =
href=3D"http://www.rockbox.org/tracker/index.php?type=3D1">feature&nbsp;r=
equests</A><BR><A=20
      class=3Dmenulink =
href=3D"http://www.rockbox.org/tracker/index.php?type=3D2">bug=20
      reports</A><BR><A class=3Dmenulink=20
      =
href=3D"http://www.rockbox.org/tracker/index.php?type=3D4">patches</A><BR=
>
      <DIV align=3Dright>
      <FORM action=3Dhttp://www.google.com/search>
      <P><INPUT size=3D10 name=3Das_q><BR><INPUT type=3Dsubmit =
value=3DSearch> <INPUT=20
      type=3Dhidden value=3Dwww.rockbox.org name=3Das_sitesearch> =
</FORM>
      <P>
      <FORM action=3Dhttps://www.paypal.com/cgi-bin/webscr =
method=3Dpost>
      <P><INPUT type=3Dhidden value=3D_xclick name=3Dcmd> <INPUT =
type=3Dhidden=20
      value=3Dbjorn@haxx.se name=3Dbusiness> <INPUT type=3Dhidden=20
      value=3D"Donation to the Rockbox project" name=3Ditem_name> <INPUT =
type=3Dhidden=20
      value=3D1 name=3Dno_shipping> <INPUT type=3Dhidden=20
      value=3D"Note to the Rockbox team" name=3Dcn> <INPUT type=3Dhidden =
value=3DUSD=20
      name=3Dcurrency_code> <INPUT type=3Dhidden value=3D0 name=3Dtax> =
<INPUT type=3Dimage=20
      src=3D"http://www.rockbox.org/paypal-donate.gif" border=3D0 =
name=3Dsubmit>=20
      </FORM></P></DIV></DIV></TD>
    <TD>
      <FORM name=3Dmain action=3D/twiki/bin/view/Main/VoiceBuilding>
      <TABLE cellSpacing=3D0 cellPadding=3D3 width=3D"100%" border=3D0>
        <TBODY>
        <TR>
          <TD><A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/WebHome">Rockbox</A>=20
<!--   . &gt;a =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/WebHome">Main</a&amp; =
-->&gt;=20
            <A class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/DocsIndex">DocsIndex</=
A>=20
            &gt; <A class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceFiles">VoiceFiles=
</A>=20
            &gt; <FONT size=3D+1><B>VoiceBuilding</B> =
</FONT></TD></TR></TBODY></TABLE>
      <TABLE class=3Dtwikibar cellSpacing=3D0 cellPadding=3D3 =
width=3D"100%" border=3D0>
        <TBODY>
        <TR bgColor=3D#d6e6f5>
          <TD colSpan=3D2><A class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/RockboxFAQ">FAQ</A>=20
            =B7 <A class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/WebSearch">Search</A> =

            =B7 Go to page: <INPUT class=3Dtwikiform size=3D16 =
name=3Dtopic>=20
        </TD></TR></TBODY></TABLE></FORM>
      <H1><A name=3DHow_to_build_your_own_voice_file></A><A=20
      name=3D_How_to_build_your_own_voice_fil></A>How to build your own =
voice file=20
      </H1>
      <P>
      <DIV class=3DtwikiToc>
      <UL>
        <LI><A=20
        =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#About">A=
bout</A>=20

        <LI><A=20
        =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#General_=
steps">General=20
        steps</A>=20
        <LI><A=20
        =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#Using_Wi=
ndows">Using=20
        Windows</A>=20
        <UL>
          <LI><A=20
          =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#Prerequi=
sites">Prerequisites</A>=20

          <LI><A=20
          =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#Prepare_=
your_environment">Prepare=20
          your environment</A>=20
          <LI><A=20
          =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#Adapt_Ma=
keVoices_vbs_to_your_nee">Adapt=20
          MakeVoices.vbs to your needs</A>=20
          <LI><A=20
          =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#Build_yo=
ur_voice_file_s">Build=20
          your voice file(s)</A>=20
          <LI><A=20
          =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#Optional=
_Adjust_the_pause">(Optional)=20
          Adjust the pause</A>=20
          <LI><A=20
          =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#Adjustin=
g_pronunciation">Adjusting=20
          pronunciation</A> </LI></UL>
        <LI><A=20
        =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#Using_Li=
nux">Using=20
        Linux</A>=20
        <LI><A=20
        =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding#Tools">T=
ools</A>=20
        </LI></UL></DIV>
      <P>
      <H2><A name=3DAbout></A>About </H2>
      <P>This is an in-depth description how to build your own voice =
files. It=20
      requires a little more than basic computer knowledge.=20
      <P>
      <H2><A name=3DGeneral_steps></A>General steps </H2>
      <P>First, you need the [language].lang file for your language. =
Bring this=20
      up to date if necessary, and fill in the voice: values for those =
entries=20
      that have them in the current english.lang file (the master of all =
.lang=20
      files). The voice files are then created by performing the =
following 4=20
      steps:=20
      <P>
      <OL>
        <LI>Convert each voice: value into a .wav file. This can be done =
either=20
        by using Text-to-speech software, or recording a human voice =
reading the=20
        items. Of course, only the first alternative can be automated. =
The=20
        VOICE_PAUSE entry is a special case, see detailed description =
below.=20
        <LI>(Optional, but recommended.) Trim the .wav clips so that =
there is=20
        (almost) no leading and trailing silence. This helps both to =
keep the=20
        voice file small and to have fluent spelling and number =
speaking.=20
        <LI>Compress all .wav snippets into .mp3 using lame or another =
encoder.=20
        <LI>Assemble the final .voice file from all these .mp3 snippets. =
A=20
        special tool (provided here) is needed for this. If the voice =
file gets=20
        larger than 1.4 MB, go back to step #3 and choose a higher =
compression.=20
        </LI></OL>
      <P>
      <H2><A name=3DUsing_Windows></A>Using Windows </H2>
      <P>This is the almost fully automated way <A class=3DtwikiLink=20
      =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/JensArnold">I</A> use =
for=20
      building the voice files, using AT&amp;T Natural Voice and =
Microsoft SAPI5=20
      voices. You will need at least some knowledge about VBScript =
programming=20
      to make this work. Some knowledge about regular expressions is =
also=20
      useful.=20
      <P>
      <H3><A name=3DPrerequisites></A>Prerequisites </H3>
      <P>
      <UL>
        <LI>At least one SAPI5 (much preferred) or SAPI4 (use only if =
absolutely=20
        necessary) compatible voice installed.=20
        <LI>The wavtrim tool, enhanced version.=20
        <LI>The _voice_pause.wav file.=20
        <LI>lame.exe in the search path=20
        <LI>The voicefont tool.=20
        <LI>The MakeVoices VBScript </LI></UL>
      <P>
      <H3><A name=3DPrepare_your_environment></A>Prepare your =
environment </H3>
      <P>
      <OL>
        <LI>Make a directory for building voice files.=20
        <LI>Put the following files into this directory: Wavtrim.exe,=20
        Voicefont.exe, _voice_pause.wav and MakeVoices.vbs=20
        <LI>Open a command prompt, change into your build directory and =
try to=20
        start lame from there. If it does not work, lame is not in your =
path.=20
        You then have 2 options: (1) Put lame into a directory which is =
in the=20
        path (I use C:\Windows). (2) Put lame.exe into your build =
directory.=20
        <LI>Put the current .lang files for the language(s) you intend =
to build=20
        voice file(s) for into the build directory as well. Also add the =
current=20
        english.lang. English.lang is the master of all language files, =
needed=20
        to determine the correct language id number order. </LI></OL>
      <P>
      <H3><A name=3DAdapt_MakeVoices_vbs_to_your_nee></A>Adapt =
MakeVoices.vbs to=20
      your needs </H3>
      <P>The languages and voice names that the script should build =
voice files=20
      from are currently hard coded in the script, mostly because there =
are some=20
      more parameters which need manual adjustment anyway.=20
      <P>Open the file in a text editor and go to the section that =
starts at=20
      line 60. It is titled "The actual work". There are already several =

      subroutine calls present in that section, left there to be used as =

      examples. A line starting with a single quote (apostrophe) is a =
comment,=20
      i.e. you can use this to temporarily disable a subroutine call =
without=20
      removing it.=20
      <P>The subroutine to use for building your intended voice file =
depends on=20
      whether your voice is SAPI5 or SAPI4 compatible. For SAPI5 voices =
it is=20
      <CODE>MakeVoiceFile</CODE>, for SAPI4 voices it is=20
      <CODE>MakeVoiceFileSAPI4</CODE>. These subroutines take the =
following=20
      parameters:=20
      <P><PRE>MakeVoiceFile &lt;language&gt;, &lt;voice name&gt;, =
&lt;sample format&gt;, &lt;noise floor&gt;, &lt;lame parameters&gt;
MakeVoiceFileSAPI4 &lt;language&gt;, &lt;voice name&gt;, &lt;noise =
floor&gt;, &lt;lame parameters&gt;
</PRE>
      <P>
      <TABLE cellSpacing=3D1 cellPadding=3D1 border=3D1>
        <TBODY>
        <TR>
          <TH class=3DtwikiFirstCol =
bgColor=3D#99cccc><STRONG>Parameter</STRONG>=20
          </TH>
          <TH bgColor=3D#99cccc><STRONG>Description</STRONG> </TH></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>language</CODE> </TD>
          <TD>The language that the voice file is built for. This needs =
to be=20
            the same as the name of the .lang file, without the .lang =
extension.=20
            Of course, this should also match the language of the voice =
</TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>voice name</CODE> </TD>
          <TD>The name of the SAPI voice to use. Note that you need the =
name=20
            as known in Windows, which is not always obvious. If you =
don't know=20
            this, you can use the provided ListVoices.vbs VBScript. Run =
this=20
            from a command shell, with cscript. </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>sample format</CODE> </TD>
          <TD>(SAPI5 only) Defines the sample format that the TTS engine =
uses=20
            (mono/ stereo, sample rate, sample width). Use the =
predefined=20
            constants to select this. 16 bit mono settings are strongly=20
            recommended. The optimal sample rate depends on the TTS =
engine used.=20
            Best results are achieved if the sample rate matches the =
internal=20
            sample rate of the engine. For the Microsoft voices, this is =

            SPSF_22kHz16BitMono, and for AT&amp;T Natural voices it is=20
            SPSF_32kHz16BitMono. If you use another TTS engine, you'll =
need to=20
            experiment. </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>noise floor</CODE> </TD>
          <TD>The maximum sample value that will be treated as silence =
by the=20
            enhanced wavtrim tool. Not all TTS engines use digital =
silence, and=20
            the noise floor may even vary across different voices using =
the same=20
            engine, so this parameter needs adjusting. Convert an =
arbitrary text=20
            snippet into a .wav clip, load it into a sample editor, and =
check=20
            the beginning and/or end for the noise floor. The value is =
expressed=20
            as an absolute 16 bit integer sample value (0 dB equals =
32767).=20
        </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>lame&nbsp;parameters</CODE> =
</TD>
          <TD>The parameter string handed over to lame for compressing =
the=20
            .wav clips. See next table. </TD></TR></TBODY></TABLE>
      <P>Lame parameters example: <PRE>-V 4 -B 64 --resample 12 --scale =
0.6 --vbr-new -t -S
</PRE>
      <P>
      <TABLE cellSpacing=3D1 cellPadding=3D1 border=3D1>
        <TBODY>
        <TR>
          <TH class=3DtwikiFirstCol =
bgColor=3D#99cccc><STRONG>Parameter</STRONG>=20
          </TH>
          <TH bgColor=3D#99cccc><STRONG>Description</STRONG> </TH></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>-S</CODE> </TD>
          <TD>Be silent, i.e. don't write to the console. As the output =
of the=20
            lame command is neither seen nor stored, <STRONG>you'll =
always want=20
            this.</STRONG> </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>-t</CODE> </TD>
          <TD>Do not write lame tag. The lame tag would only waste =
space, so=20
            you should <STRONG>always set this.</STRONG> </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>--scale &lt;factor&gt;</CODE> =
</TD>
          <TD>Scale the input volume by &lt;factor&gt;. The factor 0.6 =
is=20
            recommended. Higher values make the voice UI louder, lower =
values=20
            make it more quiet. Don't use values &gt;1, or the voice =
will=20
            probably get distorted. </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>--vbr-new</CODE> </TD>
          <TD>Use VBR compression, new algorithm. Using VBR delivers =
good=20
            quality without wasting space, so you should <STRONG>always =
use=20
            it.</STRONG> </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>-V &lt;quality&gt;</CODE> =
</TD>
          <TD>Select the VBR quality. &lt;quality&gt; can assume a value =

            between 1 (best quality, largest file) and 9 (worst quality, =

            smallest file). The recommended value for speech is 4; you =
can go up=20
            to 6 if the voice file gets too large. Higher values lead to =

            noticeable compression artefacts. If you would need a =
setting above=20
            6 to get the voice file small enough, lower the resample =
frequency=20
            instead. </TD></TR>
        <TR>
          <TD =
class=3DtwikiFirstCol><CODE>--resample&nbsp;&lt;freq&gt;</CODE>=20
</TD>
          <TD>Resample the .wav input to &lt;freq&gt; kHz. Allowed =
values are=20
            48, 44, 32, 24, 22, 16, 12, 11 and 8. <STRONG>Always set=20
            this</STRONG>, to ensure all .mp3 clips use the same =
frequency. You=20
            will probably have to use relatively low values, because =
otherwise=20
            the voice file will become too large. If you need to go =
below 16,=20
            you'll need to set the -B parameter as well, because of some =
<A=20
            class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/MasLimitations">limita=
tions=20
            in the MAS</A> MP3 decoder chip which is used on Archos =
units. Do=20
            not use 11, for the sake of player owners (also due to the =
<A=20
            class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/MasLimitations">MAS=20
            limitations</A>)! </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><CODE>-B 64</CODE> </TD>
          <TD>Do not produce frames with a bitrate &gt;64 kbps. Set this =
when=20
            using resample frequency settings of 12 or 8. See above why. =

        </TD></TR></TBODY></TABLE>
      <P>
      <H3><A name=3DBuild_your_voice_file_s></A><A=20
      name=3DBuild_your_voice_file_s_></A>Build your voice file(s) </H3>
      <P>Now that you prepared everything, you are ready to try building =
your=20
      first voice file. Open a command prompt, change to your build =
directory,=20
      and start the build process with<BR><CODE>cscript =
MakeVoices.vbs</CODE>=20
      <BR>Be sure to use cscript.exe for running the script, not =
wscript.exe.=20
      The script contains some WScript.Echo statements, which would =
block as a=20
      message box if run with wscript.exe. That is the reason why you =
can't=20
      simply run this by double clicking, or you would need to register=20
      cscript.exe as your default VBScript interpreter. There is a =
Microsoft=20
      knowledge base article describing how to do this.=20
      <P>Be prepared that the build process can take rather long if you =
have to=20
      use a SAPI4 voice. SAPI4 voices are handled in realtime, so =
speaking the=20
      full vocabulary may take 15 minutes and longer. Sometimes SAPI4 =
voices do=20
      also produce dropouts, that's why SAPI4 is not recommended.=20
      <P>If all went well, you will now have one or more .voice files in =
your=20
      build directory. Check the size(s). If the file(s) is/are larger =
than 1.4=20
      MB, you'll need to adjust the lame parameters to produce (a) =
smaller=20
      file(s). Voice files that are larger than 1.4 MB may not load =
depending on=20
      how much buffer space is available on the box. Use a higher -V =
setting=20
      and/or reduze the sample frequency to achieve this.=20
      <P>If your voice file is small enough, you should now try it on =
your box.=20
      <P>
      <H3><A name=3DOptional_Adjust_the_pause></A><A=20
      name=3D_Optional_Adjust_the_pause></A>(Optional) Adjust the pause =
</H3>
      <P>The pause clip is special, in that it does neither get =
generated by the=20
      TTS engine, nor get trimmed for obvious reasons. The provided =
pause file=20
      is 300 msec long, but you can change it. The sampling frequency =
does not=20
      matter, because lame will resample it if needed (that's why I =
recommend to=20
      always set the --resample parameter), and resampling will never =
cause=20
      aliasing effects because the pause clip only contains digital =
silence.=20
      <P>
      <H3><A name=3DAdjusting_pronunciation></A>Adjusting pronunciation =
</H3>
      <P>If you test your voice file, you will most probably notice that =
some=20
      words are pronounced wrong. There is a mechanism provided in the =
script to=20
      adjust these words. You may have noticed (if not building one of =
the=20
      voices already known to the script), that it emits a warning that =
the=20
      voice is unknown. This is because you did not yet define a =
replacement=20
      table for such adjustments.=20
      <P>In order to create and use such a list, you need to edit two =
places=20
      within the script. First, add a function that creates such a list =
for your=20
      voice. The replacement list definition functions are located =
towards the=20
      end of the script. In order to start with an empty list, simply =
duplicate=20
      the very last function <CODE>Gen_default</CODE> and rename it. My=20
      observation is that all voices for one language of a specific =
engine tend=20
      to need the same adjustments, e.g. all German AT&amp;T voices can =
share=20
      the same function, so the suggested function name is=20
      <CODE>ATT_de_de</CODE> in this case. If you rename the function, =
you also=20
      need to rename the return variable name within the function to =
read the=20
      same.=20
      <P>Now you need to connect this function to the voice. Add a line =
to the=20
      <CODE>InitReplaceLists</CODE> subroutine. Refer to the lines that =
are=20
      already there to see how to do this.=20
      <P>If you try to build again, you should no longer get the warning =
about=20
      the voice being unknown. You can now add entries to the =
replacement list.=20
      The replacement list uses regular expressions, refer to the other =
lists=20
      how to do this. Adjust and rebuild until everything sounds as =
intended.=20
      <P>If you now have a nice .voice file, you may want to share it =
with other=20
      users by uploading it to the <A class=3DtwikiLink=20
      =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceFiles">VoiceFiles=
</A>=20
      topic, especially if you created a voice file for a language that =
is not=20
      yet supported. If possible, try to maintain your voice file, i.e. =
update=20
      it from time to time to reflect changes in the .lang file. If you =
had to=20
      update the .lang file first, consider sharing this as well (filing =
a patch=20
      if you don't have commit access). The .voice file may be of =
limited use=20
      without a current .lng file whch needs to be generated from your =
current=20
      .lang file.=20
      <P>If you added a new replacement list to the script, it would be =
nice to=20
      share this too. Simply upload the script to this wiki topic, =
replacing the=20
      previous version. The wiki uses attachment versioning, so previous =

      versions are always available.=20
      <P>Subsequent builds (when the .lang file has changed) are quite =
easy.=20
      Simply put the updated .lang file(s) into the build dir, and start =
the=20
      script again. From time to time you may need to adapt the lame =
parameters=20
      (if the .voice file becomes too large) or the replacement list (if =
a new=20
      word is pronounced wrong).=20
      <P>
      <H2><A name=3DUsing_Linux></A>Using Linux </H2>
      <P>Yet to be written by a Linux expert ;-)=20
      <P>
      <H2><A name=3DTools></A>Tools </H2>
      <P>
      <TABLE cellSpacing=3D1 cellPadding=3D1 border=3D1>
        <TBODY>
        <TR>
          <TH class=3DtwikiFirstCol =
bgColor=3D#99cccc><STRONG>Tool</STRONG> </TH>
          <TH bgColor=3D#99cccc><STRONG>Description</STRONG> </TH>
          <TH bgColor=3D#99cccc><STRONG><IMG height=3D8 alt=3DUPDATED=20
            =
src=3D"http://www.rockbox.org/twiki/pub/TWiki/TWikiDocGraphics/updated.gi=
f"=20
            width=3D56 border=3D0></STRONG> </TH></TR>
        <TR>
          <TD class=3DtwikiFirstCol><A=20
            =
href=3D"http://www.rockbox.org/twiki/pub/Main/VoiceBuilding/wavtrim.c"=20
            target=3D_top>wavtrim.c</A> </TD>
          <TD>Enhanced wavtrim tool, originally written by <A =
class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/JoergHohensohn">J=F6rg=
=20
            Hohensohn</A>. The enhanced version does not only trim =
digital=20
            silence, but scans the file from either end until it finds a =
sample=20
            with a higher value than the given noise floor value. Then =
it trims=20
            this end, leaving 10 msec of the silent part there in order =
to not=20
            cut away faint beginnings/ends. </TD>
          <TD>&nbsp; </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><A=20
            =
href=3D"http://www.rockbox.org/twiki/pub/Main/VoiceBuilding/wavtrim.exe" =

            target=3D_top>wavtrim.exe</A> </TD>
          <TD>Enhanced wavtrim tool, Windows executable. </TD>
          <TD>&nbsp; </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><A=20
            =
href=3D"http://www.rockbox.org/twiki/pub/Main/VoiceBuilding/voicefont.cpp=
"=20
            target=3D_top>voicefont.cpp</A> </TD>
          <TD>Voicefont tool, written by <A class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/JoergHohensohn">J=F6rg=
=20
            Hohensohn</A>. </TD>
          <TD>2005-01-31 </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><A=20
            =
href=3D"http://www.rockbox.org/twiki/pub/Main/VoiceBuilding/voicefont.exe=
"=20
            target=3D_top>voicefont.exe</A> </TD>
          <TD>Voicefont tool, Windows executable. </TD>
          <TD>2005-01-31 </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><A=20
            =
href=3D"http://www.rockbox.org/twiki/pub/Main/VoiceBuilding/_voice_pause.=
wav"=20
            target=3D_top>_voice_pause.wav</A> </TD>
          <TD>Pause .wav file (300 msec). </TD>
          <TD>&nbsp; </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><A=20
            =
href=3D"http://www.rockbox.org/twiki/pub/Main/VoiceBuilding/MakeVoices.vb=
s"=20
            target=3D_top>MakeVoices.vbs</A> </TD>
          <TD>VBScript for automated .voice building. </TD>
          <TD>2005-02-01 </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><A=20
            =
href=3D"http://www.rockbox.org/twiki/pub/Main/VoiceBuilding/ListVoices.vb=
s"=20
            target=3D_top>ListVoices.vbs</A> </TD>
          <TD>VBScript that lists all installed SAPI5 voices. </TD>
          <TD>&nbsp; </TD></TR>
        <TR>
          <TD class=3DtwikiFirstCol><A=20
            =
href=3D"http://www.rockbox.org/twiki/pub/Main/VoiceBuilding/ListVoices_SA=
PI4.vbs"=20
            target=3D_top>ListVoices_SAPI4.vbs</A> </TD>
          <TD>VBScript that lists all installed SAPI4 voices. </TD>
          <TD>&nbsp; </TD></TR></TBODY></TABLE>
      <P>
      <P>
      <TABLE class=3Dtwikibar cellSpacing=3D0 cellPadding=3D3 =
width=3D"100%" border=3D0>
        <TBODY>
        <TR bgColor=3D#d6e6f5>
          <TD vAlign=3Dtop><A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/edit/Main/VoiceBuilding?t=3D1150=
676582"><B>Edit</B></A>=20
            =B7 <A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding?raw=3Don=
">View=20
            raw</A> =B7 <A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/attach/Main/VoiceBuilding">Attac=
h</A>=20
            =B7 <A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/search/Main/SearchResult?scope=3D=
text&amp;regex=3Don&amp;search=3DVoice%20*Building%5B%5EA-Za-z%5D">Ref-By=
</A>=20
            =B7 <A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding?skin=3Dp=
rint">Printable</A>=20
            =B7 <A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/rdiff/Main/VoiceBuilding">Diffs<=
/A>=20
            | r1.33 | <A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/rdiff/Main/VoiceBuilding?rev1=3D=
1.33&amp;rev2=3D1.32">&gt;</A>=20
            | <A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding?rev=3D1.=
32">r1.32</A>=20
            | <A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/rdiff/Main/VoiceBuilding?rev1=3D=
1.32&amp;rev2=3D1.31">&gt;</A>=20
            | <A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceBuilding?rev=3D1.=
31">r1.31</A>=20
            =B7 <A=20
            =
href=3D"http://www.rockbox.org/twiki/bin/oops/Main/VoiceBuilding?template=
=3Doopsmore&amp;param1=3D1.33&amp;param2=3D1.33">More</A>=20
          </TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=3D0 cellPadding=3D3 width=3D"100%" border=3D0>
        <TBODY>
        <TR>
          <TD vAlign=3Dtop>Revision r1.33 - 05 Jun 2006 - 07:27 - <A=20
            class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/ArnaudDeBonald">Arnaud=
DeBonald</A>=20
            <BR>Parents: <A class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/DocsIndex">DocsIndex</=
A>=20
            &gt; <A class=3DtwikiLink=20
            =
href=3D"http://www.rockbox.org/twiki/bin/view/Main/VoiceFiles">VoiceFiles=
</A>=20
          </TD>
          <TD vAlign=3Dtop width=3D"40%"><FONT size=3D-2>Copyright =A9 =
1999-2006 by=20
            the contributing authors.</FONT> </TD></TR>
        <TR>
          <TD =
colSpan=3D2></TD></TR></TBODY></TABLE></P></TD></TR></TBODY></TABLE><A=20
name=3DPageBottom></A></BODY></HTML>

------=_NextPart_000_0006_01C6930C.A48B48C0
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.rockbox.org/rockbox100.png

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
TkSuQmCC

------=_NextPart_000_0006_01C6930C.A48B48C0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.rockbox.org/twiki/pub/TWiki/TWikiDocGraphics/updated.gif

R0lGODlhOAAIAMQAAP/////38v/u5P/l1//cyf+yh/+pev/cyP/Tu//Krf+6k/+pef+ga/+cZf+a
Yv+XXv+UWf+FQf+OT/+IRv+GQ/+FQv+CPf98NP97Mv97Mf93LP90JwAAAAAAAAAAAAAAACH5BAEA
AAAALAAAAAA4AAgAAAW64LYpAPBsDyCuW2KyYwkk4lLC4svq6x2/KdFDIcmdLo+K6FBiiC6lx+Oy
QaZOFYX2hVRuVL9TMIYwogABqi0gKiJkYvhGIgOi1SKSXVSZVu12NEMbNlFnhjtxQHmGYyspgEoM
AE4KB3+NcllbipJKEggJamB6mgonLWwwb4AvdKaoCTQsFwOkdTwik7NaSoWKuV+oK5MABwYYEQUC
PqUlDRbREAQlExkUJQQWGM8aDTIO0eIADRnmEDIhADs=

------=_NextPart_000_0006_01C6930C.A48B48C0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.rockbox.org/paypal-donate.gif

R0lGODlhPgAfAMQAADJXgRVBcMHN2k5uktHV2oiguLTE08jT3tfh6QAhWPb4+kRli+fs8KS3yp2w
xOPx93CMqeHn7VZ2mHyWsef1+u7x9GiDoiRIc7u7u+np6QY0ZiI2TZSnvQAAAOr3/P///yH5BAAA
AAAALAAAAAA+AB8AAAX/INdwZGmeaKquLFlYQ+HNdG3feK7vNlB8wKBwSCwaj8jhxfK5PZ5Qng4a
3T0K2AJn9sksiYKAZqwJLBxJIuNCHgMmFaNAAwAEAMAK4WubXAyABg4WGhYzFIg8BgEOgQ0QdxQe
iJIzEwAVCgMSM3pfQwtMQw2FC3UAMQOqAxAMEqp1RAgBm6cLHJpMCgAceXtMNQ8BDR8MCwMIHxUX
ARZZEmOsA4UBEBAXEkAWCwZA085YFmYXvQgaAp2/QwcBBB8GCQloFQE/QgXyHwjxxBEBvQw0JIDg
bcAQA2MOfHAQIIgnYDQ4XFCwcAnFA4UkXADg7sDADxE0LPCWIJkAVBE+/ygwY2FjNwYBAlCEQePh
EBiyACTwYeAAgw8cEhhcJuBDgwQX4gipYAHphJ4/MRr84MOhuhoXfigQIOBRgAT2DnT7IGGnAgXE
1ggFckCAgQIXEkigGKFBHAdgQQYwUFNdkJBFMZY5NvHDhLW7FgT4qS3AhQnK2NyBluxogDhNuy1K
6YvPjAaXgV44gMBDAzwfDjiIM4uhwg9zCgQoas4AAgpzUkbgwJnZz0s1bAaBsICBq6mpNaxWcMBn
g9EaiO2yMAcBA7gOq2WKYIABRgDGFxC06tnDgjYTakDQcIENmQUSAFCcEADBejKcaJBy3KZ/g+B+
AUEAV1wpFQQBDjggQNZbB0yggTvmlEOgAJwFgUCCPU1IIEXkQSTFDbNkVQAAC1Ty4YnCpVEEB6eQ
mIyKMHbm4Yk01qhDijHmqGMRNtno4499fYJEB0R2EESRQBiZ5JFEJlmkkU8m0eMOHdBQZZUzXInl
llZ2mSWKAR6h5AdQHknmmUo+OeaaTUp5FZVdYunBlVly+eWdc4IppJhIOpmmmWcuKSiZfR4xJZCI
ngjEBUNl4OijkEYq6aSUVmppBggYsFGmGHTq6aeghirqqKSW2ikHG7S3waqsturqq7DGKuusroYA
ADs=

------=_NextPart_000_0006_01C6930C.A48B48C0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.rockbox.org/style.css

BODY {
	MARGIN: 0px; COLOR: black; BACKGROUND-COLOR: #b6c6e5
}
HTML {
	MARGIN: 0px; COLOR: black; BACKGROUND-COLOR: #b6c6e5
}
H1 {
	FONT-WEIGHT: bold; FONT-SIZE: 150%; FONT-STYLE: normal; FONT-FAMILY: =
sans-serif; TEXT-DECORATION: none
}
H2 {
	FONT-WEIGHT: bold; FONT-SIZE: 130%; FONT-STYLE: normal; FONT-FAMILY: =
sans-serif; TEXT-DECORATION: none
}
H3 {
	FONT-WEIGHT: bold; FONT-SIZE: 110%; FONT-STYLE: normal; FONT-FAMILY: =
sans-serif; TEXT-DECORATION: none
}
DIV.h5 {
	FONT-WEIGHT: bold; FONT-SIZE: 110%; FONT-STYLE: normal; FONT-FAMILY: =
sans-serif; TEXT-DECORATION: none
}
.newsdate {
	FONT-WEIGHT: bold; FONT-SIZE: 110%; FONT-STYLE: normal; FONT-FAMILY: =
sans-serif; TEXT-DECORATION: none
}
BODY {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
P {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
DIV {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
TD {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
TH {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
TR {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
FORM {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
OL {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
UL {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
LI {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
INPUT {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
TEXTAREA {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
SELECT {
	FONT-SIZE: 13px; FONT-STYLE: normal; FONT-FAMILY: sans-serif; =
TEXT-DECORATION: none
}
LI {
	MARGIN-TOP: 3px
}
P.ind {
	MARGIN-LEFT: 3em
}
A {
	TEXT-DECORATION: underline
}
PRE {
	OVERFLOW: auto
}
.bgbox {
	BORDER-LEFT-WIDTH: 1px; BORDER-LEFT-COLOR: #000000; =
BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; =
BORDER-RIGHT-COLOR: #000000
}
.menulink {
	COLOR: #f0f0f0; LINE-HEIGHT: 140%
}
.menutext {
	FONT-SIZE: 7pt; COLOR: #f0f0f0
}
TD.building {
	BACKGROUND-COLOR: #d6d6f5; TEXT-ALIGN: center
}
.buildok {
	BACKGROUND-COLOR: #00ff00
}
.buildwarn {
	BACKGROUND-COLOR: #ffff00
}
.buildfail {
	BACKGROUND-COLOR: #ff8080
}
.gccwarn {
	BACKGROUND-COLOR: #ffff00
}
.gccerror {
	BACKGROUND-COLOR: #ff8080
}
.faqq {
	FONT-WEIGHT: bold; FONT-SIZE: 110%
}
.faqa {
	MARGIN-LEFT: 2em
}
PRE {
	FONT-SIZE: 9pt
}
.rockbox {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.changetable {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.bugs {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.requests {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.patches {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.dailymod {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.buildstatus {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.archive {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.buttontable {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.changesummary {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.tools {
	BORDER-RIGHT: #ffffff 2px outset; BORDER-TOP: #ffffff 2px outset; =
BORDER-LEFT: #ffffff 2px outset; BORDER-BOTTOM: #ffffff 2px outset
}
.listtable TR {
	VERTICAL-ALIGN: top
}
.filechange {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-WEIGHT: bold; =
PADDING-BOTTOM: 4px; PADDING-TOP: 4px; BACKGROUND-COLOR: #c6d6f5
}
.buildstatus TH {
	VERTICAL-ALIGN: top
}
.rockbox TD {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px; BACKGROUND-COLOR: #c6d6f5
}
.changetable TD {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px; BACKGROUND-COLOR: #c6d6f5
}
.bugs TD {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px; BACKGROUND-COLOR: #c6d6f5
}
.requests TD {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px; BACKGROUND-COLOR: #c6d6f5
}
.patches TD {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px; BACKGROUND-COLOR: #c6d6f5
}
.archive TD {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px; BACKGROUND-COLOR: #c6d6f5
}
.buttontable TD {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px; BACKGROUND-COLOR: #c6d6f5
}
.tools TD {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px; BACKGROUND-COLOR: #c6d6f5
}
.fixed TD {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px; BACKGROUND-COLOR: #aae8aa
}
.bad TD {
	BACKGROUND-COLOR: #f0c0c0
}
.feature {
	FONT-WEIGHT: bold
}
TD.fgood {
	BACKGROUND-COLOR: #aae8aa
}
TD.fbad {
	BACKGROUND-COLOR: #f0a0a0
}
TD.toolscat {
	BACKGROUND-COLOR: #b6c6e5
}
.vc_diff_nochange {
	BACKGROUND-COLOR: #ffffff
}
.vc_navheader {
	BACKGROUND-COLOR: #7897cb
}
.vc_diff_chunk_header {
	BACKGROUND-COLOR: #90afe3
}
.twikiDiffLineNumberHeader {
	BACKGROUND-COLOR: #d6e6f5
}
.twikiDiffChangedHeader {
	BACKGROUND-COLOR: #d0ffd0
}
.twikiDiffDeletedMarker {
	BACKGROUND-COLOR: #e81412
}
.twikiDiffAddedMarker {
	BACKGROUND-COLOR: #25e914
}
.twikiDiffUnchangedText {
	BACKGROUND-COLOR: #b6c6e5
}
.twikibar {
	BORDER-RIGHT: white 2px outset; BORDER-TOP: white 2px outset; =
BORDER-LEFT: white 2px outset; BORDER-BOTTOM: white 2px outset
}
.bstamp {
	TEXT-DECORATION: none
}
.bstamp:hover {
	TEXT-DECORATION: underline
}
.blink {
	TEXT-DECORATION: none
}
.blink:hover {
	TEXT-DECORATION: underline
}
.devcon {
	FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: #ff0
}
.sponsor {
	FONT-SIZE: 7pt
}

------=_NextPart_000_0006_01C6930C.A48B48C0--
