Tôi đang phát triển ứng dụng Android, trong đó tôi đang sử dụng chuyển đổi văn bản thành giọng nói. Tôi cần gì khi mở ứng dụng chạy văn bản sang chuyển đổi giọng nói. Sau khi hoàn thành điều này, tôi muốn làm một số điều. Mã của tôi trông giống nhưKhông thể phát hiện hoàn thành TTS (gọi lại) android.
public class Mainactivity extends Activity implements OnInitListener, OnUtteranceCompletedListener{
private static int REQ_CODE = 1;
private TextToSpeech tts = null;
private boolean ttsIsInit = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startTextToSpeech();
}
private void startTextToSpeech() {
Intent intent = new Intent(Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(intent, REQ_CODE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQ_CODE) {
if (resultCode == Engine.CHECK_VOICE_DATA_PASS) {
tts = new TextToSpeech(this, this);
}
else {
Intent installVoice = new Intent(Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installVoice);
}
}
}
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
ttsIsInit = true;
int result = tts.setOnUtteranceCompletedListener(this);
if (tts.isLanguageAvailable(Locale.ENGLISH) >= 0)
tts.setLanguage(Locale.ENGLISH);
tts.setPitch(5.0f);
tts.setSpeechRate(1.0f);
HashMap<String, String> myHashAlarm = new HashMap<String, String>();
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM));
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "SOME MESSAGE");
tts.speak("hi how are you?", TextToSpeech.QUEUE_FLUSH, myHashAlarm);
}
}
@Override
public void onDestroy() {
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
}
@Override
public void onUtteranceCompleted(String uttId) {
Toast.makeText(Mainactivity.this,"done", Toast.LENGTH_LONG).show();
if (uttId.equalsIgnoreCase("done")) {
Toast.makeText(Mainactivity.this,"inside done", Toast.LENGTH_LONG).show();
}
}
}
Khi tôi mở văn bản ứng dụng thành lời nói hoạt động tốt. Nhưng làm thế nào để phát hiện liệu văn bản để nói hoàn thành hay không.Need giúp ..... Cảm ơn bạn .....
Hi david tôi đã cố gắng cho bạn giải pháp nhưng nó mang lại cho tôi lỗi cho setOnUtteranceProgressListener.And cho onUtteranceCompleted nó thực hiện mà không có lỗi nhưng không đưa ra thông báo trong onUtteranceCompleted để có cách giải quyết vấn đề này. Cho dù tôi đang làm bất cứ điều gì sai.Need Trợ giúp ... – nilkash
Bạn gọi 'int result = tts.setOnUtteranceCompletedListener (thi s);' để thiết lập người nghe. Kiểm tra giá trị của biến 'result'. THÀNH CÔNG (0) hoặc ERROR (-1) sẽ trở lại. Ngoài ra, thêm một số đăng nhập vào 'onUtteranceCompleted()' để xem liệu nó có thực sự ở đó hay không. Ngoài ra kiểm tra logcat của bạn cho bất kỳ lỗi lạ khác. –
Cảm ơn bạn đã cảm ơn vì đã trả lời. Làm việc của nó fine.I sử dụng đăng nhập thay vì bánh mì nướng và làm việc tốt của nó. Cảm ơn bạn... – nilkash