This thread was dedicated to inserting the SoMI Special Edition voicework into the original CD version of the game, creating the "Talkie" version that never was. Earlier discussion can be found in the Hack Ideas thread, and a similar Monkey Island 2 Talkie thread is here.

F.A.Q.:

Q: What is the aim of this project?
A: The aim is to put the voices from the Special Edition into the original PC CD version of the game, like a classic talkie release (like DotT, Fate, etc.). We are not simply making the voices work in the Classsic mode of the SE.

Q: Are you including the narrator's lines?
A: I, and I'm sure many other fans, felt that the narrator in the SE is too goofy and over-the-top. More importantly, it's totally unnecessary. For that reason, I don't intend to include the narration. If there's enough demand, we could possibly put together a version with him included though.

Q: Will this work for people who don't have the Special Edition?
A: No. You will need the Special Edition game in order to access the voice files. For legal reasons we cannot distribute the voice files (or any other game files).

Q: Will this work for people who don't have the DOS CD version?
A: Yes. There is a complete copy of the required game data files and CD audio track inside the SE files, which can be easily extracted.

Q: If I use the CD version game files embedded in the Special Edition, will the SE bugs be present?
A: No. The bugs in the Special Edition Classic Mode come from the new interpreter, not the actual data files.

Q: Since it's for the DOS CD version, will it actually run in DOS?
A: It does, except that CD audio is not supported, which is a limitation of native SCUMM V5. However, the patched game adds support for MT-32 and General MIDI.

Q: Do you have any other features planned (like including SE music, "fixing" the VGA version, etc.)?
A: The current patch fixes quite a lot of bugs, some which were introduced with the enhanced CD, and even some present in every version of the game available. The patch converts both soundtracks ready to be used with ScummVM.

Last edited by Espiox; 07-05-2013 at 07:53 PM.
Reason: Sincere apologies for my vanishing act, and many, MANY thanks to LogicDeLuxe for shepherding this project to completion.

Would it be possible to offer this thing as a "patch"? That way only people who own the SE will be able to pull this off, and there's no piracy involved (which would occur when sharing the actual speech files). Maybe a batch-file that pulls the speech files out of the SE's PAK, converts them accordingly (and possibly combines split lines into a single file) and re-inserts them into the CD-version of the game using ScummSpeaks.

This would allow to share this project without running into legal trouble.

And how did you create the mappings? All manually or did you use the information from speech.info to generate a basic layout?

It would be good to know how many exceptions there are. I'm all for an automated process which would ease redistribution. It's not a real problem to join multiple wav files for example given some previous definition (or even a heuristic that matches multiple lines).

Just please, for the love of all things good, do not add V/O on the narration... it sounds so horrible that I can't imagine anything worse.

Don't worry, I have no intention of adding the Narrator to this version.

Quote:

Originally Posted by jott

Which format are you using? Ogg, FLAC or mp3?

And how did you create the mappings? All manually or did you use the information from speech.info to generate a basic layout?

It would be good to know how many exceptions there are. I'm all for an automated process which would ease redistribution. It's not a real problem to join multiple wav files for example given some previous definition (or even a heuristic that matches multiple lines).

I'm using mp3 right now.

I'm using the info from speech.info to find the right audio file and then I'm matching it to the text pulled from the CD version (using scummtr) manually using ScummSpeaks.

Seeing as the classic version included in the Special Edition is quite buggy, I for one am really happy that this project covers the dos version of the game.
Good luck with your work Espiox, really hope it goes well.

Some lines of speech are broken down into two or three audio files (eg. "Yikes! / Don't sneak up on me like that!" or "Ah...yessir... / --yech-- / ...sure does at that."). ScummSpeaks only seems to allow one audio file per line of text. I've tried pasting the audio files together in Audacity but ScummSpeaks won't let me use the file.

That's easy to solve. Just insert them like this:
Original scummtr output:

Quote:

