1

「スタートボタン」をクリックしたときにユーザーを歓迎したいJavaScriptコードを書いています。英語では機能していますが、ポイントは、ブラジルのポルトガル語(pt-BR)で物事を言いたいということです。私は多くの解決策を試しましたが、うまくいかないようです。誰でも私を助けてもらえますか?

コードは次のとおりです。

<!DOCTYPE html>
<html lang="pt-BR">
<head>
<script>

startTalking = function(line){
    var text  = new SpeechSynthesisUtterance();
    text.lang = "pt-BR";
    text.text = line;
    speechSynthesis.speak(text);
  }

</script>
</head>
<body>

<button id="startButton" onclick = "startTalking("Bem vindo!")"></button>

</body>
</html>

ボタンをクリックするとスクリプトは機能しますが、パラメーターで受け取ったテキストは英語 (米国) の音声で話されます。

誰もそれを修正する方法の手がかりを持っていますか?

ありがとう!!

4

2 に答える 2

2

ブルーノさん、お返事ありがとうございます。質問を投稿した翌日にこの状況を解決しましたが、ここに解決策を投稿できませんでした。これを使用してこの状況を解決しました:

<!DOCTYPE html>
<html lang="pt-BR">
<head>
<script>

var text;
var voices;

window.speechSynthesis.onvoiceschanged = function() {
  text = new SpeechSynthesisUtterance();
  voices = window.speechSynthesis.getVoices();
  text.voiceURI = 'Google português do Brasil'; //discovered after dumping getVoices()
  text.lang = "pt-BR";
  text.localService = true;
  text.voice = voices[15]; //index to the voiceURI. This index number is not static.
}

startSpeaking = function(line){
  text.text = line;
  speechSynthesis.speak(text);
}

</script>
</head>
<body>

<button id="startButton" onclick = "startTalking("Bem vindo!")"></button>

</body>
</html>

onvoiceschanged が非同期になると、すべてが正常に機能するようになりました。

すでに解決済みですが、ご回答ありがとうございます。どうもありがとう。

よろしくお願いします、

ウリセス

于 2016-04-12T19:14:39.233 に答える