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