【问题标题】:using multiple variables to open different links使用多个变量打开不同的链接
【发布时间】:2017-11-04 18:05:48
【问题描述】:

编辑、更新

看到我的主要目标是首先让用户通过语音(语音到文本)请求特定的(书名),然后打开书以大声朗读(文本到语音),最后一步是将这本书打印到盲文,我的难点是我没有找到将书打开为 pdf 的方法,所以我只是将他作为文本区域,我不知道如何使用此代码将文本转换为盲文字母 https://gist.github.com/meh/141520


我的目标是调用不同的变量时打开不同的页面 但是代码没有反应,只有一个变量打开一页

 if (speechresult ) {

    //here I added speechrecognizer.stop for the commands to not get interrupted
    speechRecognizer.stop();
    var yourValue = 'Book 1';
      window.open("http://localhost/introductiontonetworking.html");
    responsiveVoice.speak(bookstart, "UK English Female", {
        //The pitch property of the SpeechSynthesisUtterance interface gets and sets the pitch at which the utterance will be spoken at. by default 1
        pitch: 1
    }, {
        //rate by default 1
        rate: 1
    });

}


else if (speechresult == book2) {

    speechRecognizer.stop();
            var yourValue = 'Book 2';
      window.open("http://localhost/ethicalhacking.html");
    responsiveVoice.speak(bookstart, "UK English Female", {

        pitch: 1
    }, {

        rate: 1
    });

}

我打算使用多本书,所以当说 = book1 打开第一本书而 book2 = 打开第二本书等等时?我的代码有什么问题

