TextToSpeech Android无法正常工作
我正试图找出我的应用程序无法按预期工作的原因。为了找出原因,我创建了一个带有单个活动的小项目,在这个项目中,如果你按下一个按钮,就应该说出预定义的单词。我使用的是索尼Xperia Compact安卓9。我最近做了一些系统更新,这是原因吗TextToSpeech Android无法正常工作,android,google-text-to-speech,sony-xperia,Android,Google Text To Speech,Sony Xperia,我正试图找出我的应用程序无法按预期工作的原因。为了找出原因,我创建了一个带有单个活动的小项目,在这个项目中,如果你按下一个按钮,就应该说出预定义的单词。我使用的是索尼Xperia Compact安卓9。我最近做了一些系统更新,这是原因吗 import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.speech.tts.UtteranceProgressListener; import andr
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.UtteranceProgressListener;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private TextToSpeech textToSpeech;
private boolean isInitialized = false;
private MainActivity mainActivity;
int ctr = 0;
private String words[] = {"handboll", "kula", "golf"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mainActivity = this;
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS){
textToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
System.out.println("---onStart");
}
@Override
public void onDone(String utteranceId) {
System.out.println("-----onDone");
}
@Override
public void onError(String utteranceId) {
System.out.println("-----onError");
}
@Override
public void onError(String utteranceId, int errorCode){
onError(utteranceId);
System.out.println("Error with code: " + errorCode);
}
});
isInitialized = true;
Locale locale = new Locale("sv");
textToSpeech.setLanguage(locale);
}
}
});
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isInitialized){
System.out.println(textToSpeech.getLanguage().getDisplayLanguage());
textToSpeech.speak(words[ctr], TextToSpeech.QUEUE_FLUSH, null, "SpeakTest");
ctr++;
ctr %= words.length;
} else {
Snackbar.make(view, "Speaker not ready", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
}
});
}
}
结果是,当我按下按钮时,只说出了几个单词。例如,在这种情况下,只能说handboll
和kula
,但不能说golf
。在其他情况下,kula
不能说
然后我创建了数组{“kula”,“kula”,“kula”}
并按下按钮大约100次,然后突然它开始工作。很明显,它能说出这些话,但当我按下按钮时,它并不总是发生
对于Locale
对象,我尝试了sv、sv-sv
和swe
,都得到了相同的结果
如果我使用英语和
en
,效果很好 我在Ankidroid的泰语中也有同样的问题。通常没有演讲,但如果我经常用手势重复演讲,有时会出错。英语很好用。我卸载了Google文本到语音的更新,它再次工作。我在Ankidroid中遇到了与泰语相同的问题。通常没有演讲,但如果我经常用手势重复演讲,有时会出错。英语很好用。我卸载了谷歌文字语音转换的更新,它再次正常工作。你尝试过其他设备吗?是的,似乎在一台装有Android 7I的华为手机上工作。我测试过,它似乎正常工作。。。您所经历的行为可能与语音引擎的不同行为,甚至与声音的不同行为有关。有些声音是“在线”的,在调用speak()时需要在east进行初始下载。。。造成严重延迟。您尝试过其他设备吗?是的,似乎在一台装有Android 7I的华为上工作。我测试过,它似乎工作正常。。。您所经历的行为可能与语音引擎的不同行为,甚至与声音的不同行为有关。有些声音是“在线”的,在调用speak()时需要在east进行初始下载。。。造成重大延误的。