Greasy Fork

Greasy Fork is available in English.

打字网英文打字语音朗读

在练习英文打字的时候想多认识一点单词,知道它的读音的话应该对打字和英文都有帮助,她诞生了帮助我好好的学两个单词提高打字速度

当前为 2021-05-29 提交的版本,查看 最新版本

// ==UserScript==
// @name         打字网英文打字语音朗读
// @namespace    yslaoyi
// @version      0.3
// @description  在练习英文打字的时候想多认识一点单词,知道它的读音的话应该对打字和英文都有帮助,她诞生了帮助我好好的学两个单词提高打字速度
// @author       yslaoyi   dazi.kukuw.com
// @match        *://*.kukuw.com/typing.html*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

// 播放器状态
let playStatus = false;
// 目标单词
let targetWord = 'Gentlemen and ladies welcome English typing plug-in is online';
//   创建一个Audio对象用于播放声音
let ttsAudio = new Audio();
// audioNode(); //初始化插入播放节点
// 初始操作
(function main() {
  // 外挂上线提示,并开始工作
  doTTS(targetWord);
  let firstWord = getWord();
  firstWord = 'typing Start ' + firstWord;
  setTimeout(() => {
    doTTS(firstWord);
  }, 3000);

  document.onkeydown = function (element) {
    if (element.keyCode == 32 && !playStatus) {
      targetWord = getWord(); // 当按下空格的时候获取目标单词
      doTTS(targetWord); // 单词朗读
      playStatus = true; //更新播放状态
    }
  };
})();

// 一 、获取当前单词
// 获取当前输入行,然后对空格计数,当用户按下空格时,
// 空格数量加一,获取单词数组对应的单词
function getWord() {
  const words = document.querySelector('.typing_on>input[type]').value.split(' ');
  const rightInputWords = document.querySelectorAll('.typing_on > div > span > span');
  // 空格数
  let spaceNum = 1;
  rightInputWords.forEach(item => {
    if (item.innerHTML == ' ') {
      spaceNum++;
    }
  });
  // 当空格数等于单词组长度时,为换行状态
  console.log(spaceNum, words.length);
  if (spaceNum == words.length - 1) {
    setTimeout(() => {
      lineHeaderAction();
    }, 800);
    return;
  }
  //   当未输入单词时获取第一个单词
  if (rightInputWords.length == 0) {
    spaceNum = 0;
  }
  return words[spaceNum];
}

// 二 、 发送请求到文字转声音的ai
function doTTS(ttsText) {
  if (ttsText == undefined) {
    return 0;
  }
  ttsAudio.src = `http://tts.baidu.com/text2audio?lan=en&ie=UTF-8&spd=5&text=' + ${ttsText}`;
  ttsAudio.play();
}
// 每行开头初始操作
function lineHeaderAction() {
  let firstWord = getWord();
  doTTS(firstWord);
}
// 播放器状态
ttsAudio.addEventListener('ended', function () {
  playStatus = false;
});