onUtteranceCompleted () потерян, если получено TTS слишком долго - PullRequest
7 голосов
/ 28 июля 2011

Я только что заметил «недокументированную аномалию» в движке Android TTS: если произносимый текст слишком длинный (больше 4K символов), то onUtteranceCompleted () для этого конкретного высказывания никогда не появится. ..

Кто-нибудь еще сталкивался с этим?

Это известная ошибка или ограничение?

Что можно сделать, чтобы обойти это?

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

Я не знал об этом пределе, так как я предпочитаю более мелкие фрагменты речи (полезно, если приостановлена ​​или если активность приостановлена).

Когда вы вызываете говорить, вы можете добавить новое высказывание в конец очереди, используя это для queueMode: TextToSpeech.QUEUE_ADD

Тест, чтобы убедиться, что предложение не звучит иначе, но я думаю, что просто автоматический разбор следующего предложения (или слова, если необходимо) после длины отсечения сработает.

1 голос
/ 29 августа 2012

Я не уверен, будет ли это полезно в вашем случае, но в аналогичной ситуации я использовал анонимный широковещательный приемник с IntentFilter для TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETED, как указано ниже

  filter = new IntentFilter(TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETED);
receiver = new BroadcastReceiver(){

        public void onReceive(Context p1, Intent p2)
        {
            if (p2.getAction().equals(TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETED) && tts != null)
            {
            //
                //code here
            }
        }
    };
context.registerReceiver(receiver, filter);
    tts = new TextToSpeech(context, this);

Надеюсь, это когда-нибудь поможет кому-нибудь

...