2012-09-18 18 views
8

Pracuję nad aplikacją "Tekst na mowę", ale napotykam problem, że nie mogę znać obecnego słowa, które mówi TTS. Czy istnieje sposób na znalezienie tego?Podświetl bieżące słowo, które mówi silnik TTS

Na przykład: Jeśli TTS mówi ten ciąg: Pytania, które mogą już zawierać odpowiedź:, a kiedy osiągną "już", jak mogę zaznaczyć "już".

+0

niezły pomysł - niestety nie mam pojęcia jak to zrobić ... – Ridcully

+0

mieć to zrobiłaś? –

Odpowiedz

6

proponuję sekwencję użytkowej TextToSpeech.speak():

    • zacząć mówić pierwsze słowa.
    • wyróżnij pierwsze słowo.
    • Wykryto, że zakończyło się syntezowanie pierwszego słowa.
    • zacząć mówić drugie słowo.
    • wyróżnij drugie słowo.
    • Wykryto, że zakończyło się syntezowanie drugiego słowa.
    • i tak dalej ...

Teraz pozostaje tylko How to detect that synthesizing of a word has finished? Korzystając TextToSpeech.setOnUtteranceCompletedListener() wykryć wypowiedź została zakończona.

Można zobaczyć te strony po więcej szczegółów:
How to know when TTS is finished?
An introduction to Text-To-Speech in Android

+0

yea..To co myślałem .. Ustawię utterencecompletedlistener po kropce (.) I zwrócę uwagę na indeks każdego okresu. – Rookie

+0

@raghav: proszę dać mi znać .. jak to zrobiłeś? –

+0

Wydaje się, że jest to jedyny możliwy sposób identyfikacji wypowiedzianego słowa. Ale jakie są wady? Czy Mowa cierpi z powodu jakości, jeśli każde słowo jest wypowiedziane indywidualnie? Czy ma problemy z wydajnością, jeśli ustawisz w kolejce każde słowo zamiast całego zdania? – mcanti

0
Put it in handler.Create two handler one for to add ; 
tts1.speak("your text to speech", TextToSpeech.QUEUE_FLUSH, null); 
    viewItem.setBackgroundColor(Color.RED); 
view item means your textview.... 

and add another handler... 
and make your view as transparent.. 
    viewItem.setBackgroundColor(Color.TRANSPARENT); 


it's work for me perfectly.... 
Powiązane problemy