【问题标题】:string input for Android's speech engineAndroid 语音引擎的字符串输入
【发布时间】:2012-01-02 05:59:56
【问题描述】:

在我看来,TextToSpeech 类的“speak”方法仅适用于方法 onInit 或 onUtteranceCompleted。但是,onInit 和 onUtteranceCompleted 没有用于传递字符串的任何参数。

在下面的代码中,我尝试在方法之外定义一个全局字符串数组列表,并使用数组列表进行字符串输入。由于某种原因,它没有成功。但是引擎确实说“你睡得好吗”。任何帮助表示赞赏。

public class TTS extends Activity implements OnInitListener,OnUtteranceCompletedListener,Runnable  {

    ArrayList<String> content=new ArrayList<String>();    
    int MY_DATA_CHECK_CODE=50;
 private TextToSpeech mTts;

public void onCreate(Bundle savedInstanceState) {

        content.add("test");
        content.add("another test");
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.splash);

        Intent checkIntent = new Intent();
        checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
    }


     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == MY_DATA_CHECK_CODE) {

        if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
            // success, create the TTS instance
            mTts = new TextToSpeech(this,this);



        } else {
            // missing data, install it

            Intent installIntent = new Intent();
            installIntent.setAction(
            TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
            startActivity(installIntent);
        }
    }
}


  public void  onInit(int status){
 if(status==TextToSpeech.SUCCESS){
  mTts.setLanguage(Locale.US);
  mTts.setOnUtteranceCompletedListener(this);

             String myText1 = "Did you sleep well?";
             mTts.speak(myText1, TextToSpeech.QUEUE_FLUSH, null);

            for(int i=0;i<content.size();i++){
           mTts.speak(content.get(i),TextToSpeech.QUEUE_ADD,null);
            }


           if(status==TextToSpeech.ERROR){
  mTts.shutdown();
          }
        }

}

【问题讨论】:

    标签: android text-to-speech


    【解决方案1】:

    我相信您的某些代码丢失了,但仅供参考,可以通过参数映射为话语分配 ID,例如:

    HashMap<String, String> myHashAlarm = new HashMap();
    myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "ID of First Utterance");
    mTts.speak("It was a clear black night", TextToSpeech.QUEUE_ADD, myHashAlarm);
    

    “第一次发言的 ID”将传递给 onUtteranceCompleted(String utteranceId)

    请参阅Using Text-to-Speech

    【讨论】:

    猜你喜欢
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多