2012-09-18 3 views
8

Tôi đang làm việc trên ứng dụng Văn bản thành giọng nói nhưng tôi gặp phải một vấn đề mà tôi không thể biết từ hiện tại mà TTS đang nói. Có cách nào để tìm điều này không?Làm nổi bật từ hiện tại mà động cơ TTS đang nói

Ví dụ: Nếu TTS đang nói chuỗi này: Câu hỏi có thể đã có câu trả lời của bạn và khi nào đạt đến 'đã', làm cách nào tôi có thể đánh dấu 'đã'.

+0

Ý tưởng tốt đẹp - tiếc là tôi không có đầu mối làm thế nào để làm điều này ... – Ridcully

+0

đã làm gì nó? –

Trả lời

6

Tôi đề nghị rằng việc sử dụng chuỗi các TextToSpeech.speak():

    • bắt đầu nói từ đầu tiên.
    • làm nổi bật từ đầu tiên.
    • phát hiện rằng tổng hợp từ đầu tiên đã kết thúc.
    • bắt đầu nói từ thứ hai.
    • làm nổi bật từ thứ hai.
    • phát hiện rằng tổng hợp từ thứ hai đã kết thúc.
    • và vân vân ...

Bây giờ nó chỉ còn How to detect that synthesizing of a word has finished? Sử dụng TextToSpeech.setOnUtteranceCompletedListener() để phát hiện lời nói đã hoàn thành.

Bạn có thể thấy các trang này để biết thêm chi tiết:
How to know when TTS is finished?
An introduction to Text-To-Speech in Android

+0

yea..Đó là những gì tôi nghĩ .. Tôi sẽ đặt utterencecompletedlistener sau khoảng thời gian (.) Và sẽ ghi lại chỉ mục của từng giai đoạn. – Rookie

+0

@raghav: xin vui lòng cho tôi biết .. làm thế nào bạn đã làm? –

+0

Điều này có vẻ là cách duy nhất có thể để xác định một từ được nói. Nhưng những hạn chế là gì? Bài phát biểu có phải là chất lượng nếu mỗi từ được nói riêng không? Liệu nó có vấn đề hiệu suất nếu bạn xếp hàng mỗi từ thay vì toàn bộ câu? – 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....