Re-elect Governor Marley.\xFF\x03"When there's only one candidate, there's only one choice."

Changed to a talkie version:

Quote:

\xFF\x0A\x01\x00\xFF\x0A\x00\x00\xFF\x0A\x0a\x00\x FF\x0A\x00\x00Re-elect Governor Marley.\xFF\x03\xFF\x0A\x02\x00\xFF\x0A\x00\x00\xFF\x0A\x0a\x00\x FF\x0A\x00\x00"When there's only one candidate, there's only one choice."

Works fine with scummtr. Though, unfortunately scummspeaks doesn't handle any extra voice samples within the line.
If your tool could also just build the monster.so3/sog/sof by itself, we don't need scummspeaks for this.

EDIT:

Quote:

Originally Posted by Silvor

I for one am really happy that this project covers the dos version of the game.

However, it would be ScummVM only. The native DOS interpreter plays CD audio and can't load voice samples at the same time.

Thinking of this, would it be possible to replace CD audio with the MIDI tracks of the floppy version? That would make a true DOS talkie CD possible.

Seeing as the classic version included in the Special Edition is quite buggy, I for one am really happy that this project covers the dos version of the game.

Wait, no, this is wrong. Espiox mentions in the op that he is working on the CD version of the game, and that one is exactly identical to the classic one used in the SE version.

Edit: By the way, good luck with the project Espiox!

From what I understand you are doing work similar to the Monkey Island Speech Project, so you could avoid much work if you got them to help you with issues they have already resolved.
Also, I think jott is right. It would really help you, if you came up with a script or programm to do most of the work automatically for you, because the manual way sounds a little too time consuming.

Wait, no, this is wrong. Espiox mentions in the op that he is working on the CD version of the game, and that one is exactly identical to the classic one used in the SE version.

There's some inventory graphics that's switched up in the Sepcial edition (both classic and enhanced) and also the music on the classic version is bugged as well, like the voodoo lady music keeps on playing after you exit the voodoo house.
Belive me I've experienced those things first hand.
It also seems that the classic version in the Special edition runs more choppy than the regular dos version ever did.

If there was any way this could run without scummvm that would just be amazing. But if scummvm is the only way to go so be it.
I always prefer to use the original dos versions of the games myself.

Here is a little tool that looks up strings from the speech.info and a mi1.txt (scummtr.exe -w -g monkeycdalt -of mi1.txt -H) in the same dir and outputs a "match.bat" with "ren sample.mp3 linennumber_sample.mp3". It splits up multiple lines (\0xff\0x03).

LogicDeLuxe: I tried your method (inserting the extra speech) but with the Cobb dialogue I tried, the two sections end up overlapping, because the subtitles move on before Cobb is done with the first bit.

With the file combining method, the speech doesn't overlap, but the subtitles still move on before he gets there.

If there was any way this could run without scummvm that would just be amazing.

You could try the interpreter version from the Fate of Atlantis demo. Rename it to monkey.exe. It is compatible to the Monkey Island resources. Unfortunately, there is an inconvenient script in Monkey Island checking for the CD, which means, you can't replace the original tracks with the special edition's, since they differ in their playing times.
Another problem might be the savegame menu. Not all versions of the interpreter have the ability to select a path on a different drive, which is required for SCUMM V5 CD versions. I didn't check.

You could try the interpreter version from the Fate of Atlantis demo. Rename it to monkey.exe. It is compatible to the Monkey Island resources. Unfortunately, there is an inconvenient script in Monkey Island checking for the CD, which means, you can't replace the original tracks with the special edition's, since they differ in their playing times.
Another problem might be the savegame menu. Not all versions of the interpreter have the ability to select a path on a different drive, which is required for SCUMM V5 CD versions. I didn't check.

I'll give that a shot if this project gets finished and released, thanks.

