TTSエンジンに奇妙な問題があり、なぜ/どこに間違いがあるのか理解できません。解決策を探すために何時間も検索されますが、言及できる結果はありません。
このAPIデモコードを使用しているときは、すべてが正常に機能しており、インストールされているすべての言語で音声を聞くことができます。
しかし、このメソッドでチェックしていると、カスタムTTSエンジンのリターンコードとしてCHECK_VOICE_DATA_FAILが返されます(必要なすべての言語に必要ですが、標準のgoogleでは不十分です)。
ここで何が欠けていますか?TTSエンジンの可用性を確認するにはどうすればよいですか?これは必ずしもコードの問題ではないことを私は知っていますが、他のプログラムではこれは機能しているようです。
SVox Webサイトから他のアプリをいくつかインストールしましたが、これらはすべてのデバイスで機能するようですが、以下のコードは失敗します。
例として、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);
}
}
}