Skip to content

Commit 2b977a1

Browse files
committed
TTS: Add setSpeechRate, setLanguage APIs. Update .gitignore
1 parent 3208293 commit 2b977a1

File tree

7 files changed

+38
-0
lines changed

7 files changed

+38
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,5 @@ google-services.json
3131

3232
# Android Profiling
3333
*.hprof
34+
35+
.DS_Store

utils/src/main/java/ai/elimu/common/utils/data/repository/TextToSpeechRepository.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@ package ai.elimu.common.utils.data.repository
22

33
import ai.elimu.common.utils.data.model.tts.QueueMode
44
import android.speech.tts.UtteranceProgressListener
5+
import java.util.Locale
56

67
interface TextToSpeechRepository {
78
suspend fun speak(text: CharSequence, queueMode: QueueMode, utteranceId: String)
89
fun isSpeaking(): Boolean
910
fun stop()
1011
fun setOnUtteranceProgressListener(listener: UtteranceProgressListener): Int
1112
fun playSilentUtterance(durationInMs: Long, queueMode: Int, utteranceId: String?): Int
13+
fun setSpeechRate(speechRate: Float): Int
14+
fun setLanguage(loc: Locale?): Int
1215
}

utils/src/main/java/ai/elimu/common/utils/data/repository/TextToSpeechRepositoryImpl.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package ai.elimu.common.utils.data.repository
33
import ai.elimu.common.utils.data.model.tts.QueueMode
44
import ai.elimu.common.utils.data.repository.local.LocalTextToSpeechDataSource
55
import android.speech.tts.UtteranceProgressListener
6+
import java.util.Locale
67
import javax.inject.Inject
78

89
class TextToSpeechRepositoryImpl @Inject constructor(
@@ -32,4 +33,12 @@ class TextToSpeechRepositoryImpl @Inject constructor(
3233
): Int {
3334
return localDataSource.playSilentUtterance(durationInMs, queueMode, utteranceId)
3435
}
36+
37+
override fun setSpeechRate(speechRate: Float): Int {
38+
return localDataSource.setSpeechRate(speechRate)
39+
}
40+
41+
override fun setLanguage(loc: Locale?): Int {
42+
return localDataSource.setLanguage(loc)
43+
}
3544
}

utils/src/main/java/ai/elimu/common/utils/data/repository/local/LocalTextToSpeechDataSource.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package ai.elimu.common.utils.data.repository.local
22

33
import ai.elimu.common.utils.data.model.tts.QueueMode
44
import android.speech.tts.UtteranceProgressListener
5+
import java.util.Locale
56

67
interface LocalTextToSpeechDataSource {
78
suspend fun speak(text: CharSequence, queueMode: QueueMode, utteranceId: String)
@@ -12,4 +13,6 @@ interface LocalTextToSpeechDataSource {
1213
durationInMs: Long, queueMode: Int,
1314
utteranceId: String?
1415
): Int
16+
fun setSpeechRate(speechRate: Float): Int
17+
fun setLanguage(loc: Locale?): Int
1518
}

utils/src/main/java/ai/elimu/common/utils/data/repository/local/LocalTextToSpeechDataSourceImpl.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.os.Bundle
55
import android.speech.tts.TextToSpeech
66
import android.speech.tts.UtteranceProgressListener
77
import android.util.Log
8+
import java.util.Locale
89
import javax.inject.Inject
910

1011
class LocalTextToSpeechDataSourceImpl @Inject constructor(
@@ -34,4 +35,12 @@ class LocalTextToSpeechDataSourceImpl @Inject constructor(
3435
override fun playSilentUtterance(durationInMs: Long, queueMode: Int, utteranceId: String?): Int {
3536
return tts.playSilentUtterance(durationInMs, queueMode, utteranceId)
3637
}
38+
39+
override fun setSpeechRate(speechRate: Float): Int {
40+
return tts.setSpeechRate(speechRate)
41+
}
42+
43+
override fun setLanguage(loc: Locale?): Int {
44+
return tts.setLanguage(loc)
45+
}
3746
}

utils/src/main/java/ai/elimu/common/utils/viewmodel/TextToSpeechViewModel.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package ai.elimu.common.utils.viewmodel
22

33
import ai.elimu.common.utils.data.model.tts.QueueMode
44
import android.speech.tts.UtteranceProgressListener
5+
import java.util.Locale
56

67
interface TextToSpeechViewModel {
78
fun speak(text: CharSequence, queueMode: QueueMode, utteranceId: String)
@@ -12,4 +13,6 @@ interface TextToSpeechViewModel {
1213
durationInMs: Long, queueMode: Int,
1314
utteranceId: String?
1415
): Int
16+
fun setSpeechRate(speechRate: Float): Int
17+
fun setLanguage(loc: Locale?): Int
1518
}

utils/src/main/java/ai/elimu/common/utils/viewmodel/TextToSpeechViewModelImpl.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.lifecycle.ViewModel
88
import dagger.hilt.android.lifecycle.HiltViewModel
99
import kotlinx.coroutines.CoroutineScope
1010
import kotlinx.coroutines.launch
11+
import java.util.Locale
1112
import javax.inject.Inject
1213

1314
@HiltViewModel
@@ -94,4 +95,12 @@ class TextToSpeechViewModelImpl @Inject constructor(
9495
): Int {
9596
return textToSpeechRepository.playSilentUtterance(durationInMs, queueMode, utteranceId)
9697
}
98+
99+
override fun setSpeechRate(speechRate: Float): Int {
100+
return textToSpeechRepository.setSpeechRate(speechRate)
101+
}
102+
103+
override fun setLanguage(loc: Locale?): Int {
104+
return textToSpeechRepository.setLanguage(loc)
105+
}
97106
}

0 commit comments

Comments
 (0)