Skip to content

CINE: Add text-to-speech (TTS)#6700

Merged
sev- merged 1 commit intoscummvm:masterfrom
ellm135:cine-tts
Jul 21, 2025
Merged

CINE: Add text-to-speech (TTS)#6700
sev- merged 1 commit intoscummvm:masterfrom
ellm135:cine-tts

Conversation

@ellm135
Copy link
Contributor

@ellm135 ellm135 commented Jun 8, 2025

Adds a toggle for text-to-speech to the game options.
Adds text-to-speech for the following:

  • Copy protection screen
  • Credits
  • Inventory items
  • System and action menus
  • Command line
  • Cutscene text
  • Dialog and popup information

@OMGPizzaGuy OMGPizzaGuy added the GSoC Part of a Google Summer of Code project label Jun 8, 2025
@criezy
Copy link
Member

criezy commented Jun 15, 2025

For the hardcoded text that corresponds to images (e.g. copy protection and credits), do some of the translations need to be checked by native speakers, and if so which ones?

@ellm135
Copy link
Contributor Author

ellm135 commented Jun 16, 2025

For the hardcoded text that corresponds to images (e.g. copy protection and credits), do some of the translations need to be checked by native speakers, and if so which ones?

This hardcoded text needs to be checked:

  • "The End" texts in Spanish all languages but English
  • All opening and end credits in Spanish all languages but English and French (except for the Operation Stealth final end credits screen: only the German translation for this needs verification)

@ellm135 ellm135 force-pushed the cine-tts branch 2 times, most recently from 7364007 to 3311d10 Compare June 28, 2025 02:39
@ellm135 ellm135 marked this pull request as ready for review June 28, 2025 02:41
"Tutto il gruppo della Delphine spera che John Glames vi abbia fatto trascorrere dei momenti piacevoli "
"e vi ringrazia della fiducia accordata.\n"
"Appuntamento a presto per una nuova aventura."
};
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am thinking those arrays could be in a #ifdef USE_TTS block so that they are not included when compiling without TTS support (which may include platforms with restricted amount of memory. That would also mean adding the #ifdef USE_TTS around the blocks of code below in the same file that handles TTS.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, good idea

"Musica Jean Baudlot",
"", // DOS only (no DOS version exists)
"Future Wars: Time Travellers", // Amiga/Atari only
"" // DOS only (no DOS version exists)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using the english strings as reference, I'd propose:
"Idea e programmazione di Paul Cuisset"
"Direzione grafica di Eric Chahi"
"Musica composta da Jean Baudlot"
For the first string you can also use "Progettazione" or "Ideazione" instead of "Idea". Or, you can also keep "Design" which is used also in Italian, and it sounds better IMHO

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the text as it is presented in-game.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't checked with the game but isn't there a comment "German, Spanish, and Italian credits are in English in-game, but are translated here for TTS" ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Italian translation of Future Wars does have its opening credits in English in-game.

"Patricia Vermander",

// Italian, first line
"Disegno: Paul Cuisset",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Disegno" is wrong. As in the opening credits you can choose between Idea/Ideazione/Progettazione/Design

// Italian, second line Amiga/Atari
"Programmazione: Paul Cuisset",
// Italian, remainder of credits
"Grafiche: Eric Chahi\n"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grafica

"Aiuto tecnico: Philippe Chastel, Jesus Martinez\n"
"Campionamento di suoni digitalizzati: Philippe Chastel, Paul Cuisset, Antoine O'Heix, Jesus Martinez\n"
"Sistema Cinematique: Paul Cuisset\n"
"Molte grazie a: Philippe Delamarre, Emmanuel Lecoz, Michael Sportouch, Peter Stone, Matthew Tims, "
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Ringraziamenti a:" or "Sentiti ringraziamenti a"

