Tôi đang thực hiện ứng dụng Text to Speech mẫu, trong yêu cầu của tôi là nhận văn bản từ người dùng bằng EditText và lưu văn bản đầu vào dưới định dạng .wav/.mp3 và được lưu trữ trong Bộ nhớ ngoài. Tôi đã sử dụng đoạn mã sau cho quá trình này nhưng tôi sẽ không thành công.Làm cách nào để lưu tệp Văn bản thành giọng nói dưới định dạng .wav/.mp3 trong Bộ nhớ ngoài
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Save in Sdcard" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Play the text file" />
</LinearLayout>
TTS_AudioActivity.java
public class TTS_AudioActivity extends Activity {
/** Called when the activity is first created. */
Button store, play;
EditText input;
String speakTextTxt;
private TextToSpeech mTts;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
store = (Button) findViewById(R.id.button1);
play = (Button) findViewById(R.id.button2);
input = (EditText) findViewById(R.id.editText1);
store.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
speakTextTxt = input.getText().toString();
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 + "/sounds/");
appTmpPath.mkdirs();
String tempFilename = "tmpaudio.wav";
String tempDestFile = appTmpPath.getAbsolutePath() + "/"
+ tempFilename;
mTts.synthesizeToFile(speakTextTxt, myHashRender, tempDestFile);
}
});
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
final MediaPlayer mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource("/sdcard/sounds/tmpaudio.wav");
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.start();
mMediaPlayer
.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mMediaPlayer.stop();
}
});
}
});
}
}
trong này, khi tôi bấm nút Store, nhập văn bản phải được lưu trữ như là định dạng .wav, cho điều này tôi đã sử dụng hướng dẫn dành cho nhà phát triển biểu mẫu đoạn mã. Sau khi lưu thành công, khi tôi nhấp vào nút Phát, tệp lưu phải phát. Làm thế nào tôi có thể đạt được điều này. Cảm ơn trước.
+1 cho câu hỏi. Tôi cũng có yêu cầu tương tự Nếu bạn có nó cho tôi biết hoặc cập nhật với câu trả lời .. Cảm ơn .. –
Bạn đã có câu trả lời cho điều này? –