2009-07-21 10 views

答えて

0

サードパーティのテキストを音声に変換するエンジンがあります

は、私がこのような何かを行うことができますがAPIです。 Donutには、Androidの将来のバージョンで利用できることを示唆するテキスト読み上げエンジンが含まれているという噂があります。しかしそれを超えて、テキスト読み上げのためのAndroidには何も組み込まれていません。

+1

これはもはや当てはまります.1.6があるため、 – gregm

0

ドーナツはこれを持っています:android.speech.ttsパッケージをご覧ください。

3

TTSの使用は少し複雑ですが、必要なAPIを提供するラッパーを作成するのは簡単です。

正常に動作するには、克服する必要があるいくつかの問題があります。

彼らは次のとおりです。必ずUtteranceId(または他のOnUtteranceCompletedが と呼ばれることはありません )を設定

  1. 設定が
(スピーチ システムが適切に初期化された後にのみ) リスナーをOnUtteranceCompleted

public class TextSpeakerDemo implements OnInitListener 
{ 
    private TextToSpeech tts; 
    private Activity activity; 

    private static HashMap DUMMY_PARAMS = new HashMap(); 
    static 
    { 
     DUMMY_PARAMS.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "theUtId"); 
    } 
    private ReentrantLock waitForInitLock = new ReentrantLock(); 

    public TextSpeakerDemo(Activity parentActivity) 
    { 
     activity = parentActivity; 
     tts = new TextToSpeech(activity, this);  
     //don't do speak until initing 
     waitForInitLock.lock(); 
    } 

    public void onInit(int version) 
    {  //unlock it so that speech will happen 
     waitForInitLock.unlock(); 
    } 

    public void say(WhatToSay say) 
    { 
     say(say.toString()); 
    } 

    public void say(String say) 
    { 
     tts.speak(say, TextToSpeech.QUEUE_FLUSH, null); 
    } 

    public void say(String say, OnUtteranceCompletedListener whenTextDone) 
    { 
     if (waitForInitLock.isLocked()) 
     { 
      try 
      { 
       waitForInitLock.tryLock(180, TimeUnit.SECONDS); 
      } 
      catch (InterruptedException e) 
      { 
       Log.e("speaker", "interruped"); 
      } 
      //unlock it here so that it is never locked again 
      waitForInitLock.unlock(); 
     } 

     int result = tts.setOnUtteranceCompletedListener(whenTextDone); 
     if (result == TextToSpeech.ERROR) 
     { 
      Log.e("speaker", "failed to add utterance listener"); 
     } 
     //note: here pass in the dummy params so onUtteranceCompleted gets called 
     tts.speak(say, TextToSpeech.QUEUE_FLUSH, DUMMY_PARAMS); 
    } 

    /** 
    * make sure to call this at the end 
    */ 
    public void done() 
    { 
     tts.shutdown(); 
    } 
} 
1

ttsの使い方の良い例です。 「Pro Android 2ブック」に記載されています。第15章のソースコードを見てください。

関連する問題