【发布时间】:2020-04-04 03:40:02
【问题描述】:
这是我在这里的第一篇文章。我是 Android 编程新手。我想创建一个应用程序,我可以在其中将文本到语音的输出保存到我的数据库中的音频文件中。我听说过 synthesizeToFile() 但不是这样。
【问题讨论】:
这是我在这里的第一篇文章。我是 Android 编程新手。我想创建一个应用程序,我可以在其中将文本到语音的输出保存到我的数据库中的音频文件中。我听说过 synthesizeToFile() 但不是这样。
【问题讨论】:
synthesizeToFile() 应该创建一个 wav(您可以将其解码并发送到您的数据库或保存为文件或您正在使用它做什么),您可以使用 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。
【讨论】:
使用此代码并从 assets 文件夹中获取 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();
}
});
【讨论】:
您应该保存在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();
}
}
});
【讨论】: