这是我在这里的第一篇文章。我是Android编程的新手。我想创建一个应用程序,可以在其中将文本输出转换为语音文件,并将音频文件保存到数据库中。我听说过synthesizeToFile(),但不是。
使用此代码并从资产文件夹中获取mp3文件,然后尝试使用此代码。
mMediaPlayer = new MediaPlayer();
mMediaPlayer = MediaPlayer.create(this,R.raw.button);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.start();
mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mMediaPlayer.stop();
}
});
synthesizeToFile()应该创建一个wav(您可以将其解码并发送到db或另存为文件或进行任何操作),然后可以使用Nitesh的代码对其进行播放。
来自http://android-developers.blogspot.fi/2009/09/introduction-to-text-to-speech-in.html:
HashMap<String, String> myHashRender = new HashMap();
String wakeUpText = "Are you up yet?";
String destFileName = "/sdcard/myAppCache/wakeUp.wav";
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, wakeUpText);
mTts.synthesizeToFile(wakeUpText, myHashRender, destFileName);
一旦通知合成完成,您就可以播放就像其他音频资源一样输出文件android.media.MediaPlayer。
您应该保存在tts
文件资产文件夹中。
mTTS = new TextToSpeech(this,new TextToSpeech.OnInitListener()
private String mAudioFilename = "";
private final String mUtteranceID = "totts";
@Override
public void onInit(int status) {
bsave.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
saveToAudioFile(mEditText.getText().toString().trim());
}
});
CreateFile();
}
private void CreateFile() {
// Perform the dynamic permission request
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION_WRITE_EXTERNAL_STORAGE);
// Create audio file location
File sddir = new File(Environment.getExternalStorageDirectory() + "/My File/");
sddir.mkdir();
mAudioFilename = sddir.getAbsolutePath() + "/" + mUtteranceID + ".wav";
}
private void saveToAudioFile(String text) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mTTS.synthesizeToFile(text, null, new File(mAudioFilename), mUtteranceID);
Toast.makeText(MainActivity.this, "Saved to " + mAudioFilename, Toast.LENGTH_LONG).show();
} else {
HashMap<String, String> hm = new HashMap();
hm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,mUtteranceID);
mTTS.synthesizeToFile(text, hm, mAudioFilename);
Toast.makeText(MainActivity.this, "Saved to " + mAudioFilename, Toast.LENGTH_LONG).show();
}
}
});