Here is a little tool that looks up strings from the speech.info and a mi1.txt (scummtr.exe -w -g monkeycdalt -of mi1.txt -H) in the same dir and outputs a "match.bat" with "ren sample.mp3 linennumber_sample.mp3". It splits up multiple lines (\0xff\0x03).

Try again with an updated version: http://helicoid.de/scumm/mkspeech.zip
In the end there need to be some more tweaking done like replacing " => ' and ^ => ... (or vice versa) and join multiple lines on an \xFF\xDD\x64\x00.
Ultimately it should directly generate the monster.sou I guess (which shouldn't be that hard to do).

P.S.: As mentioned this is more of a hack than a useful utility. It's just to show how easy you can generate a mapping from the speech.info to the original lines.

EDIT: It looks like this project requires somebody with a little more coding know-how than me at it's wheel. I couldn't even code a "Hello World" app, yet this project needs a tool that can merge audio files, and generate the MONSTER.SOU file. I'm happy to help out and supply info from what I've done so far though, if anybody else wants to finish this.

LogicDeLuxe: I tried your method (inserting the extra speech) but with the Cobb dialogue I tried, the two sections end up overlapping, because the subtitles move on before Cobb is done with the first bit.

I don't know anything about the lip sync entries. I don't think scummspeaks generates any meaningful data for them. Maybe tweaking those could solve this issue.

Combining samples is an option with slightly off subtitle sync, right. Another side effect would be the need for some duplicated. There are some multi-sample-lines which have only some of the samples in common with other lines. Those needs to be duplicated with this method. Those aren't too many lines, though.

The best thing would be a method which automatically could decompile the complete game, patch the scripts to divide those multi-sample-lines in individual speak events, and recompile the entire game.

Too bad, there is no such convenient tool like Deutex for Doom, which not only extracts all resources in individual files (like scummtr does), but also converts them to usable formats and back so that a wide base of existing software can be used to modify them.

The Speech Project hacks that cocomonk22 sent me separated the alternate speech lines (see the first bullet in the o.p.). I guess it's possible that a similar method could be used to separate the dialogue lines?

Reading your opening post, one might get the impression, that you actually need both, the SE and the DOS CD, which surely is not the case. Thus, you might add this to the FAQ:
Q: Will this work for people who don't have the DOS CD version?
A: Yes. There is a complete copy of the required game data files and CD audio track inside the SE files, which can be easily extracted.

and maybe this:
Q: Since it's for the DOS CD version, will it actually run in DOS.
A: No. The DOS version requires CD audio tracks and the game data on the same CD, but you can't access CD audio and speech samples at the same time.

Other than that, I think the best way would be to proceed in a fully automated way and eventually add some configuration files for fine-tuning and fixing bugs.

For most parts this does not sound complicated at all, as most information and code is available already.
It just boils down to
1) Extract samples from Speech.xwb and convert them to mp3 (or better ogg because of mp3 license issues). => Already possible with unxwb + lame/oggenc
2) Extract strings from MONKEY1.00x using scummtr => Just invoke the tool
3) Process scummtr output and match it to the sample names in speech.info => Nearly done, needs minor tweaks
4) Merge samples in monster.so? and output processed strings => Format is quite trivial so not a big task
5) Write strings back to MONKEY1.00x with scummtr => Just invoke the tool

For the multiple variations, I had to rewrite the game code in those sections so that it would output a full line based on the combination of multiple random number generators. This way the output appears to the user the same as the normal version of MI, but when you use scummtr to output the text, you will see all the new lines added to the end of the file. Some line orders were also changed.

Tools I used were a text editor, a hex editor, scummtr, descumm, Scummbler, ScummPacker, ScummSpeaks, and SCUMM Image Encoder. I also had some help from jestar jokin who wrote those last 4 tools.

Reading your opening post, one might get the impression, that you actually need both, the SE and the DOS CD, which surely is not the case. Thus, you might add this to the FAQ:
Q: Will this work for people who don't have the DOS CD version?
A: Yes. There is a complete copy of the required game data files and CD audio track inside the SE files, which can be easily extracted.

