javascript speech.synthesis.speak 属性

javascript speech.synthesis.speak properties

找了又找都没有结果。至少从我发现的内容来看,没有关于此 API 的明确文档。我想创建一个自定义对象,它可以保存此函数的属性并能够 运行 它

console.log(window.speechSynthesis.getVoices());
var voices = window.speechSynthesis.getVoices();
var kline = new Object();

kline.speakAloud = function(message) {
 Speech = new SpeechSynthesisUtterance(message);
 Speech.voice = voices[2];
 Speech.gender = "male";
 Speech.voiceURI = "Google UK English Male";
 Speech.volume = 1; // 0 to 1
 Speech.rate = 1; // 0.1 to 10
 Speech.pitch = 2; //0 to 2
 Speech.lang = 'en-GB';
 window.speechSynthesis.speak(Speech);  
};
kline.speakText = function(message) {
 document.getElementById("Output").innerHTML = message;
};
 
 
 //Arrays for Algorithmic Input Processing 
 
 var Greetings = ["hello", "hey", "hi", "sup"];
 var Functions = ["say", "search", "math", "", "", "", "", ""];


function Run() {
 message = document.getElementById("Input").value.toLowerCase();
 console.log("Successfully ran function" + '\n' + "Input:" + document.getElementById("Input").value + '\n' + "Proccesed input:" + message);
 
 //If statement 
 if (message === ("hello")) { // greating
  kline.speakAloud("testing");
  kline.speakText("testing");
 }
 else if (message === ("X")) { //
  kline.speakAloud("");
  kline.speakText(""); 
 }
 else if (message === ("X")) { //
  kline.speakAloud("");
  kline.speakText(""); 
 }
 else if (message === ("X")) { //
  kline.speakAloud("");
  kline.speakText(""); 
 }
}

如果您需要 html 我也可以 post 这个,它基本上是一个输入框和一个调用 运行() 的按钮。该代码有效,但我无法让它成为男声。我想保留在同一个对象中,并使用方法调用它,如果有人有办法让它听起来像男性或知道这方面的文档,请 post 因为我希望其他人正在搜索文档会找到你可爱的答案。

我也在 运行 宁 linux 15 和 chrome 版本 48。如果可能的话,我希望能够在其他浏览器上 运行 这个。让我们采取一些小步骤。

最完整的文档在 Web Speech API Specification

this answer 中所述,voices 数组仅在 window.speechSynthesis.onvoiceschanged 事件触发后加载。如果将初始化代码移至此事件,则语音将可用。

var voices = []
var kline = new Object();

window.speechSynthesis.onvoiceschanged = function() {
    voices = window.speechSynthesis.getVoices();
    console.log(voices);
    
    kline.speakAloud = function(message) {
    Speech = new SpeechSynthesisUtterance(message);
    Speech.voice = voices[2];
    Speech.voiceURI = "Google UK English Male";
    Speech.volume = 1; // 0 to 1
    Speech.rate = 1; // 0.1 to 10
    Speech.pitch = 0; //0 to 2
    Speech.lang = 'en-GB';
    window.speechSynthesis.speak(Speech);  
  };
  kline.speakText = function(message) {
    document.getElementById("Output").innerHTML = message;
  };
  
};
 
 //Arrays for Algorithmic Input Processing 
 
 var Greetings = ["hello", "hey", "hi", "sup"];
 var Functions = ["say", "search", "math", "", "", "", "", ""];


function Run() {
 message = document.getElementById("Input").value.toLowerCase();
 console.log("Successfully ran function" + '\n' + "Input:" + document.getElementById("Input").value + '\n' + "Proccesed input:" + message);
 
 //If statement 
 if (message === ("hello")) { // greating
  kline.speakAloud("testing");
  kline.speakText("testing");
 }
 else if (message === ("X")) { //
  kline.speakAloud("");
  kline.speakText(""); 
 }
 else if (message === ("X")) { //
  kline.speakAloud("");
  kline.speakText(""); 
 }
 else if (message === ("X")) { //
  kline.speakAloud("");
  kline.speakText(""); 
 }
}
<input type="text" id="Input" value="hello"/>
<input type="text" id="Output"/>
<button id="run" onclick="Run()">
Run
</button>