"Audio"クラスを作成し、アンドロイドのText to Speech APIを使用してテキストを読み取ろうとするアクティビティがあります。言語がサポートされていない場合、MediaPlayerを使用してサーバーからカスタムmp3ファイルを再生しようとします。 MediaPlayerのに失敗した場合は最後に、テキストを読むためにニュアンスSpeechKitを使用しています。ニュアンスセッションを破棄する
私の問題は、私は活性を破壊したとき、私は破壊/あまりにもニュアンスの音声を停止したいと私はどのようにわからないですNuanceオーディオをシャットダウンします。
Activityクラス
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はnullではなく、再生中のAudioPlayerです。私は彼にstop()メソッドを呼び出すと、彼が止まらない理由を見つけることができません。
ニュアンスとは何ですか?
ニュアンスを使用しているのはこれが初めてのことです。これはこれに熟練していません。基本的に私はそれをAndroid Text to Speechの代替品のように見ています。私は私のプロジェクトでこれを持っているのはなぜ
?
私のプロジェクトには4つの主要言語があり、テキストを読むにはテキスト読み上げ機能が必要です。問題は、AndroidのText to Speechが、Nuanceがサポートしているこれらの言語の一部をサポートしていないことです。
なぜニュアンスが最後の選択肢ですか?
ニュアンスにはコストがかかります。私はアンドロイドTTSまたはMediaPlayerを使用しようとします。それらの2つが失敗した場合にのみ、私はNuanceを使用します。それは私のテキストを読む最後の手段です! - トランザクションをキャンセル
cancel()
:
少し時間があるなら、私は 'ニュアンス'について聞いて嬉しいです。あなたが使っているものは何ですか?それはどのように役立ちますか?私は見当もつかない -__- 。それについて聞くのが大好きです:)あなたも+1を得ることができるかもしれません –
私は今答えることができるいくつかの質問で編集しました!希望が助けてくれる!ありがとう! – Ravers
あなたが問題の状態にあってもそれが本当に感謝してくれてありがとうございます+1 –