Android(谷歌)文本语音转换的瑞典语语音?

aemubtdh  于 2023-03-21  发布在  Android
关注(0)|答案(1)|浏览(134)

我正在为Android创建一个导航软件,我将使用Android的TextToSpeech系统(我相信它与 Google Text-to-Speech 系统相同,因此使用google-text-to-speech标签)进行“语音导航”。
不过,我有个问题。
问题是,我需要一个瑞典语的声音,因为首先,应用程序将主要由瑞典人在瑞典使用,其次,因为瑞典的道路名称,单词,发音(特别是 Å、* ī * 和 Ö)等等,尽管我不能简单地用aTextToSpeechInstance.setLanguage(Locale.SWEDEN)(或类似的东西)将语言设置为瑞典语,因为Locale类中没有代表瑞典的成员。
我在谷歌上搜索过了,但似乎什么也找不到。
我知道谷歌翻译有一个瑞典语的声音,我敢肯定,Android应用程序是使用TextToSpeech系统,但我似乎不能弄清楚它是如何做到的...
当我用TextToSpeech.getEngines()列出设备上可用的TTS时,我看到了两个引擎。一个是默认的,Google的TTS,第二个来自一个名为com.svox.pico的软件包。我在Google上搜索了 SVOX,发现它有瑞典语语音,但我有三个问题。

  • 我可以在每一部与TextToSpeech系统兼容的手机上使用这个引擎吗?
  • 我该如何使用它?
  • 如何选择瑞典语语音?

我想知道我如何才能使Android TTS说瑞典语的声音,使它可以发音瑞典单词,字符,名称等。
如果没有办法做到这一点与Android(谷歌)TTS,我是开放的替代品,但一个内置在Android是一个我更喜欢的。
请注意,我使用API级别15作为应用程序的最低级别,因此许多TTS方法不可用。

guicsvcw

guicsvcw1#

我有点晚了,但这个问题也可能与标准的Android TextToSpeech引擎与Google的引擎不一样有关。如果我在没有手动传递TTS系统的情况下初始化TextToSpeech对象,它将无法正确发音瑞典语单词(如果用户没有在设备设置中更改它)。
在我的情况下,这是可行的:

class SwedishSpeaker(
    private val context: Context
) : TextToSpeech.OnInitListener {

    val googleTtsPackage = "com.google.android.tts" // Google TTS Package

    private val textToSpeech = TextToSpeech(
        context,
        this,
        googleTtsPackage // passing Google TTS Package as the third parameter
    )

    override fun onInit(status: Int) {
        if (status == TextToSpeech.SUCCESS) {
            try {
                textToSpeech.language = Locale("sv", "SE")
                Log.d(TAG, "onInit: successful")
            } catch (e: Exception) {
                Log.d(TAG, "onInit: ${e.message}")
            }
        } else Log.d(TAG, "onInit: Language initialization failed")
    }

    fun speakWord(word: String) {
        textToSpeech.apply {
            stop()
            speak(word, TextToSpeech.QUEUE_FLUSH, null)
        }
    }
}

否则用户将不得不在设备设置中手动更改TTS引擎。感谢此答案https://stackoverflow.com/a/27471318/13828248

相关问题