Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java Мобильная разработка (Android)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2015, 04:21   #1
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию перевод текста в звук на android

Подскажите пожалуйста что я делаю не так. андрюша отказывается со мной говорить)) использую стандартный генератор речи. или хотя бы посоветуйте что можно вместо него использовать. тестирую на телефоне с ведром 4.0.3

Код:
package com.example.awse.viamigoidd;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle; 
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.*;
import android.widget.Toast; 
import java.util.Locale;


public class MainActivity extends Activity implements OnInitListener{
 
    private int MY_DATA_CHECK_CODE = 0;
    private TextToSpeech myTTS;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        setContentView(R.layout.startpage_layout);
        Intent checkTTSIntent = new Intent();
        checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);

    }
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == MY_DATA_CHECK_CODE) {
            if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
                myTTS = new TextToSpeech(this, this);
            }
            else {
                Intent installTTSIntent = new Intent();
                installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(installTTSIntent);
            }
        }
    }
    public void onInit(int initStatus) {
        if (initStatus == TextToSpeech.SUCCESS) {
            myTTS.setLanguage(Locale.US);
        }
        else if (initStatus == TextToSpeech.ERROR) {
            Toast.makeText(this, "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show();
        }
    }
    private void speakWords(String speech) {
        myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null);
    }

    public void  textToSpeechButtonClick(View v){
        Toast.makeText(this, "start saying", Toast.LENGTH_LONG).show();
        speakWords("hello");
        Toast.makeText(this, "end saying", Toast.LENGTH_LONG).show();
    }
}
sinestro вне форума Ответить с цитированием
Старый 10.06.2015, 10:00   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Эм.. Предлагаю так : QPython3 - это программка на Андрейку. Запускаем, открываем Scripts, там находи что "say*", радуемся
Poma][a вне форума Ответить с цитированием
Старый 10.06.2015, 20:21   #3
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию

я с питоном не знаком, и переписавать на него имеющийся код не хочется. говорилка будет являться частью большего приложения
sinestro вне форума Ответить с цитированием
Старый 10.06.2015, 23:46   #4
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию

Проблема решена. Откопал рабочий пример. Может кому пригодится:

Код:
package com.example.awse.viamigoidd;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.speech.tts.*;
import android.util.Log;
import android.widget.EditText;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.*;
import android.widget.Toast;

import java.util.Locale;


public class MainActivity extends Activity implements OnInitListener{

    public TextToSpeech myTTS;
    public int MY_DATA_CHECK_CODE = 0;
    public void onInit(int initStatus) {

        // check for successful instantiation
        if (initStatus == TextToSpeech.SUCCESS) {
            if (myTTS.isLanguageAvailable(Locale.US) == TextToSpeech.LANG_AVAILABLE)
                myTTS.setLanguage(Locale.US);
        } else if (initStatus == TextToSpeech.ERROR) {
            Toast.makeText(this, "Sorry! Text To Speech failed...",
                    Toast.LENGTH_LONG).show();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.startpage_layout);
        Intent checkTTSIntent = new Intent(); checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == MY_DATA_CHECK_CODE) {
            if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
                // the user has the necessary data - create the TTS
                myTTS = new TextToSpeech(this, this);
            } else {
                // no data - install it now
                Intent installTTSIntent = new Intent();
                installTTSIntent
                        .setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(installTTSIntent);
            }
        } 
        super.onActivityResult(requestCode, resultCode, data); 
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        myTTS.shutdown();
    }

    public void speakWords(String speech) { 
        myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null);
    } 
    public void  textToSpeechButtonClick(View v){
        speakWords("hello");
    } 
}
sinestro вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод текста с Pascal V1rus.25 Visual C++ 1 29.03.2013 11:18
Перевод текста в цифры Vadiliy Общие вопросы C/C++ 3 26.12.2012 15:19
Перевод текста в бинарный код в C. MARTINS Помощь студентам 0 13.03.2011 13:03
Звук Звууууук Звук ... не рабоает звук.. Zvuuuuk Компьютерное железо 2 22.01.2011 17:53
Перевод текста... Ar][ange1 Общие вопросы Delphi 1 06.01.2009 06:56