Jump to content

Lost NPC voices, How to get them back


Recommended Posts

Okay! Sorry for the delay, I have (again) managed to accumulate more things to do that I actually have the time to... well... do. Hehe. :blush: But this was a short check, actually, a lot shorter than I expected even! Literally a ten-minute or so one. The only aim was to check how to create a new race, then convert an NPC to that custom race and then fix missing voice+lipsync. I will write as much of it down as I think is reasonable, I have some time now to do it and maybe someone will find it useful.

 

The test setup (for reference only, everyone can use whatever they want):

  • Oblivion with OBSE 21 on Windows 10 and a ton of mods piled on it (I do not have a separate clean mod development installation... apparently some people have)
  • TES Construction Set with Construction Set Extender (version 8.0) for race and NPC editing and tracking down voice+lipsync files
  • Mod Organizer (version 1.3.11) for file organisation, to keep the project files truly under control, and in one single place
  • BSAopt (version Beta 2.0.0, the 16 December 2012 one) for BSA archive browsing and extraction - I also use it for creating BSA archives for my Oblivion and Skyrim mods
  • Elys Universal Silent Voice for making voiceless+lipsyncless dialogue actually visible, I have also toggled on dialogue subtitles to see that a line is actually delivered by an NPC

The first step: creating a new custom race. This is actually quite fast when duplicating existing one. One will need to load the Oblivion.esm when/if duplicating a vanilla race. For testing purposes, I duplicated the Imperial race to a new race record, assigned the editor ID "GreenBanana" to it and also assigned the name "Green Banana" to it. To duplicate and rename a race

  • in the Construction Set, in the menubar at the top, open Character -> Race...
  • right-click the race you want, select Duplicate, an entry like RaceCOPY0000 will appear
  • slowly double-click the new race's editor ID (the one without spaces, first column), then enter a new editor ID for the race, in this case, I picked "GreenBanana", then apply changes
  • select the race, navigate to the Text Data tab on the right side of the race edit window, then type a new name for the race in the name box, then apply changes
  • in the General Data tab, one may choose another race to use as the base for all voice - this is the base only and it is usually handy to select something smart for this to avoid having to move as much dialogue (like common taunts or greetings for all NPCs of a race)!
  • the race should now have been created and configured, you may close the race window

The second step: converting an NPC to that new race. This is even faster, I picked Angalmo, the High Elf at Chorrol Mages Guild. Changing the race of an NPC happens by editing the base record in the Construction Set:

  • find the base record, the one located in the Object Window of the Construction Set, for Angalmo it is under Actors -> NPC -> HighElf (the current race editor ID) -> Male, the record has an editor ID of "Angalmo" and a form ID of 000234BB
  • double-clicking the base record will open a popup window
  • in the window, select the new race (by editor ID) as the race for the actor
  • click OK

Since I created a duplicate of the Imperial race and selected the Imperial race as the base voice provider and because Angalmo was not originally of the Imperial race, then this will be a handy test, since Angalmo will not be able to deliver his custom greetings with the Imperial voices! The custom greetings of Angalmo are only available under the High Elf race and voice set.

 

The third step: save the plugin and activate it. Everyone knows how to do this. Then load the game and navigate to Chorrol Mages Guild. The fastest way is through console (and make sure NOT to do this from the Shivering Isles, otherwise you need to toggle the "player in SI" flag):

coc ChorrolMagesGuild

Find Angalmo. He should look like an Imperial now, if you duplicated the Imperial race at step one. If you duplicated another race, then Angalmo will look like that other race. Enter dialogue, he should deliver a silent greeting line without lipsync or anything, with the contents being:

 

Excuse me. My name is Angalmo. Can I help you?

 

This is fine. At this point, Angalmo uses the custon race, but has lost his voice as a result. This is where the topic started for those NPCs and your custom race! :smile:

 

