Как играть в гугл ттс по клику с помощью javascript

Я пытаюсь написать функцию js, которая может произносить определенный текст, например этот"

function SpeakText(text) {
......
}

Я нашел эту тему: как создать кнопку который воспроизводит mp3 google tts, который, кажется, делает то, что я хочу. Но я пробовал решения, но не работает. Может быть, для работы требуется html5?

Есть ли простая функция javascript, которая может просто произносить определенный текст, который я ввожу в нее?


person Judy    schedule 20.09.2010    source источник


Ответы (1)


Старый поток, но мой ответ может быть полезен для некоторых людей. Помните о подходе Google к лицензированию TTS и установке VLC Player в качестве механизма вывода. Ваше здоровье. мехмет

HTML:

 <div    id="divVLCA2"       style="border: 0px solid black; background-color: transparent; left:   0px;  top:     0px; width: 1px;  height:  1px;    position: absolute; overflow: hidden">
       <embed id="vlca2"
                   width="1"               height="1"
                   type="application/x-vlc-plugin"       pluginspage="http://www.videolan.org"
                   autoplay="false"        controls="false"/>
 </div>

JS:

 var q_UNICODE_MAIL            = "UTF-8";
 var q_SLASH                   = "/";
 var q_TTS_URL                 = "ttsServlet";
 var q_GOOGLE_IE               = "ie=";                         
 var q_GOOGLE_TL               = "tl=";                  
 var q_GOOGLE_Q                = "q=";                
 var q_LANG_EN                 = "EN";               

 function SpeakText(x_word) {
     var divVLCA2                = document.getElementById("divVLCA2");
     divVLCA2  .style.visibility = "visible"; divVLCA2  .style.display = "block";

var vlca2                   = document.getElementById("vlca2");
var w_options               = new Array("");
var w_word                  = encodeURIComponent(x_word,         q_UNICODE_MAIL);
var w_parms_a               =                    q_GOOGLE_IE +   q_UNICODE_MAIL
                                + "&"          + q_GOOGLE_TL +   q_LANG_EN
                                + "&"          + q_GOOGLE_Q  +   w_word;
var w_servlet_a             = "http://your_server:8080" + q_SLASH      + q_TTS_URL   + "?" + w_parms_a;
vlca2.playlist.clear();
vlca2.playlist.add(w_servlet_a, null, w_options);
vlca2.playlist.play();
 }

СЕРВЛЕТ (ttsServlet):

 import com.gtranslate.*;

 //servlet output: "audio/x-wav";
 //...



public void mainXML(HttpServletRequest request, HttpServletResponse response) throws Exception {
 public static String     q_UNICODE_MAIL           = "UTF-8";
 int                      q_YAYIN_SOCKET_ABUFFER_UZN= 20480;
  //-------------------------------------------------------------------------------------------------------------//
  //                                            P A R A M E T E R S                                              //
  //-------------------------------------------------------------------------------------------------------------//
    String x_ie        = request.getParameter("ie"); if ( x_ie   == null ) {x_ie   = "";}
    String x_lang      = request.getParameter("tl"); if ( x_lang == null ) {x_lang = "";}
    String x_word      = request.getParameter("q");  if ( x_word == null ) {x_word = "";}
  //-------------------------------------------------------------------------------------------------------------//

    String word        = URLEncoder.encode(x_word, q_UNICODE_MAIL);

    Audio               audio       = Audio.getInstance();
    InputStream         sound       = audio.getAudio(word, x_lang);
    ServletOutputStream x_sos       = response.getOutputStream();

    try {
        byte[] bytes        = new byte[q_YAYIN_SOCKET_ABUFFER_UZN];
        int    nBytesRead   = 0;
        nBytesRead          = sound.read(bytes, 0, bytes.length);
        while    ( nBytesRead > 0 ) {
            try {
                  x_sos.write(bytes, 0, nBytesRead);
                  nBytesRead= sound.read(bytes, 0, bytes.length);
            } catch (Exception e) {
                  System.out.println("> ERROR (TTS-1) : " + e.getMessage());
                  break;
            }
        }
    } catch (Exception e) {
        System.out.println("> ERROR (TTS-2) : " + e.getMessage());
    }



    sound.close();
}
person mcevadi    schedule 15.06.2016