文字转语音 API
TextToSpeech API
在 Android TextToSpeech 中,我们怎么知道任一 Speech 已完成。我想在演讲结束后更改图标。我在 Button Onclick Listener 中声明了 tts.speak() 。一段时间后,我使用线程后延迟处理程序更改图标。但是要阅读的文本在不同 times.It 处有所不同,但没有成功。 CheckThemestart()、ChangeThemeStop() 是更改图标的函数。
我在 OnCreate() 中声明了以下内容:
tts = new TextToSpeech(getContext(), new
TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status != TextToSpeech.ERROR) {
tts.setLanguage(Locale.UK);
tts.speak("",TextToSpeech.QUEUE_FLUSH,null);
}
按钮-onClickListener :
if (!tts.isSpeaking()) {
CheckThemeStart();
tts.speak(plainText, TextToSpeech.QUEUE_FLUSH, null);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//change icon after spoken
CheckThemeStop();
}
}, 15000);
} else {
CheckThemeStop();
tts.stop();
}
您可以注册 UtteranceProgressListener
用于 tts 开始和结束时间以及错误处理。
tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String s) {
}
@Override
public void onDone(String s) {
}
@Override
public void onError(String s) {
}
});
如果我们声明一个具有唯一字符串 ID 的 hasmap 参数,并将该 ID 传递给比较语句 ID(如果匹配),它会执行您在 onUtterenceCompletedListener() 中声明的内容。
以下是代码片段。
HashMap<String,String> params=new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"SpeakID");
tts.speak(plainText, TextToSpeech.QUEUE_FLUSH,params);
tts.setOnUtteranceCompletedListener(new TextToSpeech.OnUtteranceCompletedListener() {
@Override
public void onUtteranceCompleted(String utteranceId) {
if(utteranceId.equals("SpeakID"))
{
CheckThemeStop();
}
}
});
在 Android TextToSpeech 中,我们怎么知道任一 Speech 已完成。我想在演讲结束后更改图标。我在 Button Onclick Listener 中声明了 tts.speak() 。一段时间后,我使用线程后延迟处理程序更改图标。但是要阅读的文本在不同 times.It 处有所不同,但没有成功。 CheckThemestart()、ChangeThemeStop() 是更改图标的函数。
我在 OnCreate() 中声明了以下内容:
tts = new TextToSpeech(getContext(), new
TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status != TextToSpeech.ERROR) {
tts.setLanguage(Locale.UK);
tts.speak("",TextToSpeech.QUEUE_FLUSH,null);
}
按钮-onClickListener :
if (!tts.isSpeaking()) {
CheckThemeStart();
tts.speak(plainText, TextToSpeech.QUEUE_FLUSH, null);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//change icon after spoken
CheckThemeStop();
}
}, 15000);
} else {
CheckThemeStop();
tts.stop();
}
您可以注册 UtteranceProgressListener
用于 tts 开始和结束时间以及错误处理。
tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String s) {
}
@Override
public void onDone(String s) {
}
@Override
public void onError(String s) {
}
});
如果我们声明一个具有唯一字符串 ID 的 hasmap 参数,并将该 ID 传递给比较语句 ID(如果匹配),它会执行您在 onUtterenceCompletedListener() 中声明的内容。 以下是代码片段。
HashMap<String,String> params=new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"SpeakID");
tts.speak(plainText, TextToSpeech.QUEUE_FLUSH,params);
tts.setOnUtteranceCompletedListener(new TextToSpeech.OnUtteranceCompletedListener() {
@Override
public void onUtteranceCompleted(String utteranceId) {
if(utteranceId.equals("SpeakID"))
{
CheckThemeStop();
}
}
});