The fourth step: find information about the silent line the NPC just delivered. This time it happens through the Construction Set. The custom race plugin needs not to be loaded, the idea is to hunt for the vanilla dialogue. You will need to load Oblivion.esm for example.

  • the toolbar below the menubar in the CS has a speech ballon-like icon in it, clicking the icon opens a dialogue filter window to filter all dialogue in the game (as in, added by the currently loaded mods)
  • there is the Filter (odd name...) dropdown menu at the top left corner - use this to select Angalmo, the window will then filter dialogue so that only the lines Angalmo can deliver will be visible
  • the Topics selection (selected by default) on the right should now have become considerably less crowded, and should have a topic named GREETING in it (in caps, yes) - this is the topic from which lines will be delivered when initiating dialogue with an NPC, the starting line of an NPC of sorts
  • select the GREETING topic, and within it (in the list further right), there should be a line with contents of the Info column that match the actual words by Angalmo, that is, "Excuse me. My name is Angalmo. Can I help you?" - this set of lines only has the first line, the lower list will list all individual lines in this set
  • the Quest column will reveal that the quest for that set of lines is NQDChorrol
  • the topic is called GREETING
  • expanding one of the columns in the upper list will reveal that the form ID of the line set is 00024C7A
  • the line we are interested in is the first one (1), in the lower list, and is currently the only one

This will make it easy to locate the actual files. We know the following:

  • original NPC race: High Elf
  • original NPC gender: M (stands for male)
  • line set owner quest: NQDChorrol
  • topic editor ID: GREETING
  • line set form ID (the upper list, expanding the collapsed column after Info): 00024C7A
  • line number within the line set (the lower list, when selecting the line set): 1

All of those will be used when tracking down the original files to bring back voice and lipsync.

 

The fifth step: acquiring the original voice+lipsync file pair for that line. The voice+lipsync files for the original game have been packed in two archives:

  • Oblivion - Voices1.bsa
  • Oblivion - Voices2.bsa

The first one seems to contain races from Argonian to High Elf, and the second one the rest. I cannot remember what the second one contains, exactly, but the topic we are after seems to be in the first one. I use BSAopt to open and browse the archive:

  • open BSAopt, at the top right there is a button that says Browse, clicking it will open a file selector, navigate to Oblivion\Data and select Oblivion - Voices1.bsa
  • BSAopt will load the archive and display a tree view of the contents at the top white space
  • tick the "show recursive" box below the upper tree view, then select the root node indicated by a slash /
  • the lower space will receive a list of all files in the archive, everything is selected by default, which we do not want - we are only after two files
  • hit the red button to unselect everything
  • because the original race was "High Elf" and gender "M", navigate, in the upper tree view, to "\sound\voice\oblivion.esm\high elf\m" and select the "m", the lower list will update

This is where the line set form ID, quest and all that steps in. The format seems to be, for files

QuestEditorID_TopicEditorID_LineSetFormID_LineNumberWithinLineSet

with extensions being .mp3 for the actual voice and .lip for lipsync files. Both voice and lipsync are needed. In our case, filling in the info, the files would be named

NQDChorrol_GREETING_00024C7A_1.mp3
NQDChorrol_GREETING_00024C7A_1.lip

but BSAopt seems to like lowercase so it will be lowercase. But it does not matter, just find those two in the BSA archive, under "high elf\m", and tick them. The full paths being:

\Sound\Voice\Oblivion.esm\High Elf\M\NQDChorrol_GREETING_00024C7A_1.mp3
\Sound\Voice\Oblivion.esm\High Elf\M\NQDChorrol_GREETING_00024C7A_1.lip

When you only have those two ticked (as in, ticked = marked for extraction), you can click the "unpack" button and BSAopt will unpack those two files for you. By default, the target directory is a folder named "out" in the same place as your BSAopt executable. The extracted files will retain their original path, so that when the path originally was relative to Data folder

Oblivion\Data\Sound\Voice\Oblivion.esm\High Elf\M\NQDChorrol_GREETING_00024C7A_1.mp3
Oblivion\Data\Sound\Voice\Oblivion.esm\High Elf\M\NQDChorrol_GREETING_00024C7A_1.lip

