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