首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextToSpeech不发音第一个视频的名字

TextToSpeech不发音第一个视频的名字
EN

Stack Overflow用户
提问于 2021-09-20 08:37:38
回答 1查看 28关注 0票数 0

我有两项活动:

  • MainActivity
  • PlayerActivity

目标是获得用户选择的视频的名称来发音。用户可以同时选择一个或多个视频。

视频使用ExoPlayer播放,但TextToSpeech不讲第一个视频的名称,无论它是选定的视频还是选择的第一个视频。另一方面,TextToSpeech把第二个视频和下面的视频讲得很好。

任何建议都会受到欢迎和感谢,我昨天和今天早上花了一天时间寻找解决方案。

代码语言:javascript
复制
private fun goToPlayer(theMvmt: String) {
    val intent = Intent(this@GokyoActivity, PlayerActivity::class.java)
    intent.putExtra("mvmt", theMvmt)
    startActivity(intent)
}

在PlayerActivity中,我初始化ExoPlayer和TextToSpeech:

全球变量:

代码语言:javascript
复制
var tts: TextToSpeech? = null

在onCreate中:

代码语言:javascript
复制
// Initialize TextToSpeech
tts = TextToSpeech(this, this)

然后离开onCreate

TextToSpeech:

代码语言:javascript
复制
   override fun onInit(status: Int) {
        val myLanguage = Locale.getDefault().displayLanguage
        if (androidAPILevel < 21) {
            val params: HashMap<String, String> = HashMap()
            params[TextToSpeech.Engine.KEY_PARAM_VOLUME] = musicVolume.toString() // change the 0.5 to any value from 0-1 (1 is default)
//            tts!!.speak("This is a volume test.", TextToSpeech.QUEUE_FLUSH, params)
        } else { // android API level is 21 or higher...
            val params = Bundle()
            params.putFloat(
                TextToSpeech.Engine.KEY_PARAM_VOLUME, musicVolume.toFloat()
            ) // change the 0.5f to any value from 0f-1f (1f is default)
//            tts!!.speak("This is a volume test.", TextToSpeech.QUEUE_FLUSH, params, null)
        }

        /* test de l'existence de la langue japonaise */
        if (status == TextToSpeech.SUCCESS) {
            /* set the language for tts */
            val result = tts!!.setLanguage(Locale.FRENCH)
            if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
//                tts!!.language = Locale.FRENCH
                Log.e("TTS", "*************** This Language is not supported ***************")
                speakOut(« French not supported, install it please")
                showTheToast(getString(R.string.NoJapaneseLanguage))
            } else {
                tts!!.setSpeechRate(1.0f)
            }
        } else {
            showTheToast("TextToSpeech initialization failed!")
        }
    }

ExoPlayer:

代码语言:javascript
复制
private fun initializePlayer() {
    player = SimpleExoPlayer.Builder(this)
        .build()
        .also { exoPlayer ->
            viewBinding.videoView.player = exoPlayer
}
EN

回答 1

Stack Overflow用户

发布于 2021-09-22 06:51:48

我对自己负责,我解决我的问题。我决定在我的MainActivity中也使用MainActivity作为第一个视频,然后在PlayerActivity中跳到其余的视频中。这当然不是最优雅的解决方案,但它有效。

感谢您的阅读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69251398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档