2016-11-29 75 views
0

目前我正在开发一个涉及文本到语音的应用程序。我面临的问题是语音输出与谷歌的TTS引擎输出不一样。我没有获得我设置的语言(例如:德语),而是收到带有德语口音的英语输出。所以我有点混淆发生了什么,我尝试了多种解决方案,但它仍然没有按照我的意图工作。以下是我的源代码。Text-To-Speech(android-java)输出与Google TTS输出不一样

  SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

      String languageLocale = preferences.getString("langTest",null); 
      String languageDisplayName = preferences.getString("language",null); 
      float speed = preferences.getFloat("speed",0); 
      float pitch = preferences.getFloat("pitch",0); 

      Locale[] locales = Locale.getAvailableLocales(); 

      for(Locale locale : locales){ 
       if(locale.getDisplayLanguage().equals(language)){ 
        textToSpeech.setLanguage(language); 
        Log.d("Check Locale", " getDisLang: " + locale.getDisplayLanguage() + " // getLang: " + locale.getLanguage() + " // language: " + language); 
        textToSpeech.setSpeechRate(speed); 
        textToSpeech.setPitch(pitch); 
        break; 
       } 
      } 

回答

1

您传递给TTS服务的文本是德语吗?如果是英语,那么是的,我希望它是英语,因为德语可能会发音。

TTS仅将文本转换为语音。它不会将一种语言翻译成另一种语言。要做到这一点,你可以尝试谷歌的翻译服务。请记住,自动翻译服务比TTS服务产生可接受的结果的可能性要小得多。显然,一个真正的语言到语言的翻译比一套“一组声音”服务更难完善。

+0

是的,我正在使用英文的文本。我在这里和那里阅读了一些关于翻译服务的内容,但是我需要知道当设备没有任何互联网/数据连接时服务仍然能够正常工作吗?我想知道,以便我可以决定是跳入它还是重新考虑我的应用程序能够做什么。 –