我想知道是否有任何方法可以将输入保存到 android 扬声器。我的意思是保存扬声器正在播放的当前声音。我需要这个因为 android TTS 语音合成器不起作用。所以我无法保存音频,我可以玩。谢谢你,斯里坎特
问问题
2675 次
1 回答
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);
}
}
}
}
于 2012-10-19T09:13:26.243 回答