Форум программистов, компьютерный форум, киберфорум
Java: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 27.02.2016
Сообщений: 34

Как довести до ума Text to speech на Java и Eclipse с google API?

21.12.2017, 22:24. Показов 2447. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте.

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

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

Суть программы (она состоит из 2 классов и подключаемой библиотеки) сводится к следующему:
  • Связать проект с библиотекой 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. Я не совсем понимаю, как работает эта программа и зачем ей нужна библиотека jl1.0.1.jar. Может быть можно обойтись без библиотеки и работать напрямую с API?

2. Что делать, чтобы программа работала правильно? Может быть, мне нужно пройти регистрацию Google, чтобы я мог использовать этот API без капчи?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.12.2017, 22:24
Ответы с готовыми решениями:

Google speech API и Java
Отправляю звуковой файл(.flac) гуглу. Path path= Paths.get("E:/Test/good.flac"); byte data = Files.readAllBytes(path); ...

Как сделать десериализацию ответа от Google Speech API v2
Всем привет. Объясните как сделать десериализацию ответа от Google Speech API v2. Нужно добраться до "купить велосипед". Вот...

Как использовать java-sdk text-to-speech от IBM или любой пример с github
Есть IntelliJ и некоторый минимальный опыт его использования (простейшее приложение, сборка jar) Программу создавал до сих пор через...

2
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
22.12.2017, 05:57
Цитата Сообщение от sashatgu Посмотреть сообщение
в моем случае ошибка в строках:
нет, тебя не пускают по этой ссылке, возможно с момента написания этой проги что то изменилось. Ты попробуй сам в браузере сформировать свою ссылку и перейти, а потом почитай доки гугла по функции.
Цитата Сообщение от sashatgu Посмотреть сообщение
зачем ей нужна библиотека jl1.0.1.jar
может там звук декодирует и/или выводит на твои колонки?

Цитата Сообщение от sashatgu Посмотреть сообщение
Может быть, мне нужно пройти регистрацию Google
нет сначала почитай доки гугла по АПИ транслейта
0
33 / 33 / 10
Регистрация: 12.07.2017
Сообщений: 90
23.12.2017, 09:37
Google все свои сервисы перевел на условно бесплатную и платную основы.
Ну да, по запросу "http://translate.google.com/translate_tts?ie=UTF-8&tl=en&q=Hello dear friends" он просто посылает.
А в гугле поиск выдает что text tot speech доступно через Google Clouds.
Надо зарегистрироваться в гугле, подключить а аккаунту Google Clouds и так далее, там целая канитель.
В общем анонимно их сервис уже использовать не получится. Но зато бесплатно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2017, 09:37
Помогаю со студенческими работами здесь

Google Speech API python
Всем привет! У меня в проекте возникла задача. Мне нужно сконвертировать аудио запись(.flac) в текст. Начал искать и наткнулся на готовое...

HttpWebRequest к Google speech api
Всем привет! Давненько уже интересуюсь ASR и TTS от гугла....давненько ищу, читаю материал что есть в инете. Таить не буду мысли в...

Распознавание речи. Google Speech API
Здравствуйте. Я прикрепляю простую программу для распознавания речи с помощью Google API. Она работает, но есть некоторые вопросы. ...

Распознавание речи (google speech api)
Здравствуйте, сейчас произошли какие то изменения у гугла, я была бы очень признательна, если бы Вы смогли помочь разобраться с...

Google Speech API - управление голосом
Привет. Мне нужно чтобы моя прога реагировала на голосовые команды. Хочу использовать Google Speech API, но не знаю как им пользоватся. Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru