3

에 작동하지 않는 나의 code.I 내 킷캣의 device.Toast의 목소리를들을 수없는 오전 등장하지만 목소리는 playing.I이 튜토리얼텍스트의 안드로이드 장치 아래

https://www.tutorialspoint.com/android/android_text_to_speech.htm

다음하고 있지 임
package com.example.insert; 
import android.os.Parcelable; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.app.Activity; 
import android.os.Bundle; 
import android.speech.tts.TextToSpeech; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import java.util.Locale; 
import android.widget.Toast; 
import android.util.Log; 
import java.lang.Object; 


public class SecondActivity extends AppCompatActivity { 
    TextToSpeech t1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 
     String emailid; 
     emailid = "Hi,say your email id"; 

     t1 = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() { 
      @Override 
      public void onInit(int status) { 
       if (status == TextToSpeech.SUCCESS) { 
        int result = t1.setLanguage(Locale.US); 
        if (result == TextToSpeech.LANG_MISSING_DATA 
          || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
         Toast.makeText(getApplicationContext(), "This language is not supported", Toast.LENGTH_SHORT).show(); 
        } 
       } else { 
        Toast.makeText(getApplicationContext(), "Initialization failed", Toast.LENGTH_SHORT).show(); 
       } 

      } 
     }); 


     // Toast.makeText(getApplicationContext(), emailid, Toast.LENGTH_SHORT).show(); 
     t1.speak(emailid, TextToSpeech.QUEUE_FLUSH, null); 

    } 


    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     // Don't forget to shutdown tts! 
     if (t1 != null) { 
      Log.e("TTS","speech on destroy"); 
      t1.stop(); 
      t1.shutdown(); 
     } 
    } 
} 

나는이 포스트를 따라 갔다.

Android TTS doesn't speak

는하지만 난 gameover, 라인과 definition_string을 이해하지 못했다.

남자 도와주세요

+0

수신 한 onInit (...) 후 t1.speak (...)을 호출해야합니다. –

+0

@ 닉 도와주세요 – Lakshmi

답변

0

로케일에 문제가있는 것 같습니다. 로그를 인쇄하십시오. 다음 코드를 시도하십시오.

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.app.Activity; 
import android.os.Bundle; 
import android.speech.tts.TextToSpeech; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import java.util.Locale; 
import android.widget.Toast; 


public class SecondActivity extends AppCompatActivity { 
    TextToSpeech t1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 
     String emailid; 
     emailid="Hi,say your email id"; 

     t1 = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() { 
      @Override 
      public void onInit(int status) { 
       if(status == TextToSpeech.SUCCESS) { 
        t1.setLanguage(Locale.US); 
        if (result == TextToSpeech.LANG_MISSING_DATA 
        || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
         Log.d(TAG, "This Language is not supported"); 
       } 
       }else{ 
        Log.d(TAG, "Initilization Failed!"); 
       } 

      } 
     }); 


     Toast.makeText(getApplicationContext(), emailid,Toast.LENGTH_SHORT).show(); 
     t1.speak(emailid, TextToSpeech.QUEUE_FLUSH, null); 

    } 


@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    // Don't forget to shutdown tts! 
    if (mTextToSpeech != null) { 
     Log.d(TAG, "speach on destroy"); 
     t1.stop(); 
     t1.shutdown(); 
    } 
} 
+0

. 코드도 작동하지 않습니다 – Lakshmi

+0

출력을보기 위해 토스트 시도했습니다. 새 코드를 추가했습니다. 확인하십시오. 토스트가 나타나지 않습니다. – Lakshmi

+0

토스트가 나타나지 않는 경우 , 문제는 귀하의 문자열과 같아요. 문자열을 변경하여 간단한 메시지를 디버그 해보십시오. 당신의 문자열에서 "안녕하세요, 당신의 이메일 주소를 말 하십시요"나는 ttf가 식별 할 수 없다고 생각합니다. "안녕하세요. 이메일 ID"또는 간단한 문자열로 시도해보십시오. – Rohit

0

난 당신이 ... TextToSpeech.OnInitListener에서의 주요 활동 클래스를 구현하지 않은 이유를 이해하지 않습니다!

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); 
    } 
} 
+0

@Shobit 버튼을 누르지 않고도 내 tts를 작동시키고 싶습니다. – Lakshmi

+0

이 질문에 참조 http://stackoverflow.com/questions/9668224/android-tts-doesnt-speak – Lakshmi

3

여기 내 코드입니다 :

여기 당신의 대답이다. 이 코드는 Nexus9에서 작동합니다 (로켈은 일본)

public class MainActivity extends AppCompatActivity{ 

    static final String TAG = "TTS"; 
    TextToSpeech mTts; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final String emailid; 
     emailid = "こんにちは"; 

     mTts = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() { 
      @Override 
      public void onInit(int status) { 
       if (status == TextToSpeech.SUCCESS) { 
        int result = mTts.setLanguage(Locale.JAPAN); 
        if (result == TextToSpeech.LANG_MISSING_DATA 
          || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
         Toast.makeText(getApplicationContext(), "This language is not supported", Toast.LENGTH_SHORT).show(); 
        } 
        else{ 
         Log.v("TTS","onInit succeeded"); 
         speak(emailid); 
        } 
       } else { 
        Toast.makeText(getApplicationContext(), "Initialization failed", Toast.LENGTH_SHORT).show(); 
       } 

      } 
     }); 
     setVolumeControlStream(AudioManager.STREAM_MUSIC); 
    } 

    void speak(String s){ 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      Log.v(TAG, "Speak new API"); 
      Bundle bundle = new Bundle(); 
      bundle.putInt(TextToSpeech.Engine.KEY_PARAM_STREAM, AudioManager.STREAM_MUSIC); 
      mTts.speak(s, TextToSpeech.QUEUE_FLUSH, bundle, null); 
     } else { 
      Log.v(TAG, "Speak old API"); 
      HashMap<String, String> param = new HashMap<>(); 
      param.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC)); 
      mTts.speak(s, TextToSpeech.QUEUE_FLUSH, param); 
     } 
    } 
    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     // Don't forget to shutdown tts! 
     if (mTts != null) { 
      Log.v(TAG,"onDestroy: shutdown TTS"); 
      mTts.stop(); 
      mTts.shutdown(); 
     } 
    } 
}