У меня есть активность, которая создает класс «Аудио» и пытается использовать андроид Text to Speech API для чтения некоторого текста. Если язык не поддерживается, он пытается использовать MediaPlayer для воспроизведения пользовательского mp3-файла с сервера. Наконец, если MediaPlayer не удается, он использует Nuance SpeechKit читать текст:Уничтожить сеанс Nuance
Моя проблема, когда я уничтожу деятельность, я хочу, чтобы уничтожить/остановить аудио Nuance тоже, и я не знаю, как выключение звука Nuance.
активность класс
private Audio audio;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
audio = new Audio(this).play("my text to read");
}
@Override
protected void onPause() {
audio.pause();
super.onPause();
}
@Override
protected void onDestroy() {
audio.destroy();
super.onDestroy();
}
Аудио класс
private TextToSpeech tts;
private MediaPlayer player;
private Session session;
public void play(String text) {
// check if supported
if (supported) tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
else mediaPlayer(text);
}
private void mediaPlayer(String text) {
// make some queries on server to find the file url
if (queryFoundFile) {
player = new MediaPlayer();
player.setDataSource(myFileUrl);
player.setAudioStreamType(3);
player.prepare();
player.start();
} else nuancePlayer(text);
}
private void nuancePlayer(String text) {
Transaction.Options options = new Transaction.Options();
options.setLanguage(new Language("eng-USA"));
session = Session.Factory.session(activity, myServer, appKey);
session.speakString(text, options, new Transaction.Listener() {
@Override
public void onError(Transaction transaction, String s, TransactionException e) {
e.printStackTrace()
}
});
// it reaches here and nuance plays the audio
}
// these are the methods I call when the activity is paused or destroyed
public void pause() {
if (tts != null) tts.stop();
if (player != null) player.stop();
if (nuance != null) nuance.getAudioPlayer().stop(); // don't work
}
public void destroy() {
if (tts != null) tts.shutdown();
if (player != null) player.release();
if (nuance != null) nuance.getAudioPlayer().stop(); // don't work
}
Если я использую текст в речь или MediaPlayer, и если я разрушаю свою активность, звук немедленно уничтожается. Но я не могу уничтожить звук, если играет Нюанс. Он просто продолжает говорить.
Выполнены некоторые отладки и вызывается методы pause() и destroy(). Также nuance.getAudioPlayer не является нулевым и является проигрывателем AudioPlayer. Я не могу найти причину, по которой он не останавливается, когда я вызываю метод stop() на него.
Что такое нюанс?
Это мой первый раз, когда я использую Nuance, поэтому я не настолько опытен с этим. В основном я рассматриваю это как альтернативу Android Text to Speech.
Почему я это на мой проект?
В моем проекте есть 4 основных языка, и мне нужно иметь текстовую функцию для чтения текста. Проблема в том, что андроид Text to Speech не поддерживает некоторые из этих языков, поддерживаемых Nuance.
Почему Нюанс мой последний вариант?
Поскольку у Nuance есть издержки. Я пытаюсь использовать android TTS или MediaPlayer. Только если эти два неудачных, я использую Nuance. Последнее средство, чтобы прочитать мой текст!
Если у вас есть небольшое время, я буду рад услышать о «Нюансе». Для чего вы это используете и как это полезно? Я понятия не имею -__- . Хочется услышать об этом :) может быть, вы можете получить +1 слишком –
Я отредактировал некоторые вопросы, на которые я могу ответить сейчас! Надеюсь, это поможет! Благодаря! – Ravers
круто спасибо за ваше время за то, что действительно цените его, даже если вы находитесь в состоянии проблемы +1 –