【问题讨论】:

    标签: javascript text-to-speech speech-to-text webspeech-api


    【解决方案1】:

    您可以尝试关联数组来存储书名和链接

    link_arr['book1']='linkforbook1'; link_arr['book2']='linkforbook2'; . . .

    获取相应书籍的链接

    link=link_arr[bookVal];

    【讨论】:

      【解决方案2】:

      SpeechSynthesis.speak() 需要字符串或 SpeechSynthesisUtterance 对象,而不是普通对象


      您可以使用Array.prototype.map() 将书籍章节的文本转换为盲文。

      在 HTML 中使用data-* 属性来设置JSON 表示期望被服务识别的章节,例如"chapter one""chapter 1""chapter two""chapter 2"

      result事件SpeechSynthesisUtterance过滤<textarea>元素以选择书的对应章节作为文本。重启识别服务,例如endSpeechReconitionUtterance实例的webkitSpeechRecognition事件。

      <!DOCTYPE html>
      <html>
      
      <head>
        <title>Ethical Hacking book</title>
        <style type="text/css">
          body {
            font-family: verdana;
          }
      
          .button {
            display: inline-block;
            background: #f6f6f6;
            padding: 10px 20px;
            color: #000;
            border: 1px solid #ccc;
            cursor: pointer;
            margin-top: 20px;
          }
      
          .button:hover {
            box-shadow: 4px 4px 10px 0 #ccc;
          }
      
          .container textarea,
          .container .brailleResult {
            width: 1333px;
            height: 1000px;
            resize: none;
            outline: none;
            border: 1px solid #ccc;
            box-shadow: 0 0 10px 0 #ddd;
            font-size: 14px;
          }
        </style>
      </head>
      
      <body>
      
        <div class="container">
          <h3>Ethical Hacking</h3>
          <textarea class="myText" data-chapter='["chapter one", "chapter 1"]'>Chapter 1. Introduction to Hacking. There are many definitions for hacker. Ask this question from a phalanx, and you will get a new answer every time, because more mouths will have more talks, and this is the reason behind the different definitions
            of hackers, which in my opinion is quite justified for everyone has a right to think differently. In the early 1990s, the word hacker was used to describe a great programmer, someone who was able to build complex logics.
          </textarea>
          <div class="brailleResult"></div>
          <textarea class="myText" data-chapter='["chapter two", "chapter 2"]'>Chapter 2. Linux Basics. In order to become a good ethical hacker or penetration tester, you need to be conversant with Linux, which is by far one of the most powerful operating systems. Linux is really good for ethical hacking and penetration testing
            because it is compatible with a wide variety of related tools and software, whereas other operating systems such as Mac and Windows support fewer of these software and tools. In this chapter, I will teach you some of the very basics of operating
            a Linux OS. If you are already familiar with Linux basics, you can skip this chapter.</textarea>
          <div class="brailleResult"></div>
        </div>
        <script type="text/javascript">
          var braille = [
            ['1', '⠼⠁'],
            ['2', '⠼⠃'],
            ['3', '⠼⠉'],
            ['4', '⠼⠙'],
            ['5', '⠼⠑'],
            ['6', '⠼⠋'],
            ['7', '⠼⠛'],
            ['8', '⠼⠓'],
            ['9', '⠼⠊'],
            ['0', '⠼⠚'],
      
            ['A', '⠠⠁'],
            ['B', '⠠⠃'],
            ['C', '⠠⠉'],
            ['D', '⠠⠙'],
            ['E', '⠠⠑'],
            ['F', '⠠⠋'],
            ['G', '⠠⠛'],
            ['H', '⠠⠓'],
            ['I', '⠠⠊'],
            ['J', '⠠⠚'],
            ['K', '⠠⠅'],
            ['L', '⠠⠇'],
            ['M', '⠠⠍'],
            ['N', '⠠⠝'],
            ['O', '⠠⠕'],
            ['P', '⠠⠏'],
            ['Q', '⠠⠟'],
            ['R', '⠠⠗'],
            ['S', '⠠⠎'],
            ['T', '⠠⠞'],
            ['U', '⠠⠥'],
            ['V', '⠠⠧'],
            ['W', '⠠⠺'],
            ['X', '⠠⠭'],
            ['Y', '⠠⠽'],
            ['Z', '⠠⠵'],
      
            ['a', '⠁'],
            ['b', '⠃'],
            ['c', '⠉'],
            ['d', '⠙'],
            ['e', '⠑'],
            ['f', '⠋'],
            ['g', '⠛'],
            ['h', '⠓'],
            ['i', '⠊'],
            ['j', '⠚'],
            ['k', '⠅'],
            ['l', '⠇'],
            ['m', '⠍'],
            ['n', '⠝'],
            ['o', '⠕'],
            ['p', '⠏'],
            ['q', '⠟'],
            ['r', '⠗'],
            ['s', '⠎'],
            ['t', '⠞'],
            ['u', '⠥'],
            ['v', '⠧'],
            ['w', '⠺'],
            ['x', '⠭'],
            ['y', '⠽'],
            ['z', '⠵'],
      
            ['\\.', '⠲'],
            [',', '⠂'],
            ['\\?', '⠦'],
            [';', '⠆'],
            ['!', '⠖'],
            ['<', '⠦'],
            ['>', '⠴'],
            ['\\[', '⠶'],
            ['-', '⠤'],
            ["'", '⠄'],
          ];
      
          function checkCompatibilty() {
            if (!('speechSynthesis' in window)) {
              alert('Your browser is not supported. If google chrome, please upgrade!');
            }
          };
          checkCompatibilty();
      
          var chapters = document.querySelectorAll('.myText');
          var brailleResult = document.querySelectorAll(".brailleResult");
          var recognition = new webkitSpeechRecognition();
          recognition.continuous = true;
          recognition.interimResults = false;
          recognition.maxAlternatives = 1;
          recognition.onresult = handleRecognition;
          recognition.start();
          var book = new SpeechSynthesisUtterance();
          book.onend = resetRecognition;
          book.default = false;
          var voiceselect = window.speechSynthesis.getVoices();
          book.voice = voiceselect.filter(function(voice) {
            return voice.name == 'Google UK English Male';
          })[0];
          book.lang = 'en-EN';
          book.volume = 1;
          book.rate = 1;
          book.pitch = 1;
      
          function textToBraille(chapter) {
            return Array.prototype.map.call(chapter, function(text) {
              var result = braille.find(([key, prop]) => text === key);
              return result && result[1] || text
            }).join("")
      
          }
      
          function handleRecognition(event) {
            recognition.stop();
            var chapter = event.results[event.results.length - 1][0].transcript.trim();
            console.log(chapter);
            for (var i = 0; i < chapters.length; i++) {
              if (JSON.parse(chapters[i].dataset.chapter).some(function(ch) {
                  return ch === chapter
                })) {
                speak(chapters[i].value);
                brailleResult[i].innerHTML = textToBraille(chapters[i].value)
              }
            }
          }
      
          function resetRecognition() {
            recognition.start();
          }
      
          function speak(chapter) {
            book.text = chapter;
            window.speechSynthesis.speak(book);
          };
        </script>
      
      
      </body>
      
      </html>
      

      plnkrhttps://plnkr.co/edit/Xwc5iFtgbTnz13DDKC3z?p=preview

      【讨论】:

      • 我应该在哪里除了这些还是用什么替换?
      • @SamarDahan 您在 jsfiddle 尝试过代码吗? "UK English Female" 是定义的声音吗?
      • 是的,我试过了,但我仍在努力适应我的代码,我应该把书的链接放在哪里?
      • “书籍链接”是什么意思?
      • 看到我的主要目标是首先让用户通过语音(语音到文本)请求特定的(书名),然后打开书本大声朗读(文本到语音),最后一步是要将这本书打印成盲文,我的难点是我没有找到以pdf格式打开这本书的方法,所以我只是将他作为文本区域,我不知道如何将文本转换为盲文字母代码gist.github.com/meh/141520
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多