but without the Data, because they were in BSA, the resulting path will, by default, be

<your_BSAopt_exe_folder>\out\Sound\Voice\Oblivion.esm\High Elf\M\NQDChorrol_GREETING_00024C7A_1.mp3
<your_BSAopt_exe_folder>\out\Sound\Voice\Oblivion.esm\High Elf\M\NQDChorrol_GREETING_00024C7A_1.lip

and now you have the files! Of course anyone can use whatever tools they want, BSAopt is just handy for precisely extracting two files out of a giant archive. Just remember to first tick "show recursive", then unselect all, and then only select the ones you want to extract, or else BSAopt will have everything marked for extraction (which is the default behaviour) and will extract the entire BSA archive, which is a LOT of files! :wacko: But then again, you might need to find quite a lot of files so maybe you can extract both Oblivion voices archives completely, too, and then pick the files.

 

The sixth step: adjusting the voice+lipsync file paths to accommodate your changes! This is actually universal, when trying to use existing vanilla dialogue for something new. The new path will follow the exact same format as the old one, except that the race name will be different this time. As in:

  • (unchanged) default root voice file path: \Sound\Voice\
  • (unchanged) plugin name from which the dialogue line set(s) (I think) come from: Oblivion.esm
  • race name, the new race this time (name, NOT EDITOR ID - the name!): Green Banana (my race name, yours is different)
  • (unchanged) NPC gender (either M or F): M
  • (unchanged) topic line set owner quest: NQDChorrol
  • (unchanged) topic line set form ID: 00024C7A
  • (unchanged) the line number of the line within the line set: 1

So the final path would be (for both files) with the new race only, old everything else:

\Sound\Voice\Oblivion.esm\Green Banana\M\NQDChorrol_GREETING_00024C7A_1.mp3
\Sound\Voice\Oblivion.esm\Green Banana\M\NQDChorrol_GREETING_00024C7A_1.lip

Adding those to the mod, then making sure they are installed, and everything should be fine. Full path:

Oblivion\Data\Sound\Voice\Oblivion.esm\Green Banana\M\NQDChorrol_GREETING_00024C7A_1.mp3
Oblivion\Data\Sound\Voice\Oblivion.esm\Green Banana\M\NQDChorrol_GREETING_00024C7A_1.lip

If you were to also change the gender, then you would need to change M to F, for example! Well, it would sound awkward in-game indeed, as the voice would not change, but let us nevermind that! :D

 

The seventh step: checking! With the race mod active, and with the dialogue line(s) correctly in-place, having another chat with the test NPC, in this case, Angalmo, would result in the "Excuse me..." line being voiced and lipsynced again, with Angalmo having the new race.

 

However there are some issues still:

  • that method only works for having NPCs retain their full original voice and lipsync - if you convert multiple NPCs from different races to your custom race, then they will all speak with their original voices, and your race will not actually have a unique voice at all, but instead be a mix of all existing voices
  • because of that above, an NPC might actually even shout standard combat dialogue in the base voice supplier race's voice for your race (selected in the Race edit window) while switching to another voice when speaking unique dialogue - the same sudden change goes for rumours vs custom dialogue
  • you would need to manually hunt down, extract and move all custom, unique dialogue for all converted NPCs and even after that, the result would still be an inconsistent mix for each NPC as described above

If you have any questions or other, just ask. It is getting late, I usually make lots of mistakes, and this is a long post, so chances are there is something inconsistent or otherwise odd or off in there. Also everyone else feel free to point out any issues! :smile: I will see about uploading the test mod when I have finished my website and finally have an easy, reliable, ad-free and first of all my very own private file hosting service on an old laptop.

 

Edit: The editor leaves huge spaces between lines in a list for me, for some reason. Odd. I tried to get rid of them but it does not seem to work...

 

Edit 2: The huge spaces seem to finally be gone after a huge edit battle... :sweat:

Edited by Contrathetix
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...