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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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