其他分享
首页 > 其他分享> > android-TTS-CHECK_VOICE_DATA_FAIL-检查引擎是否可用

android-TTS-CHECK_VOICE_DATA_FAIL-检查引擎是否可用

作者:互联网

我在使用TTS引擎时遇到了一个奇怪的问题,我无法弄清楚为什么/我的错误在哪里.搜索了数小时以找到解决方案,但没有任何可提及的结果.

当我使用API Demo code时,一切工作正常,并且可以听到所有安装语言的声音.

但是当我在this method之前检查时,我得到了CHECK_VOICE_DATA_FAIL作为自定义TTS引擎的返回码(我需要所有必需的语言,标准google还是不够的).

我在这里想念什么?如何检查TTS引擎的可用性?
我知道这不一定是代码问题,但是对于其他程序,这似乎正在起作用.

我从SVox Website安装了其他一些应用程序,这些应用程序似乎可以在我的所有设备上运行,但是下面的代码失败.

例如,TalkToMeClassic正在检查引擎的可用性并正在工作.

这里有什么不同之处?

这是我的确切代码(是本文的副本):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent checkIntent = new Intent();
    checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
    startActivityForResult(checkIntent, 0x99);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0x99) {
        if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
            // success, create the TTS instance
            mTts = new TextToSpeech(this, this);
        } else {
            Log.e("TTS","Missing Data:" + resultCode );
            // missing data, install it
            Intent installIntent = new Intent();
            installIntent.setAction(
                TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
            startActivity(installIntent);
        }
    }
}

解决方法:

不幸的是,可靠地初始化TextToSpeech是复杂,异步且令人困惑的.

为什么您的代码检查0x99 ???

实际上,您实际上不需要使用ACTION_CHECK_TTS_DATA目的来检查语言是否可用,请改用TextToSpeech.isLanguageAvailable.

所以here is a helper class做到了.该库中的代码将帮助您入门.就像扩展this class一样容易.

或者,您可以在this book中阅读有关详细信息.

标签:android,text-to-speech
来源: https://codeday.me/bug/20191013/1909434.html