如何设置多语言文本到语音

时间:2019-06-19 09:30:10

标签: java android text-to-speech

我正在研究一个android Studio项目,需要文本到语音。 我想实现一个程序,该程序可以识别文字所用的语言并以适当的发音来阅读。

示例:如果我有英文文本,我希望应用程序用英语发音和英语发音。

有可能吗?

谢谢

我已经成功用法语实施了TTS,并且效果很好。

    mTTS = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
        @Override
        public void onInit(int status) {
            if (status == TextToSpeech.SUCCESS) {
                int result = mTTS.setLanguage(Locale.FRENCH);

                if (result == TextToSpeech.LANG_MISSING_DATA
                        || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                    Log.e("TTS", "Language not supported");
                } else {
                    mButtonSpeak.setEnabled(true);
                }
            } else {
                Log.e("TTS", "Initialization failed");
            }
        }
    });

我想要一个多语言文本语音应用程序

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用Android ML Kit

识别文本的语言

将ML Kit Android库的依赖项添加到模块(应用程序级)Gradle文件(通常为app/build.gradle):

dependencies {
  // ...

  implementation 'com.google.firebase:firebase-ml-natural-language:20.0.0'
  implementation 'com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.0'
}

要识别字符串的语言,请获取FirebaseLanguageIdentification的实例,然后将字符串传递给identifyLanguage()方法。

例如:

FirebaseLanguageIdentification languageIdentifier =
        FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
languageIdentifier.identifyLanguage(text)
      .addOnSuccessListener(
          new OnSuccessListener<String>() {
            @Override
            public void onSuccess(@Nullable String languageCode) {
              if (languageCode != "und") {
                Log.i(TAG, "Language: " + languageCode);
              } else {
                Log.i(TAG, "Can't identify language.");
              }
            }
          })
      .addOnFailureListener(
          new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
              // Model couldn’t be loaded or other internal error.
              // ...
            }
          });