Озвучка текста из строки (Java)

691
22 января 2017, 14:24

Каким образом можно реализовать озвучку строки (из того же NetBeans под Windows,не под Android!) при помощи встроенного синтезатора речи Android.

Видел тему Озвучить текст из TextView

Не получилось разобраться.

Суть в том,что необходимо ввести в самом коде строку,а Text-To-Speech озвучит его.

Подключил библиотеку Android.jar - безуспешно. http://www.java2s.com/Code/Jar/a/Downloadandroidjar.htm

Нужна ваша помощь.

Точка входа :

//реализован интерфейс с полем ввода и кнопкой без листенера.
package First;
import android.speech.tts.TextToSpeech;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public abstract class Main implements TextToSpeech.OnInitListener {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Hello");
        frame.setSize(400, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        FlowLayout fl = new FlowLayout();
        frame.setLayout(fl);
        JButton button = new JButton("Test");
        button.setSize(120, 120);
        String s = "Hello";
        JTextField tf1;
        JPanel panel = new JPanel();
        tf1 = new JTextField(20);
        frame.add(panel);
        panel.add(tf1);
        panel.add(button);
    }
 }

Класс с говорилкой:

package First;
import java.util.Locale;
import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class AndroidTextToSpeechActivity extends Activity implements
        TextToSpeech.OnInitListener {
/**
 * Called when the activity is first created.
 */
    private TextToSpeech tts;
    private Button btnSpeak;
    private EditText txtText;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tts = new TextToSpeech(this, this);
        btnSpeak = (Button) findViewById(R.id.btnSpeak);
        txtText = (EditText) findViewById(R.id.txtText);
        // button on click event
        btnSpeak.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                speakOut();
            }
        });
    }
    @Override
    public void onDestroy() {
        // Don't forget to shutdown tts!
        if (tts != null) {
            tts.stop();
            tts.shutdown();
        }
        super.onDestroy();
    }
    @Override
    public void onInit(int status) {
        if (status == TextToSpeech.SUCCESS) {
            int result = tts.setLanguage(Locale.US);
            if (result == TextToSpeech.LANG_MISSING_DATA
                    || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                Log.e("TTS", "This Language is not supported");
            } else {
                btnSpeak.setEnabled(true);
                speakOut();
            }
        } else {
            Log.e("TTS", "Initilization Failed!");
        }
    }
    private void speakOut() {
        String text = txtText.getText().toString();
        tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
    }
}

т.е. использовать библиотеку Android.jar чтобы в Windows в IDE NetBeans реализовать говорилку.

В сети до меня не использовали библиотеку Android.jar под Windows,так что документации нет.

По сути это библиотека содержащая доступ ко всем методом и функциям ядра Android.

Да,это что-то вроде ядра.

Answer 1

Возможно, вы не смогли осознать, что он асинхронный. То есть после создания экземпляра TextToSpeach, сразу отправлять текст на говорение нельзя: нужно дождаться окончания инициализации (информация приходит в лиснер, которые передается конструктору), установить язык и проверить его доступность, и только потом что-то говорить.

На некоторых устройствах TTS вообще изначально не установлен, и пользователю будет предложено выкачать и поставить соответствующий модуль. Соответственно, синтеза до этого не будет.

READ ALSO
Jackson 2 и Конвертация java объекта в json

Jackson 2 и Конвертация java объекта в json

Добрый деньПытаюсь отправить объект из спринг контроллера на ангуляр и на вьюшку:

545
Что такое Null Pointer Exception и как его исправить?

Что такое Null Pointer Exception и как его исправить?

Что из себя представляет исключение Null Pointer Exception (javalang

441
jquery and html select

jquery and html select

Доброго времени суток всем, столкнулся с такой проблемой есть одно поле ввода input id="siF3" и виподаюши список select id="country" в списке несколько стран...

370
Помощь с Semantic UI

Помощь с Semantic UI

Доброго времени суток, подскажите пожалуйста почему может не работать выпадающий список Compact Dropdown если сделать append всего блока

373