Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[Dúvida] Responsive Voice não funciona

Bom dia, eu estou tentando colocar Responsive Voice no meu projeto do jogo do número secreto, porém não sai a voz que deveria estar saindo. Eu vou deixar as linhas de código do JavaScript e HTML aqui em baixo: JavaScript

let listaDeNumerosSorteados = [];
let numeroLimite = 10;
let numeroSecreto = gerarNumeroAleatorio();
let tentativas = 1;

function exibirTextoNaTela(tag, texto) {
    let campo = document.querySelector(tag);
    campo.innerHTML = texto;
    responsiveVoice.speak(texto, 'Brazilian Portuguese Female', {rate:1.2});
}

function exibirMensagemInicial() { 
    exibirTextoNaTela('h1', 'Jogo do número secreto'); 
    exibirTextoNaTela('p', 'Escolha um número entre 1 e 10'); 
}

exibirMensagemInicial();

function verificarChute() {
    let chute = document.querySelector('input').value;

    if (chute == numeroSecreto) {
        exibirTextoNaTela('h1', 'Acertou');
        let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
        let mensagemTentativas = `Voce descobriu o número secreto com ${tentativas} ${palavraTentativa}!`;
        exibirTextoNaTela('p', mensagemTentativas);
        document.getElementById('reiniciar').removeAttribute('disabled');
    } else {
        if (chute > numeroSecreto) {
            exibirTextoNaTela('p', 'O número secreto é menor');
        } else {
            exibirTextoNaTela('p', 'O número secreto é maior');
        }
        tentativas++;
        limparCampo();
    }


    console.log(chute == numeroSecreto);
}

function gerarNumeroAleatorio() {
    let numeroEscolhido = parseInt(Math.random() * numeroLimite+ 1);
    let quantidadeDeElementosNaLista = listaDeNumerosSorteados.length

    if (quantidadeDeElementosNaLista == numeroLimite) {
        listaDeNumerosSorteados = [];
    }
    if (listaDeNumerosSorteados.includes(numeroEscolhido)) {
        return gerarNumeroAleatorio();
    } else {
        listaDeNumerosSorteados.push(numeroEscolhido);
        console.log(listaDeNumerosSorteados);
        return numeroEscolhido;
    }
}

function limparCampo() {
    chute = document.querySelector('input');
    chute.value = '';
}

function reiniciarJogo() {
    numeroSecreto = gerarNumeroAleatorio();
    limparCampo();
    tentativas = 1;
    exibirMensagemInicial();
    document.getElementById('reiniciar').setAttribute('disabled', true)
}

HTML

<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://code.responsivevoice.org/responsivevoice.js"></script>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@700&family=Inter:wght@400;700&display=swap"
        rel="stylesheet">
    <link rel="stylesheet" href="style.css">
    <title>JS Game</title>
</head>

<body>

    <div class="container">
        <div class="container__conteudo">
            <div class="container__informacoes">
                <div class="container__texto">
                    <h1></h1>
                    <p class="texto__paragrafo"></p>
                </div>
                <input type="number" min="1" max="10" class="container__input">
                <div class="chute container__botoes">
                    <button onclick="verificarChute()" class="container__botao">Chutar</button>
                    <button onclick="reiniciarJogo()" id="reiniciar" class="container__botao" disabled>Novo jogo</button>
                </div>
            </div>
            <img src="./img/ia.png" alt="Uma pessoa olhando para a esquerda" class="container__imagem-pessoa" />
        </div>
    </div>




    <script src="app.js" defer></script>
</body>

</html>
5 respostas

Olá Kauã, tudo bem?

Vamos tentar resolver o problema com o Responsive Voice no seu projeto. Aqui estão algumas sugestões que podem te ajudar a identificar e corrigir o problema:

  1. Verifique se a biblioteca está sendo carregada corretamente:

    • Certifique-se de que o link para o script do Responsive Voice está correto e acessível. No seu HTML, você tem:
      <script src="https://code.responsivevoice.org/responsivevoice.js"></script>
      
      Tente abrir esse link diretamente no navegador para garantir que ele está funcionando.
  2. Verifique a compatibilidade do navegador:

    • Alguns navegadores podem ter restrições ou não suportar todas as funcionalidades do Responsive Voice. Tente rodar seu projeto em diferentes navegadores (como Chrome, Firefox, Edge) para ver se o problema persiste.
  3. Permissões de áudio:

    • Certifique-se de que o navegador tem permissão para usar o áudio. Às vezes, navegadores bloqueiam automaticamente o uso de áudio em scripts por questões de segurança.
  4. Teste a função responsiveVoice.speak isoladamente:

    • Tente criar um pequeno script separado apenas para testar se o responsiveVoice.speak está funcionando. Por exemplo:
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="UTF-8">
          <title>Teste Responsive Voice</title>
          <script src="https://code.responsivevoice.org/responsivevoice.js"></script>
      </head>
      <body>
          <button onclick="testarVoz()">Testar Voz</button>
          <script>
              function testarVoz() {
                  responsiveVoice.speak("Olá, isso é um teste", "Brazilian Portuguese Female", {rate: 1.2});
              }
          </script>
      </body>
      </html>
      
      Se isso funcionar, o problema pode estar em outra parte do seu código.
  5. Verifique o console do navegador:

    • Abra o console do desenvolvedor (F12 ou Ctrl+Shift+I) e veja se há algum erro ou aviso relacionado ao responsiveVoice.speak.
  6. Posição do script:

    • Certifique-se de que o script responsivevoice.js está sendo carregado antes do seu script app.js. Como você está usando defer no seu script principal, isso deve estar correto, mas vale a pena verificar.

Espero que alguma dessas sugestões ajude a resolver o problema.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Bom dia Armando

Eu abri o console de desenvolvedor (Eu uso o navegador Microsoft Edge) e está acontecendo esse erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Bom dia, Kauã!

Pesquisando um pouco achei que a API do Response Voice não deixa você utilizá-la em um navegador diferente do Google Chrome, pois o mesmo é o que apresenta os critérios de segurança que ela segue.

Então, para consegui utilizar essa ferramenta, recomendo que você faça o download do navegador Google Chrome e utilize ele para rodar o seu projeto.

Espero ter ajudado e bons estudos!

Bom dia, Armando

Obrigado por ter me ajudado, mas como faço o meu projeto rodar no Google Chrome?

solução!

Fala Kauã!

O Live Server sempre abre no seu navegador padrão, então você pode alterar o Chrome para ser o seu navegador padrão, mas caso não queira alterar isso, você pode simplesmente mudar as configurações do Live Server para ele abrir em vez do navegador padrão abrir o Chrome quando for iniciar.

Para fazer a segunda opção, primeiro abra o VSCode e clique na engrenagem no canto inferior esquerdo, depois procure a opção "Settings". Na barra de busca que aparecer escreva "Live Server" e procure a configuração "Live Server > Settings: Custom Browser" e nas opções selecione o "Chrome".

Caso fique perdido, estarei deixando um GIF abaixo com todo esse passo a passo:

GIF onde a configuração do navegador usado no Live Server é alterado

Caso tenha mais alguma dúvida estarei aqui!