Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Sintetizzatore vocale
Utilizzo di base
L'utilizzo basilare della sintesi vocale prevede i seguenti passaggi una tantum:
Abilitare TTS nell'editor Godot per il proprio progetto
Interrogare il sistema per una lista di voci disponibili
Memorizzare l'ID della voce che si desidera utilizzare
Come predefinito, l'impostazione del progetto per la sintesi vocale è disabilitata, per evitare inutili sovraccarichi. Per abilitarla:
Vai a Progetto > Impostazioni del progetto
Assicurarsi che l'opzione Impostazioni avanzate sia abilitata
Cliccare su Audio > Generale
Assicurarsi che l'opzione Sintetizzatore vocale sia spuntata
Riavviare Godot se richiesto.
La sintesi vocale utilizza una voce specifica. A seconda del sistema dell'utente, potrebbero essere installate più voci. Una volta ottenuto l'ID vocale, è possibile utilizzarlo per pronunciare un testo:
# One-time steps.
# Pick a voice. Here, we arbitrarily pick the first English voice.
var voices = DisplayServer.tts_get_voices_for_language("en")
var voice_id = voices[0]
# Say "Hello, world!".
DisplayServer.tts_speak("Hello, world!", voice_id)
# Say a longer sentence, and then interrupt it.
# Note that this method is asynchronous: execution proceeds to the next line immediately,
# before the voice finishes speaking.
var long_message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur"
DisplayServer.tts_speak(long_message, voice_id)
# Immediately stop the current text mid-sentence and say goodbye instead.
DisplayServer.tts_stop()
DisplayServer.tts_speak("Goodbye!", voice_id)
// One-time steps.
// Pick a voice. Here, we arbitrarily pick the first English voice.
string[] voices = DisplayServer.TtsGetVoicesForLanguage("en");
string voiceId = voices[0];
// Say "Hello, world!".
DisplayServer.TtsSpeak("Hello, world!", voiceId);
// Say a longer sentence, and then interrupt it.
// Note that this method is asynchronous: execution proceeds to the next line immediately,
// before the voice finishes speaking.
string longMessage = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur";
DisplayServer.TtsSpeak(longMessage, voiceId);
// Immediately stop the current text mid-sentence and say goodbye instead.
DisplayServer.TtsStop();
DisplayServer.TtsSpeak("Goodbye!", voiceId);
Requisiti per funzionalità
Godot include funzionalità di sintesi vocale. Si possono trovare nella classe DisplayServer.
Godot dipende dalle librerie del sistema per la funzionalità di sintesi vocale. Normalmente queste librerie sono installate su Windows, macOS, Web, Android e iOS, ma non su tutte le distribuzioni Linux. Se non sono presenti, la funzionalità di sintesi vocale non funzionerà. In particolare, il metodo tts_get_voices() restituirà una lista vuota, a indicare che non ci sono voci utilizzabili.
Gli utenti di Godot su Linux, anche coloro che eseguono giochi Godot, devono assicurarsi che il loro sistema includa le librerie di sistema necessarie per far funzionare la sintesi vocale. Consultate la tabella sottostante o la documentazione della propria distribuzione per determinare quali librerie installare.
Righe di comando specifiche per ogni distribuzione
Arch Linux |
pacman -S speech-dispatcher festival espeakup
|
Risoluzione dei problemi
If you get the error Invalid get index '0' (on base: 'PackedStringArray').
for the line var voice_id = voices[0], check if there are any items in voices.
If not:
Tutti gli utenti: assicurarsi di aver abilitato Sintetizzatore vocale nelle impostazioni del progetto
Utenti Linux: assicurarsi di aver installato le librerie specifiche del sistema per la sintesi vocale
Le migliori pratiche
La migliore pratica per la sintesi vocale, in termini di esperienza ideale di gioco per i giocatori non vedenti, è quella di inviare l'uscita all lettore dello schermo del giocatore. Ciò preserva la scelta di lingua, velocità, tono, ecc. impostata dall'utente, oltre a consentire funzionalità avanzate come la possibilità di scorrere avanti e indietro il testo. Al momento, Godot non offre questo livello di integrazione.
Allo stato attuale delle API di sintesi vocale in Godot, le migliori pratiche includono:
Sviluppare il gioco con la sintesi vocale abilitata e assicurarsi che tutto suoni correttamente
Consentire ai giocatori di controllare quale voce utilizzare e di salvare/mantenere tale selezione tra le sessioni di gioco
Consentire ai giocatori di controllare la velocità del parlato e di salvare/mantenere tale selezione tra le sessioni di gioco
Ciò garantisce ai giocatori non vedenti la massima flessibilità e comodità quando non utilizzano un lettore dello schermo e riduce al minimo il rischio di frustrazione e alienazione.
Avvertenze e altre informazioni
Expect delays when you call tts_speak() and tts_stop(). The actual delay time varies depending on both the OS and on your machine's specifications. This is especially critical on Android and Web, where some of the voices depend on web services, and the actual time to playback depends on server load, network latency, and other factors.
Il testo in lingue oltre all'inglese funziona se le voci corrette sono installate e utilizzate. Su Windows, è possibile consultare le istruzioni in questo articolo per abilitare voci in altre lingue su Windows.
I caratteri non ASCII, come la dieresi, sono pronunciati correttamente se si seleziona la voce corretta.
I giocatori non vedenti utilizzano diversi lettori di schermo, tra cui JAWS, NVDA, VoiceOver, Narrator e altri.
Windows text-to-speech APIs generally perform better than their equivalents on other systems (e.g. tts_stop() followed by tts_speak() immediately speaks the new message).