Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
nexus 7上支持android文本到语音0的语言_Android_Text To Speech_Nexus 7_Google Text To Speech - Fatal编程技术网

nexus 7上支持android文本到语音0的语言

nexus 7上支持android文本到语音0的语言,android,text-to-speech,nexus-7,google-text-to-speech,Android,Text To Speech,Nexus 7,Google Text To Speech,我正在开发一个小应用程序,让用户可以选择“说出”应用程序将响应的几个命令 我已经让语音识别系统工作了,命令也注册了。他们正在被认可,无论如何,答案应该是正确的 唯一的问题是:它没有 下面是我用来确定google的tts引擎支持哪些语言的代码(我正在为旧版本的android开发,所以这里没有“tts.getAvailableLangues()”): 它将返回“不支持语言”错误。 这很奇怪,因为我只尝试使用一种默认语言:英语(英国、美国,没关系,它“不受支持”) 所以,很明显,当我试着跑的时候 sp

我正在开发一个小应用程序,让用户可以选择“说出”应用程序将响应的几个命令

我已经让语音识别系统工作了,命令也注册了。他们正在被认可,无论如何,答案应该是正确的

唯一的问题是:它没有

下面是我用来确定google的tts引擎支持哪些语言的代码(我正在为旧版本的android开发,所以这里没有“tts.getAvailableLangues()”):

它将返回“不支持语言”错误。 这很奇怪,因为我只尝试使用一种默认语言:英语(英国、美国,没关系,它“不受支持”)

所以,很明显,当我试着跑的时候

speaker.getLanguage();
它返回空值

更奇怪的是,InitListener总是报告“TextToSpeech.SUCCESS”

所以日志总是显示:“tts引擎成功启动”

这是我用来运行tts的实际代码:

public void speak(String text, Context context, OnInitListener listener) {
    String tag = "dashboardactivity";
    Log.d(tag, "speaking started in dummy module");
    TextToSpeech speaker = new TextToSpeech(context, listener);

    // int id = speaker.setLanguage(Locale.UK);
    int id = speaker.setLanguage(Locale.ENGLISH);

    speaker.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
代码似乎没有任何问题,或者我遗漏了什么

以下是我尝试/检查/安装的内容列表:

  • 已安装tts
  • 已安装语音数据(英国和美国英语的多个语音)
  • 如果我按下“设置”中的“收听示例”按钮,它会工作
所以,从我坐的地方看,没有理由不工作。 我的问题是:

  • 我错过什么了吗?(特殊权限?一些数据?)
  • 为什么我的代码说tts引擎支持400多个“语言环境”中的0种语言
  • 我怎样才能解决这个问题

    • 好的,我修好了。我没有考虑tts引擎需要什么时候初始化自己,所以我只是在实例化它之后立即调用“speak”

      我现在把它转移到了OnInit的监听器上,普雷斯托:它很管用

      这是我现在唯一的听众:

      private OnInitListener listener = new OnInitListener() {
      
          @Override
          public void onInit(int status) {
              if (status == TextToSpeech.SUCCESS) {
                  Log.d(TAG, "tts engine started succesfully");
                  Log.d(TAG, "setting language to default");
                  int id = tts.setLanguage(Locale.getDefault());
                  checkId(id);
                  tts.speak(mMessageToSpeak, TextToSpeech.QUEUE_FLUSH, null);
              } else if (status == TextToSpeech.ERROR) {
                  Log.d(TAG, "seems like an error occured :c");
              }
      
          }
      
      };
      
      private OnInitListener listener = new OnInitListener() {
      
          @Override
          public void onInit(int status) {
              if (status == TextToSpeech.SUCCESS) {
                  Log.d(TAG, "tts engine started succesfully");
              } else if (status == TextToSpeech.ERROR) {
                  Log.d(TAG, "seems like an error occured :c");
              }
      
          }
      
      };
      
      public void speak(String text, Context context, OnInitListener listener) {
          String tag = "dashboardactivity";
          Log.d(tag, "speaking started in dummy module");
          TextToSpeech speaker = new TextToSpeech(context, listener);
      
          // int id = speaker.setLanguage(Locale.UK);
          int id = speaker.setLanguage(Locale.ENGLISH);
      
          speaker.speak(text, TextToSpeech.QUEUE_FLUSH, null);
      }
      
      private OnInitListener listener = new OnInitListener() {
      
          @Override
          public void onInit(int status) {
              if (status == TextToSpeech.SUCCESS) {
                  Log.d(TAG, "tts engine started succesfully");
                  Log.d(TAG, "setting language to default");
                  int id = tts.setLanguage(Locale.getDefault());
                  checkId(id);
                  tts.speak(mMessageToSpeak, TextToSpeech.QUEUE_FLUSH, null);
              } else if (status == TextToSpeech.ERROR) {
                  Log.d(TAG, "seems like an error occured :c");
              }
      
          }
      
      };