Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Реализация text-to-speech на Java и Eclipse с помощью google API / 1 сообщений из 1, страница 1 из 1
13.12.2017, 22:00
    #39569280
sashavak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация text-to-speech на Java и Eclipse с помощью google API
Здравствуйте.

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

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

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

Связать проект с библиотекой http://mvnrepository.com/artifact/javazoom/jlayer/1.0.1] JLayer ( jl1.0.1.jar ) для воспроизведения mp3 с java

Создать экземпляр класса:
Код: java
1.
GoogleTextToSpeech gtts = new GoogleTextToSpeech()



Использовать метод:
Код: java
1.
gtts.say ("Hello everybody", "en")

Первый аргумент фраза для произнесения, второй - язык.


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


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
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
1.
2.
3.
4.
5.
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
1.
2.
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 без капчи?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Реализация text-to-speech на Java и Eclipse с помощью google API / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]