static const char *openingCreditsOSItalian[] = {
"Copione\nP. Cuisset\nP. Chastel",
"Illustrazioni\nImagex\nM. Bacque\nE. Lecoz",
"Programma\nP. Cuisset\nP. Chastel\nJ. Martinez",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Programmazione

// Italian
"Copione\n Paul Cuisset, Philippe Chastel\n"
"Programmazione\n Paul Cuisset, Philippe Chastel, J\202sus Martinez, Daniel Morais IBM PC\n"
"Illustrazioni\n Mich\212le Bacqu\202, Imagex, Emmanuel Lecoz\n"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The english string is "Illustrations", but I think this one should be "Grafica"

"Musica\n Jean Baudlot\n"
"Effetti sonori\n Marc Minier\n"
"Manuale dell'utente\n Michael Sportouch\n"
"Manuale di illustrazione\n Jean-Pierre Fert\202\n"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Illustrazioni del manuale

// Italian, final credits screen
"Tutto il gruppo della Delphine spera che John Glames vi abbia fatto trascorrere dei momenti piacevoli "
"e vi ringrazia della fiducia accordata.\n"
"Appuntamento a presto per una nuova aventura."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo, should be "avventura"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

"Kopierschutz\n"
"Auf der R\201ckseite des Einbandes der \"Future Wars\" Anleitung findest Du einen farbigen "
"Abdruck der Kopierschutzabfrage des Programmes.\n"
"Du mu\236t nur die richtige Farbe des blinkenden Ausscnitts auf dem Bildschirm gem\204\236 der "
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ausschnitts

"la ligne demand\202e.",
// German
"Sicherheitsabfrage\n"
"Bitte die gitterfolie auf die seite legen, die angezeigt wird!\n"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitterfolie
Seite

// German
"Sicherheitsabfrage\n"
"Bitte die gitterfolie auf die seite legen, die angezeigt wird!\n"
"Dann bestimmen sie mit cursorpfeil und click das entsprechende feld.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dann klicken Sie auf das entsprechende Feld.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This text was taken from the game, so I've left it mostly unchanged for now (though I did fix the capitalization as suggested).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I see. This isn't real German. More like something that they might have forgotten to give to the translator and then had to make up something themselves :-). But it is understandable at least...
If you just want to have the capitalization correct, it is
"Dann bestimmen Sie mit Cursorpfeil und Click das entsprechende Feld."

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then since the original translation is too incorrect, I've replaced it with the initial suggestion. Thank you!


static const char *copyProtectionTextsOSGerman[] = {
"Operation Stealth",
"Die informationen dieses dossiers sind: "
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die Informationen dieses Dossiers sind:

"Operation Stealth",
"Die informationen dieses dossiers sind: "
"Streng Geheim",
"Bitte entnehmen sie der code-karte die zugeh\224rige farbe, um ihre zugriffsberechtigung zu best\204tigen."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bitte entnehmen Sie der Codekarte die zugeh\224rige Farbe, um Ihre Zugriffsberechtigung zu best\204tigen.

static const char *copyProtectionFailTextsOS[] = {
"Sorry, the colors you just chose don't match.", // English
"Les couleurs que vous avez choisies ne correspondent pas.", // French
"Die Farben, die Sie gew\204hlt haben sind falsch.", // German
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die Farben, die Sie gew\204hlt haben, sind falsch.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

"(columna y fila) ya pincha sobre ella.",
// Italian
"Protezione da copie illegali\n"
"Metti la griglia che hai trovato nella confezione sulla pagina del manuale il cui numero e' indicato.\n"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

e' should be è, but check if there's an escape code for that character.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe the escape code is \350, please check if it's true.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was \212 in this case. Thank you!

@ellm135 ellm135 force-pushed the cine-tts branch 2 times, most recently from a0eeebe to 2c2db63 Compare July 2, 2025 20:30
_ttsLanguage = kItalian;
break;
default:
_ttsLanguage = kEnglish;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just for completeness - maybe add a break to the default case, too - even though it should be last, one could still add another case at the end and then forgets to add the break.

}

void CineEngine::sayText(const Common::String &text, Common::TextToSpeechManager::Action action) {
Common::TextToSpeechManager *ttsMan = g_system->getTextToSpeechManager();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isnt't here the #ifdef USE_TTS missing?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that, for functions like sayText, the #ifdef USE_TTS shouldn't be necessary.

@sev-
Copy link
Member

sev- commented Jul 21, 2025

Thank you! Merging

@sev- sev- merged commit d8f456b into scummvm:master Jul 21, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

GSoC Part of a Google Summer of Code project

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants