2012-10-19 121 views
2

我想知道是否有任何方法可以保存輸入到android揚聲器。我的意思是保存揚聲器正在播放的當前語音。這是我需要的,因爲android TTS語音合成器不起作用所以我無法保存音頻,我只能播放它。 感謝你, 斯里卡特Android TTS語音合成器

回答

3

通過下面的代碼解決了這個問題(Android的TTS開始工作)

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