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.

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)

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).