and maybe this:
Q: Since it's for the DOS CD version, will it actually run in DOS.
A: No. The DOS version requires CD audio tracks and the game data on the same CD, but you can't access CD audio and speech samples at the same time.

Thanks, I've added those to the o.p. along with a Q about the bugs in the new SE interpreter.

Quote:

Originally Posted by SyntheticGerbil

Also is the SE music coming over as well? or maybe a way we can choose?

The music is a relatively simple task compared to the speech, near as I can tell. It's probably just a case of renaming the SE music tracks to match the classic tracklist. When the speech is done, I'll put the instructions for changing the music up there with it for those who want them.

I think the ultimate batch-file would contain a few questions first, including music replacement yes/no, narrator inclusion yes/no, Spiffy inclusion yes/no and so forth (I don't know if that last one is happening though).

And even better than having it just as a batch file would be a nice GUI for it... although of course I've got no idea how to do that.

A: The DOS version requires CD audio tracks and the game data on the same CD (...).

Quote:

Originally Posted by LogicDeLuxe

Unfortunately, there is an inconvenient script in Monkey Island checking for the CD, which means, you can't replace the original tracks with the special edition's, since they differ in their playing times.

I don't think this is correct? I remember when I was little I played SMI with the game files on the hard drive, using a Rayman CD for audio :P

It is now able to generate a "monster.so3" directly.
It expects the following files in the same directory:
1) All MISE samples converted to mp3 named as unxwb-mi extracts them from Speech.xwb.
2) A file mi1.txt created from the original Monkey Island with "scummtr -cw -g monkeycdalt -of mi1.txt -H"
3) The speech.info
4) Optionally a mapping.txt that reassigns the mappings generated by the match heuristic.

Just run the tool and it should generate
1) monster.so3
2) mi1new.txt
3) missing.txt => Mappings that have not been found or are ambiguous.

Use "scummtr -cw -g monkeycdalt -if mi1new.txt -H" to put the strings back into the data files.

There are of course a couple of issues..
Biggest problem here also seems the multi line texts.
Using LogicDeLuxe proposal does not seem to work. No matter if the speech signature is placed before or after the \xFF\x03... The line is spoken but the text is not displayed.

Any help would be useful regarding this issue....

So, what to do next? When you want to use my tool, just fill in the mapping.txt as there are a couple of lines that do not match, improve the tool itself or bring up other ideas on how to make it better.

Remember, you don't need the CD for this, but you may use it. Ripping them from your CD would give better quality than the compressed versions of the SE, so 3 options would be optimal.
- Convert the classic versions music.
- Convert the SE's music.
- Don't convert any music.

And who doesn't want Spiffy in there anyways? I think, creating a second game data patch, just to left Spiffy out, isn't worth the effort.

And is there a tool which can extract single files from the pak file? Extracting the entire thing, just to get 2 files is a bit overkill. An option for the pak extractor to select the file(s) you want would be useful here.

Quote:

Originally Posted by Rapp Scallion

I don't think this is correct? I remember when I was little I played SMI with the game files on the hard drive, using a Rayman CD for audio :P

I'm aware, there is a no-CD crack somewhere, but I don't think, it would be a good idea to have the user require that. Though, since we're patching the game data files already, we could fix it in the script, I think.

Quote:

Originally Posted by jott

No matter if the speech signature is placed before or after the \xFF\x03... The line is spoken but the text is not displayed.

And if your tool would merge the voice files? Not perfect, I know, but at least somewhat we can call usable. It's basically what FOA does as well. I checked it, it also has text lines with \xFF\x03 in it which only use one voice sample.
For merging, it would be best to extract them as raw pcm and have them converted to mp3/ogg/flac after they are joint as need.
The alternative would be rewriting all the scripts which use such lines. A lot more work, I guess. Were there script changes like this in the speech project? I mean other than those with variables in it?