The following is a summary of the steps I have taken in order to add
voice and lipsync to a completely custom-made dialog. The game engine is pretty strict in this regard and requires that each step be followed exactly to get it to work properly.
How to Add Voice and Lipsync to a Homemade Dialog
Step 1. Getting the Modprefix
Determine the 5-character module name of where your dialog will
take place. If you do a "whereami" cheat code in-game this is the part
of the Module Name that starts with 'm' followed by 2 numbers and 2
letters. (Example: if whereami shows module name kas_m23aa then m23aa
is the part you're looking for.) If you are using a custom-made mod, it
is the first 'm' followed by 4 characters. I will refer to this 5 char
name as the Modprefix
for lack of a better name.
Step 2. Decide on the VO_ID for the NPC
The VO_ID is a 4-char + 2-number name. The choice here is purely
arbitrary. This VO_ID will be entered into your .dlg file in the VO_ID
field. It will also be used as the name of a subfolder. I will refer to
this a the VO_ID
Step 3. Record your .wav files
Use whatever recording software you like. Save it as a .wav file in
mono, 22kHz, 8-bit signed. It probably doesn't matter much but those
specs will keep your files relatively small. The .wav file does not
need any other special processing.
Step 4. Name your .wav files
This part is important. You must name your file according to this
specification (called the VO_Resref
'n' + Modprefix + VO_ID + 3-digit index + '_'
Append '.wav' to the end of the name above. The 3-digit index can be
any 3-digit number you like.
For example: if the Modprefix is M02AD and the VO_ID chosen is ALIE03
then nm02ADALIE03006_.wav would be an acceptable name.
Step 5. Modify your .dlg file
You need to make two modifications to your .dlg file at this point. The
field must equal the VO_ID field specified in step 2. Secondly,
field in the EntryList for dialog must be set equal to the
VO_Resref in step 4 (no extension). Each Entry needs its own VO_Resref
to be specified.
Step 6. Extract appropriate .lip files from pre-existing mod files
We cannot create new .lip files, so we must borrow from the game. These
are stored inside MOD files in the Lips folder. Each MOD file is named
with the following convention:
Copy one of these files into the Modules folder. Open up KotOR Tool and
browse the ERF tree -- you should see the file that you just copied.
Open it up and extract a couple .lip files for your use. You'll notice
that they follow the VO_Resref
naming convention described in step 4.
Step 7. Rename a .lip file
Rename the .lip file to the same name as your .wav file in step 4 but
keep the .lip extension. In our example above, we would name it
"nm02ADALIE03006_.lip". Repeat this step for each .wav file that you
have. If you want to save time and don't care much about finding the
perfect lipsync, just make copies of the first file and rename it for
each .wav that you have.
Step 8. Package your new .lip files into a MOD file.
Open up KotOR Tool and choose File:ERF Builder. The filename that you
want to build is
and should be put in the Lips folder. Choose MOD from the list of file types. Click the Add button and select all your new .lip files then Build ERF.
Step 9. Put the .wav files in the right place
Open up the Streamwaves folder. Create a new folder and name it the
same as your Modprefix
. Create a subfolder in that folder. Name it
the same as your VO_ID
. Put your .wav files in that subfolder.
Step 10. Put your .dlg file in the right place
That is, put it in the Override folder or package it into a MOD file for
the Modules folder.