前提・実現したいこと
AndroidのTTSをimportしてテキストを読み上げていて
その時にSSMLで読み方を指定したい。
どうすればSSMLが効いてくるのでしょうか?
発生している問題・エラーメッセージ
<speak><sub alias="げつまつ">月末</sub>まであと10日</speak>
と指定しても
発声する内容は
つきまつまであとじゅうにち
となってしまう。
TTSクラス
Java
1import android.content.Context; 2import android.speech.tts.TextToSpeech; 3import android.speech.tts.UtteranceProgressListener; 4 5public class TTS { 6 7 private static TextToSpeech textToSpeech; 8 private static boolean chkSpeak = false; 9 10 public static void init(final Context context) { 11 if (textToSpeech == null) { 12 textToSpeech = new TextToSpeech(context, new TextToSpeech.OnInitListener() { 13 @Override 14 public void onInit(int i) { 15 chkSpeak = true; 16 } 17 }); 18 } 19 } 20 21 public static void speak(final String text, final String utteranceld) { 22 textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null, utteranceld); 23 } 24 25 public static boolean isSpeaking() { 26 return textToSpeech.isSpeaking(); 27 } 28 29 public static void killSpeaking(){ 30 textToSpeech.stop(); 31 } 32 33 public static void setOnUtteranceProgressListener(UtteranceProgressListener l) { 34 textToSpeech.setOnUtteranceProgressListener(l); 35 } 36}
MainActivity.java
Java
1 2 // TextToSpeechの初期化処理を行う。 3 TTS.init(getApplicationContext()); 4 5 // TextToSpeechの読み上げ終了検知イベントリスナーを設定 6 TTS.setOnUtteranceProgressListener(new UtteranceProgressListener() { 7 @Override 8 public void onDone(String utteranceId) { 9 MainActivity.this.onTtsDone(); 10 } 11 12 @Override 13 public void onError(String utteranceId) {} 14 15 @Override 16 public void onStart(String utteranceId) {} 17 }); 18 19 String ssmlText = "<speak><sub alias=\"げつまつ\">月末</sub>まであと10日</speak>"; 20 21 TTS.speak(ssmlText, this.hashCode() + ""); 22
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/27 00:07
2018/07/27 01:46
2018/07/27 07:12 編集