TTS - CHECK_VOICE_DATA_FAIL - 检查发动机可用

时间:2012-06-20 17:11:09

标签: android text-to-speech

我对TTS引擎有一个奇怪的问题,我无法弄清楚为什么/我的错误在哪里。搜索了几个小时的解决方案,但没有任何可见的结果。

当我使用此API Demo code时,一切运行良好,我可以听到所有已安装语言的声音。

但是当我通过this method检查时,我得到CHECK_VOICE_DATA_FAIL作为自定义TTS引擎的返回代码(我需要所有必需的语言,标准谷歌是不够的)。

我在这里缺少什么?如何检查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);
        }
    }
}

1 个答案:

答案 0 :(得分:3)

不幸的是,initializing TextToSpeech可靠地复杂,异步且令人困惑。

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

您实际上无需使用ACTION_CHECK_TTS_DATA Intent来检查语言可用性,而是使用TextToSpeech.isLanguageAvailable

所以here is a helper class就是这么做的。该库中的代码将帮助您入门。它可以像扩展this class一样简单。

或者您可以在this book中了解详细信息。