2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Text to speech с помощь Java и Eclipse на google API
Сообщение20.12.2017, 01:06 


14/06/15
144
Здравствуйте.

Мой вопрос идут ниже. Сначала короткое введение.

Сейчас я учу Java (использую Эклипс) и наткнулся на следующий учебный пример - который представляет собой вариацию программы text-to-speech (TTS) на Java. Собственно сама программа лежит тут Lesson01_Speech.zip.

Суть программы (она состоит из 2 классов и подключаемой библиотеки) сводится к следующему:

  • Связать проект с библиотекой JLayer (jl1.0.1.jar) для воспроизведения mp3 с java
  • Создать экземпляр класса:
    Используется синтаксис Java
    GoogleTextToSpeech gtts = new GoogleTextToSpeech()
  • Использовать метод:
    Используется синтаксис Java
    gtts.say ("Hello everybody", "en")
  • Первый аргумент фраза для произнесения, второй - язык.


Я добавил в прогу свои комментарии (на английском) и закомментировал явно лишнею строчку, теперь прога выглядит так (Main class):

Используется синтаксис Java
package com.example.TTS; // package of class Main
 
import com.example.TTS.GoogleTextToSpeech; // import class GoogleTextToSpeech
 
public class Main {
 
  public static void main(String[] args) {
    GoogleTextToSpeech gtts = new GoogleTextToSpeech(); // make instance gtts
    gtts.say("Hello dear friends", "en"); // use method say
//  gtts.say("Bonjour mon amis!", "fr");
  }
}


GoogleTextToSpeech class:

код: [ скачать ] [ спрятать ]
Используется синтаксис Java
package com.example.TTS; // package of class GoogleTextToSpeech
 
import java.io.InputStream; // import  classes from Java library
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import javazoom.jl.player.Player; // import class from jl1.0.1.jar
 
public class GoogleTextToSpeech {
  private static String ENCODING = "UTF-8"; //make constants and assign values to them
  private static String URL_BEGINNING = "http://translate.google.com/translate_tts?ie=";
  private static String URL_QUERY = "&q=";
  private static String URL_TL = "&tl=";
  private static String USER_AGENT_LITERAL = "User-Agent";
  private static String USER_AGENT = "Mozilla/4.7";
 
  public void say( String phrase, String lang ) {
 
    try {
      //Make full URL
      phrase=URLEncoder.encode(phrase, ENCODING); //assign value to variable with name 'phrase' by use method encode from class URLEncoder
      String sURL = URL_BEGINNING + ENCODING + URL_TL + lang + URL_QUERY + phrase; //assign value to variable sURL
          URL url = new URL(sURL); // make instance url with constructor
 
          //Create connection
          URLConnection urlConn = url.openConnection(); //assign value to variable urlConn
          HttpURLConnection httpUrlConn = (HttpURLConnection) urlConn; //Declaring  httpUrlConn var of type HttpURLConnection, assigning it  value to  var urlConn (reduce to  HttpURLConnection)
          httpUrlConn.addRequestProperty(USER_AGENT_LITERAL, USER_AGENT);// use method
 
          //Create stream
          InputStream mp3WebStream = urlConn.getInputStream();//create instance and assign it a value
 
          //Play stream
          Player plr = new Player(mp3WebStream); //create instance plr with constructor
          plr.play(); //use method
    }
      //use exception with name ex
      catch (Exception ex) {
      ex.printStackTrace(); //use method
    }
  }
}



Стартую программу путем выбора Run as -> Java Application на Main.java.

И имею следующий вывод ( в эклипс консоли):

Используется синтаксис Java
java.io.IOException: Server returned HTTP response code: 503 for URL:http://ipv4.google.com/sorry/index?continue=http://translate.google.com/translate_tts%3Fie%3DUTF-8%26tl%3Den%26q%3DHello%2Bdear%2Bfriends&q=EgRbegWvGJ3FldEFIhkA8aeDS952qU94sbK8DAgP55pH8cbMicZdMgFy
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
    at com.example.TTS.GoogleTextToSpeech.say(GoogleTextToSpeech.java:32)
    at com.example.TTS.Main.main(Main.java:9)




