文本到语音管理器不起作用

时间:2012-08-30 15:39:05

标签: android voice speech text-to-speech

我创建了一些TTS Manager,因为我想在其他类中使用someTTsObject.speak("some string")。 这是我的经理课程:

public class TtsManager
{
private TextToSpeech myTTS;
private Context context;

public TtsManager(Context baseContext)
{
    this.context = baseContext;
    initOrInstallTts();
}

public void initOrInstallTts()
{
    myTTS = new TextToSpeech(context, new OnInitListener() 
    {               
        public void onInit(int status) 
        {
            if (status == TextToSpeech.SUCCESS)
            {
                myTTS.setLanguage(Locale.US);
            }
            else
                installTts();
        }
    });
}

private void installTts()
{
    Intent installIntent = new Intent();
    installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
    context.startActivity(installIntent);
}

public void speak(String text)
{       
        myTTS.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}

}

这是我的主要课程,我想用它:

public class main extends Activity {
TtsManager tts;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tts = new TtsManager(this);
        tts.speak("Welcome in my app");

    }
}

当我运行编译时,我在LogCat上看到:

08-30 17:25:52.531: I/TTS received:(2782): Welcome in my app

但我没有听到任何文字。我在虚拟机和手机上测试了它。

为什么这不起作用? 干杯!

2 个答案:

答案 0 :(得分:0)

好的,问题是您不会等到系统回调来告诉您TTS已初始化。在使用SUCCESS值调用onInit之前,不能调用speak。

答案 1 :(得分:0)

问题是你在没有初始化tts引擎的情况下调用speak函数.... 加     的 tts.initOrInstallTts(); 后      tts = new TtsManager(this);

像:

public class main extends Activity {
    TtsManager tts;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tts = new TtsManager(this);
    tts.initOrInstallTts();
    tts.speak("Welcome in my app");

    }
}