1

複数の言語で tts を実装する必要があるアプリケーションがあります。これらの言語は、標準の PICO エンジンでは使用できないため、SVOX などが必要です。SVOX と必要な音声をインストールしましたが、携帯電話の tts エンジンを変更できません (Android 2.1 を使用しているため、このオプションはありません。携帯電話に互換性がないため、tts 拡張アプリもインストールできません)。 .

おそらくプログラムで使用中のエンジンをどうにか変更する必要がありますが、それができないようです。

これが私のコードです:これは、標準の音声を使用し、必要な音声が利用できない場合に機能します

public void onInit(int status) {

    if (status == TextToSpeech.SUCCESS) {


        Locale[] AvalLoc = Locale.getAvailableLocales();

        Log.i("TTS","Available locales " + Arrays.toString(AvalLoc));
               /*
                   JUST TRYING TO OUTPUT WHICH LANGUAGES ARE AVAILABLE
                 */
         for (Locale l : AvalLoc) {
             int buf = tts.setLanguage(l);

             if (buf == TextToSpeech.LANG_MISSING_DATA
                     || buf == TextToSpeech.LANG_NOT_SUPPORTED) {
                 Log.i("TTS", "Language NOT available" + l.getCountry());
             } else {
                 Log.i("TTS","Language available" + l.getCountry());
             }


         }


        Locale loc = new Locale("ita","ITA"); /*This works, but I would need to be able to use SVOX voices instead*/

        int result = tts.setLanguage(loc);
        tts.setOnUtteranceCompletedListener(onUtteranceCompleted);


        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.e("TTS", "This Language is not supported");
        } else {
          btnSpeakQuestion.setEnabled(true); 
        }

    } else {
        Log.e("TTS", "Initilization Failed!");
    }

}

標準と SVOX TTS の両方がインストールされています。

4

2 に答える 2

1

pt_BRロケールでも同様の問題が発生し、AndroidデバイスからSVOXを使用するには、setEngineByPackageNameメソッド(ちなみに非推奨)を使用してデフォルトのTTSエンジンを変更する必要がありました。

SVOXクラシックを使用して、パッケージ名を指定してTTSエンジンを変更する必要があります。

int result = tts.setEngineByPackageName("com.svox.classic");
if( result == TextToSpeech.ERROR ) {
    //Could not find svox classic
}

Android APIによると、TTSが初期化されたことを呼び出し元に通知しないため、このメソッドは使用しないでください。しかし、少なくとも、異なる言語でSVOXをテストするのに役立ちます。

ちなみに、TTSエンジンを変更すると、ロケールを設定しても効果はありません。

int result = tts.setLanguage(Locale.US);

TTSエンジンを変更した後、上記の設定言語を使用しても、アプリはSVOX構成(pt_BR)を使用し続けます。

重要:言及された方法は、TTS構成でSVOXが有効になっている場合にのみ機能します。

于 2013-03-05T21:02:57.297 に答える
0

あなたのライセンスは確かですか?SVOX は Nuance に買収されました。

于 2012-10-15T16:09:33.573 に答える