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
Basic usage of text-to-speech involves the following one-time steps:
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
Se ricevi l'errore Invalid get index '0' (on base: 'PackedStringArray'). per la riga var voice_id = voices[0], controlla se ci sono elementi in voices. Se non:
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
Possono avvenire ritardi quando si chiamano tts_speak e tts_stop. Il ritardo effettivo varia a seconda del sistema operativo e delle specifiche del computer. Questo è particolarmente importante su Android e Web, dove alcune voci dipendono dai servizi web e il tempo effettivo di riproduzione dipende dal carico del server, dalla latenza di rete e da altri fattori.
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.
Le API di sintesi vocale di Windows generalmente funzionano meglio dei loro equivalenti su altri sistemi (ad esempio, tts_stop seguito da tts_speak pronuncia immediatamente il nuovo messaggio).