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
相关产品推荐
相关产品推荐

