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...
Texto para voz
Uso básico
O uso básico de texto para fala (text-to-speech) envolve as seguintes etapas únicas:
Habilitar TTS no editor do Godot para seu projeto
Consultar o sistema para obter uma lista de vozes utilizáveis
Armazenar o ID da voz que você deseja usar
Por padrão, a configuração a nível de projeto do Godot para texto para fala está desativada, para evitar processamento desnecessário. Para ativá-la:
Vá para Projeto > Configurações de Projeto
Certifique-se de que a opção Advanced Settings esteja ativada
Clique em Audio > General
Garanta que a opção Text to Speech esteja marcada
Reinicie o Godot se for solicitado a fazê-lo.
O texto para fala usa uma voz específica. Dependendo do sistema do usuário, ele pode ter várias vozes instaladas. Assim que tiver o ID da voz, você poderá usá-lo para falar algum texto:
# 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);
Requisitos para funcionalidade
O Godot inclui funcionalidade de texto para fala. Você pode encontrá-las na classe DisplayServer.
O Godot depende de bibliotecas do sistema para a funcionalidade de texto para fala. Essas bibliotecas são instaladas por padrão no Windows, macOS, Web, Android e iOS, mas não em todas as distribuições Linux. Se elas não estiverem presentes, a funcionalidade de texto para fala não funcionará. Especificamente, o método tts_get_voices() retornará uma lista vazia, indicando que não há vozes utilizáveis.
Tanto os usuários do Godot no Linux quanto os usuários finais no Linux que rodam jogos em Godot precisam garantir que seus sistemas incluam as bibliotecas do sistema para que o texto para fala funcione. Por favor, consulte a tabela abaixo ou a documentação da sua própria distribuição para determinar quais bibliotecas você precisa instalar.
Comandos de uma linha específicos por distribuição
Arch Linux |
pacman -S speech-dispatcher festival espeakup
|
Solução de problemas
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:
Todos os usuários: certifiquem-se de ter ativado o Text to Speech nas configurações do projeto
Usuários Linux: garantam que instalaram as bibliotecas específicas do sistema para texto para fala
Boas práticas
As melhores práticas para texto para fala, em termos da experiência ideal para jogadores cegos, é enviar a saída para o leitor de tela do jogador. Isso preserva a escolha de idioma, velocidade, tom, etc., que o usuário definiu, além de permitir recursos avançados, como permitir que os jogadores naveguem para trás e para frente no texto. Até o momento, o Godot não fornece esse nível de integração.
Com o estado atual das APIs de texto para fala do Godot, as melhores práticas incluem:
Desenvolver o jogo com o texto para fala ativado e garantir que tudo soe correto
Permitir que os jogadores controlem qual voz usar e salvar/persistir essa seleção entre as sessões de jogo
Permitir que os jogadores controlem a velocidade da fala e salvar/persistir essa seleção entre as sessões de jogo
Isso oferece aos seus jogadores cegos a maior flexibilidade e conforto disponíveis quando não estiverem usando um leitor de tela, e minimiza a chance de frustrá-los e aliená-los.
Limitações e outras informações
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.
Textos em idiomas diferentes do inglês funcionam se as vozes corretas estiverem instaladas e forem usadas. No Windows, você pode consultar as instruções neste artigo para ativar vozes de idiomas adicionais no Windows.
Caracteres não-ASCII, como tremas (umlaut), são pronunciados corretamente se você selecionar a voz correta.
Jogadores cegos usam vários leitores de tela, incluindo JAWS, NVDA, VoiceOver, Narrator e outros.
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).