1

我的 TTS 引擎有一个奇怪的问题,我不知道为什么/哪里是我的错误。为解决方案搜索了数小时,但没有任何可提及的结果。

当我使用这个API 演示代码时,一切都运行良好,我可以听到所有已安装语言的声音。

但是当我通过这种方法进行检查时,我得到了 CHECK_VOICE_DATA_FAIL 作为自定义 TTS 引擎的返回码(我需要所有必要的语言,标准 google 是不够的)。

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

我从SVox 网站安装了一些其他应用程序,这些应用程序似乎可以在我的所有设备上运行,而下面的代码却失败了。

例如,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);
        }
    }
}
4

1 回答 1

3

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

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

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

所以这是一个帮助类。该库中的代码将帮助您入门。它可以像扩展这个类一样简单。

或者您可以阅读本书中的详细信息。

于 2012-06-21T13:03:56.197 回答