Itmoing100
@Itmoing100
engineer

Как заставить работать text-to-speech (TTS) на Java?

Здравствуйте.

Мои вопросы (их несколько и они выделены жирным) идут ниже. Сначала короткое введение.

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

Суть программы сводится к следующему:

1. Связать проект с библиотекой JLayer для воспроизведения mp3 с java (Используя библиотеку jl1.0.1.jar).

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

3. Использовать метод: gtts.say("Hello everybody", "en"). Первый аргумент фраза для произнесения, второй - язык.

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

package com.example.TTS; // пакет в котором лежит класс Main

import com.example.TTS.GoogleTextToSpeech; // импорт класса GoogleTextToSpeech

public class Main {
	
	public static void main(String[] args) {
		GoogleTextToSpeech gtts = new GoogleTextToSpeech(); // Создать экземпляр класса
		gtts.say("Hello dear friends", "en"); // Использовать метод 
//  gtts.say("Bonjour mon amis!", "fr");
	}
}


Класс GoogleTextToSpeech:

package com.example.TTS; // пакет в котором лежит класс GoogleTextToSpeech

import java.io.InputStream; // импорт библ. классов
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import javazoom.jl.player.Player; // импорт  класса из jl1.0.1.jar

public class GoogleTextToSpeech {
	private static String ENCODING = "UTF-8"; // создание констант
	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);
			String sURL = URL_BEGINNING + ENCODING + URL_TL + lang + URL_QUERY + phrase;
	        URL url = new URL(sURL);
	        
	        //Create connection
	        URLConnection urlConn = url.openConnection();
	        HttpURLConnection httpUrlConn = (HttpURLConnection) urlConn;
	        httpUrlConn.addRequestProperty(USER_AGENT_LITERAL, USER_AGENT);
	        
	        //Create stream
	        InputStream mp3WebStream = urlConn.getInputStream();
	        
	        //Play stream
	        Player plr = new Player(mp3WebStream);
	        plr.play();
		}
		catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}


Package explorer выглядит у меня так:
image.png
Запускаю программу путем выполнения Run as → Java Application на Main.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)

У меня возникают проблемы подобного плана JRE4png.png

Когда я щелкаю на, например, HttpURLConnection.java:1894.
Как заставить работать этот text-to-speech (TTS) на Java, те какие изменения в него внести?
  • Вопрос задан
  • 843 просмотра
Пригласить эксперта
Ответы на вопрос 1
Гугл вроде как закрыл доступ к своему TTS
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы