TTS语音播报模块
📋 模块概述
TTS(Text-To-Speech)语音播报模块提供文字转语音功能,支持中英文播报、音频文件播放、多语言切换等。
核心类: android.znhaas.utils.TtsManager
音频播放: android.znhaas.util.SoundPlayer
🎯 主要功能
- ✅ 文字转语音(中文/英文)
- ✅ 预置音频文件播放
- ✅ TTS引擎管理
- ✅ 自动重试机制
- ✅ 音量控制
- ✅ 多语言支持
📚 核心API
1. 获取实例
val ttsManager = TtsManager.getInstance(context)
2. 初始化
ttsManager.initialize(object : TtsManager.TtsCallback {
override fun onTtsReady() {
Log.d(TAG, "TTS准备就绪")
}
override fun onTtsError(message: String) {
Log.e(TAG, "TTS错误: $message")
}
override fun onTtsInitializing() {
Log.d(TAG, "TTS初始化中...")
}
})
3. 播放文本
// 播放中文
ttsManager.speak("录制已开始")
// 播放英文
ttsManager.speak("Recording started")
4. 播放预置音频
// 使用SoundPlayer播放预置音频
val soundPlayer = SoundPlayer.getInstance(context)
// 播放录制开始提示音
soundPlayer.playSound(R.raw.tts_recording_started)
// 播放拍照成功提示音
soundPlayer.playSound(R.raw.tts_photo_success)
// 播放报警音
soundPlayer.playSound(R.raw.sos_successful)
5. 停止播放
ttsManager.stop()
6. 设置语言
// 设置中文
ttsManager.setLanguage(Locale.CHINESE)
// 设置英文
ttsManager.setLanguage(Locale.ENGLISH)
7. 释放资源
TtsManager.destroyInstance()
🔧 完整使用示例
class TtsActivity : AppCompatActivity() {
private lateinit var ttsManager: TtsManager
private lateinit var soundPlayer: SoundPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tts)
// 初始化TTS
ttsManager = TtsManager.getInstance(this)
ttsManager.initialize(ttsCallback)
// 初始化音频播放器
soundPlayer = SoundPlayer.getInstance(this)
// 播放文本按钮
speakButton.setOnClickListener {
val text = textInput.text.toString()
ttsManager.speak(text)
}
// 播放提示音按钮
soundButton.setOnClickListener {
soundPlayer.playSound(R.raw.tts_recording_started)
}
}
private val ttsCallback = object : TtsManager.TtsCallback {
override fun onTtsReady() {
runOnUiThread {
statusText.text = "TTS就绪"
speakButton.isEnabled = true
}
}
override fun onTtsError(message: String) {
runOnUiThread {
statusText.text = "TTS错误: $message"
speakButton.isEnabled = false
}
}
override fun onTtsInitializing() {
runOnUiThread {
statusText.text = "TTS初始化中..."
speakButton.isEnabled = false
}
}
}
override fun onDestroy() {
super.onDestroy()
ttsManager.stop()
}
}
📁 预置音频文件
项目包含大量预置音频文件,位于app/src/main/assets/sounds/:
中文音频 (zh/)
tts_recording_started.wav- 录制已开始tts_recording_stopped.wav- 录制已停止tts_photo_success.wav- 拍照成功tts_bluetooth_connected.wav- 蓝牙已连接tts_low_power.wav- 电量低- 等等...
英文音频 (en/)
tts_recording_started.wav- Recording startedtts_recording_stopped.wav- Recording stoppedtts_photo_success.wav- Photo taken- 等等...
使用预置音频
// 播放中文提示音
soundPlayer.playSound(R.raw.tts_recording_started)
// 播放英文提示音
soundPlayer.playSound(R.raw.en_tts_recording_started)
⚠️ 注意事项
1. TTS引擎依赖
- Android系统自带TTS引擎
- 部分设备可能需要下载语音数据
- 首次使用可能需要延迟初始化
2. 音量控制
TTS使用媒体音量通道:
audioManager.setStreamVolume(
AudioManager.STREAM_MUSIC,
volume,
0
)
3. 自动重试
TTS初始化失败会自动重试(最多3次):
private const val MAX_RETRIES = 3
private const val RETRY_DELAY_BASE = 2000L
4. 线程安全
- TTS操作已在主线程处理
- 回调在主线程执行
- 可以直接更新UI
🔗 相关资源
-
源码:
app/src/main/java/android/znhaas/utils/TtsManager.ktapp/src/main/java/android/znhaas/util/SoundPlayer.kt
-
音频资源:
app/src/main/assets/sounds/