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.

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)

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