You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何编程安装并选择英式英语男性TTS语音包?

嘿,我来帮你搞定Android Studio里英式英语男性TTS语音包的编程安装和切换问题!下面分两步给你讲清楚——先搞定语言包的自动安装,再解决默认选女性语音的坑。

一、编程安装英式英语TTS语言包

首先,你得先初始化TextToSpeech引擎,然后检查设备上有没有装英式英语(en-GB)的语言包。如果没装,就触发系统的TTS语言包下载流程。

给你一段可直接用的Kotlin代码示例:

private lateinit var tts: TextToSpeech

private fun initTextToSpeech() {
    tts = TextToSpeech(this) { status ->
        if (status == TextToSpeech.SUCCESS) {
            val enGBLocale = Locale("en", "GB")
            // 检查英式英语语言包是否已安装
            if (!tts.availableLanguages.contains(enGBLocale)) {
                // 启动语言包下载界面
                val installIntent = Intent(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA)
                installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                startActivity(installIntent)
            } else {
                // 语言包已就绪,直接配置男性语音
                setupBritishMaleVoice()
            }
        } else {
            Toast.makeText(this, "TTS引擎初始化失败", Toast.LENGTH_SHORT).show()
        }
    }
}

别忘了在AndroidManifest.xml里加网络权限,毕竟下载语言包需要联网:

<uses-permission android:name="android.permission.INTERNET" />
二、切换为英式英语男性语音

你说默认安装的是首个女性语音?这很正常——系统默认会返回第一个匹配en-GB的语音,而很多TTS引擎会把女性语音放在首位。要切换到男性,你得主动遍历所有可用语音,筛选出符合条件的男性选项。

看这段代码,专门用来找英式英语男性语音:

private fun setupBritishMaleVoice() {
    val enGBLocale = Locale("en", "GB")
    // 获取所有已安装的TTS语音
    val allVoices = tts.voices
    // 筛选:英式英语 + 男性
    val targetVoice = allVoices.find { voice ->
        voice.locale == enGBLocale && voice.gender == Voice.GENDER_MALE
    }

    targetVoice?.let { selectedVoice ->
        // 把选中的男性语音设置给TTS
        tts.setVoice(selectedVoice)
        // 测试一下效果
        tts.speak("Hello there! This is a British English male voice.", TextToSpeech.QUEUE_FLUSH, null, null)
    } ?: run {
        // 如果没找到男性语音,要么是没下载,要么是引擎不支持
        Toast.makeText(this, "未找到英式英语男性语音,请前往TTS设置手动下载", Toast.LENGTH_LONG).show()
        // 可以直接跳转到TTS设置界面
        val settingsIntent = Intent(TextToSpeech.Engine.ACTION_SETTINGS)
        startActivity(settingsIntent)
    }
}

额外提醒

  • 不同TTS引擎(比如Google TTS、三星自带TTS)支持的语音不一样,推荐用Google Text-to-Speech引擎,它的英式英语男性语音比较全。你可以在初始化时指定引擎,避免兼容性问题:
// 初始化时指定Google TTS引擎
val googleTtsEngine = tts.engineInfos.firstOrNull { it.name == "com.google.android.tts" }
if (googleTtsEngine != null) {
    tts = TextToSpeech(this, this, googleTtsEngine.name)
}
  • 有些设备默认只下载女性语音,这时候就算你代码写了,也找不到男性选项——这时候就得引导用户去TTS设置里手动选择下载对应的男性语音包。

内容的提问来源于stack exchange,提问作者rann02

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:29:17