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

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)

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