TextToSpeech 口音变化

TextToSpeech Accent Change

我正在使用以下库的 TextToSpeech 功能来说话 -

'net.gotev:speech:1.3.1'

现在我需要将所有国家/地区的口音改成我试过的美国英语 -

Speech.getInstance().setLocale(Locale.US);

但是还是不行,请指教。

在下面代码的帮助下,我试图让它说一个词 -

Speech.getInstance().say("Hello", new TextToSpeechCallback() {

                @Override
                public void onStart() {

                }

                @Override
                public void onCompleted() {

                }

                @Override
                public void onError() {

                }
            });

例如,现在它实际上使用基于语言环境的英语口音说话 - 如果它是俄罗斯用户 运行 那么由于它的语言环境,它说的是俄语口音的英语,但我希望它应该用美国英语口音而不是基于语言环境的口音说它

在查看了该库的代码后,我认为使用标准 Android TextToSpeech object.

会更好

使用 normal TextToSpeech,做你想做的事情可以像这样简单:

TextToSpeech tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int i) {
                tts.setLanguage(Locale.US);
                tts.speak("Hello", TextToSpeech.QUEUE_FLUSH, null);
            }
        });

我发现该库存在的问题:

  • 它不使用它自己的嵌入式引擎,而是简单地包装一个标准的 Android TextToSpeech 对象,而不知道设备上的引擎是什么类型!
  • 它使用单例模式,在 Google 等某些语音引擎的情况下,容易出现内存泄漏。
  • 这个问题与您的问题有关:检查或响应其内部 TextToSpeech 对象的初始化没有任何意义。这意味着当它试图在其内部 TTS 对象上设置默认 Locale 时,它​​实际上什么都不做......但错误是不可见的,因为 TTS 默认情况下会这样做。但是,当您尝试手动设置语言环境时,同样的事情会发生(没有),因为 TTS 对象尚未初始化。