Android TTS speech synthesizer

2019-02-19 05:45发布

I want to know whether is there any way I can save the input to the android speaker.I mean save the current voice being played by the speaker.This I need because android TTS speech synthesizer doesn't work.So I cannot save the audio,I can just play it. Thanking you, Sreekanth

1条回答
老娘就宠你
2楼-- · 2019-02-19 06:05

Solved the issue by the following code (android TTS started working)

public class TextToSpeechActivity extends Activity implements OnInitListener {
  private static TextToSpeech mTts;
  private int MY_DATA_CHECK_CODE    =   0;
  private Button mSpeakButton;
 //String name;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mSpeakButton  = (Button)findViewById(R.id.btnSpeak);        
        mSpeakButton.setEnabled(false);
        mSpeakButton.setOnClickListener(new OnClickListener() {  
           @Override
           public void onClick(View v) {
            sayHello();
           }
        });

        Intent checkTTSIntent = new Intent();
        checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE); 

    }


    public void onInit(int status){
  // TODO Auto-generated method stub
  if (status == TextToSpeech.SUCCESS) {
             // Set preferred language to US english.
            // Note that a language may not be available, and the result will indicate this.
            int result = mTts.setLanguage(Locale.US);
            // Try this someday for some interesting results.
            // int result mTts.setLanguage(Locale.FRANCE);
            if (result == TextToSpeech.LANG_MISSING_DATA ||
                result == TextToSpeech.LANG_NOT_SUPPORTED) {
               // Lanuage data is missing or the language is not supported.
                Log.e("TAG", "Language is not available.");
            }
            else 
            {
                // Check the documentation for other possible result codes.
                // For example, the language may be available for the locale,
                // but not for the specified country and variant.

                // The TTS engine has been successfully initialized.
            }
        } else {
            // Initialization failed.
            Log.e("TAG", "Could not initialize TextToSpeech.");
        }

 }

    private void sayHello() 
    {        
        String speakTextTxt                  = "Good morning,have a nice day";
        HashMap<String, String> myHashRender = new HashMap<String, String>();
        myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, speakTextTxt);

        String exStoragePath                = Environment.getExternalStorageDirectory().getAbsolutePath();
        File appTmpPath                     = new File(exStoragePath);
        appTmpPath.mkdirs();
        String tempFilename                 = "tmpaudio.wav";
        String tempDestFile                 = appTmpPath.getAbsolutePath() + "/" + tempFilename;

        mTts.synthesizeToFile(speakTextTxt, myHashRender, tempDestFile);
    }

 @Override
 protected void onDestroy() {
  // TODO Auto-generated method stub
      super.onDestroy();
         if (mTts != null) {
             mTts.stop();
             mTts.shutdown();
          }

 }

 protected 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
               mTts  =  new TextToSpeech(this, this);
               mSpeakButton.setEnabled(true);

           }else {               //no data - install it now will no go to Google Play.
                Intent installTTSIntent = new Intent();
                installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(installTTSIntent);
           }
      }
 }
}
查看更多
登录 后发表回答