- MessageEntity gets ttsUrl + ttsVoice fields (Room version 2→3) - MessageDao.getTtsUrl() checks cache before API call - MessageDao.updateTts() saves URL + voice after generation - readAloud() checks Room first, only calls /api/v1/audio-gen on miss - Voice change invalidates cache automatically (query includes voice) - Default voice "Kore" (Gemini-TTS) |
||
|---|---|---|
| .. | ||
| src | ||
| .gitignore | ||
| build.gradle.kts | ||
| proguard-rules.pro | ||