Все, что я понял на данный момент, это то, что: в моем случае ошибка в строках:


Используется синтаксис Java
at com.example.TTS.GoogleTextToSpeech.say (GoogleTextToSpeech.java:32)
at com.example.TTS.Main.main (Main.java:9)



затем вызывается код библиотеки MP3 Decoder / player / converter,
который открывает соединение с translate.google.com, который:
1. перенаправляет на страницу с CAPTCHA
2. возвращает статус 503 Услуга недоступна


Мои вопросы:

1. Я ввел правильные комментарии в программу?

2. Я не совсем понимаю, как работает эта программа и зачем ей нужна библиотека jl1.0.1.jar. Может быть можно обойтись без библиотеки и работать напрямую с API?

3. Что делать, чтобы программа работала правильно? Может быть, мне нужно пройти регистрацию Google, чтобы я мог использовать этот API без капчи?

 Профиль  
                  
 
 Re: Text to speech с помощь Java и Eclipse на google API
Сообщение20.12.2017, 15:06 
Заслуженный участник


26/05/14
981
1. Ваши комментарии правильные но бесполезные. Вы комментируете вещи которые очевидны из чтения кода. Они не нужны. Хорошие комментарии дополняют код а не пересказывают его.
2. Гугл говорит что эта библиотека отвечает за издание звуков. Без неё ваше приложение будет немым.
3. Вы правы. Надо чтобы с вашей машины из браузера соответствующая страница была доступна без капчи. Вероятно, капча вызвана тем что вы многократно запускали эту программу и сервер заподозрил вас в неправильном использовании сервиса. В документации на сервис найдите условия его использования.

 Профиль  
                  
 
 Re: Text to speech с помощь Java и Eclipse на google API
Сообщение21.12.2017, 20:17 


14/06/15
144
slavav в сообщении #1276738 писал(а):
3. Вы правы. Надо чтобы с вашей машины из браузера соответствующая страница была доступна без капчи. Вероятно, капча вызвана тем что вы многократно запускали эту программу и сервер заподозрил вас в неправильном использовании сервиса. В документации на сервис найдите условия его использования.


Хотелось бы услышать больше конкретики

 Профиль  
                  
 
 Re: Text to speech с помощь Java и Eclipse на google API
Сообщение21.12.2017, 20:33 
Заслуженный участник


26/05/14
981
Я вижу третий пункт достаточно конкретным: есть проблема в использовании сервиса изнутри программы, решаем проблему использования сервиса (отдельно от программы). Затем тестируем всё вместе.
Если у вас есть вопросы, задайте их.

 Профиль  
                  
 
 Re: Text to speech с помощь Java и Eclipse на google API
Сообщение21.12.2017, 21:24 


14/06/15
144
slavav в сообщении #1277363 писал(а):
Если у вас есть вопросы, задайте их.

Где прочесть про использования сервиса?

 Профиль  
                  
 
 Re: Text to speech с помощь Java и Eclipse на google API
Сообщение21.12.2017, 21:52 
Заслуженный участник


26/05/14
981
Документацию ищите, пожалуйста, сами.
https://stackoverflow.com/questions/9893175/google-text-to-speech-api - тут люди чинят вашу проблему. В кратце: вы используете устаревший сервис, лучше использовать другой, но и этот починить можно.

 Профиль  
                  
 
 Re: Text to speech с помощь Java и Eclipse на google API
Сообщение21.12.2017, 21:58 


14/06/15
144
slavav в сообщении #1277409 писал(а):
но и этот починить можно.


То есть как то обходить капчу?

 Профиль  
                  
 
 Re: Text to speech с помощь Java и Eclipse на google API
Сообщение21.12.2017, 22:14 
Заслуженный участник


26/05/14
981
Прочитайте текст по ссылке. Если у вас возникнут вопросы, пожалуйста, задавайте.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Missir


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group