diff --git a/.gitignore b/.gitignore index 347e252..c4b6c3b 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,5 @@ google-services.json # Android Profiling *.hprof + +.DS_Store \ No newline at end of file diff --git a/utils/src/main/java/ai/elimu/common/utils/data/repository/TextToSpeechRepository.kt b/utils/src/main/java/ai/elimu/common/utils/data/repository/TextToSpeechRepository.kt index c8552b4..12fe597 100644 --- a/utils/src/main/java/ai/elimu/common/utils/data/repository/TextToSpeechRepository.kt +++ b/utils/src/main/java/ai/elimu/common/utils/data/repository/TextToSpeechRepository.kt @@ -2,6 +2,7 @@ package ai.elimu.common.utils.data.repository import ai.elimu.common.utils.data.model.tts.QueueMode import android.speech.tts.UtteranceProgressListener +import java.util.Locale interface TextToSpeechRepository { suspend fun speak(text: CharSequence, queueMode: QueueMode, utteranceId: String) @@ -9,4 +10,6 @@ interface TextToSpeechRepository { fun stop() fun setOnUtteranceProgressListener(listener: UtteranceProgressListener): Int fun playSilentUtterance(durationInMs: Long, queueMode: Int, utteranceId: String?): Int + fun setSpeechRate(speechRate: Float): Int + fun setLanguage(loc: Locale?): Int } \ No newline at end of file diff --git a/utils/src/main/java/ai/elimu/common/utils/data/repository/TextToSpeechRepositoryImpl.kt b/utils/src/main/java/ai/elimu/common/utils/data/repository/TextToSpeechRepositoryImpl.kt index 76cc3b9..31d9e50 100644 --- a/utils/src/main/java/ai/elimu/common/utils/data/repository/TextToSpeechRepositoryImpl.kt +++ b/utils/src/main/java/ai/elimu/common/utils/data/repository/TextToSpeechRepositoryImpl.kt @@ -3,6 +3,7 @@ package ai.elimu.common.utils.data.repository import ai.elimu.common.utils.data.model.tts.QueueMode import ai.elimu.common.utils.data.repository.local.LocalTextToSpeechDataSource import android.speech.tts.UtteranceProgressListener +import java.util.Locale import javax.inject.Inject class TextToSpeechRepositoryImpl @Inject constructor( @@ -32,4 +33,12 @@ class TextToSpeechRepositoryImpl @Inject constructor( ): Int { return localDataSource.playSilentUtterance(durationInMs, queueMode, utteranceId) } + + override fun setSpeechRate(speechRate: Float): Int { + return localDataSource.setSpeechRate(speechRate) + } + + override fun setLanguage(loc: Locale?): Int { + return localDataSource.setLanguage(loc) + } } \ No newline at end of file diff --git a/utils/src/main/java/ai/elimu/common/utils/data/repository/local/LocalTextToSpeechDataSource.kt b/utils/src/main/java/ai/elimu/common/utils/data/repository/local/LocalTextToSpeechDataSource.kt index a852276..77dc087 100644 --- a/utils/src/main/java/ai/elimu/common/utils/data/repository/local/LocalTextToSpeechDataSource.kt +++ b/utils/src/main/java/ai/elimu/common/utils/data/repository/local/LocalTextToSpeechDataSource.kt @@ -2,6 +2,7 @@ package ai.elimu.common.utils.data.repository.local import ai.elimu.common.utils.data.model.tts.QueueMode import android.speech.tts.UtteranceProgressListener +import java.util.Locale interface LocalTextToSpeechDataSource { suspend fun speak(text: CharSequence, queueMode: QueueMode, utteranceId: String) @@ -12,4 +13,6 @@ interface LocalTextToSpeechDataSource { durationInMs: Long, queueMode: Int, utteranceId: String? ): Int + fun setSpeechRate(speechRate: Float): Int + fun setLanguage(loc: Locale?): Int } \ No newline at end of file diff --git a/utils/src/main/java/ai/elimu/common/utils/data/repository/local/LocalTextToSpeechDataSourceImpl.kt b/utils/src/main/java/ai/elimu/common/utils/data/repository/local/LocalTextToSpeechDataSourceImpl.kt index e43481f..fa28f9d 100644 --- a/utils/src/main/java/ai/elimu/common/utils/data/repository/local/LocalTextToSpeechDataSourceImpl.kt +++ b/utils/src/main/java/ai/elimu/common/utils/data/repository/local/LocalTextToSpeechDataSourceImpl.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.speech.tts.TextToSpeech import android.speech.tts.UtteranceProgressListener import android.util.Log +import java.util.Locale import javax.inject.Inject class LocalTextToSpeechDataSourceImpl @Inject constructor( @@ -34,4 +35,12 @@ class LocalTextToSpeechDataSourceImpl @Inject constructor( override fun playSilentUtterance(durationInMs: Long, queueMode: Int, utteranceId: String?): Int { return tts.playSilentUtterance(durationInMs, queueMode, utteranceId) } + + override fun setSpeechRate(speechRate: Float): Int { + return tts.setSpeechRate(speechRate) + } + + override fun setLanguage(loc: Locale?): Int { + return tts.setLanguage(loc) + } } \ No newline at end of file diff --git a/utils/src/main/java/ai/elimu/common/utils/viewmodel/TextToSpeechViewModel.kt b/utils/src/main/java/ai/elimu/common/utils/viewmodel/TextToSpeechViewModel.kt index 98f8d74..2b108bf 100644 --- a/utils/src/main/java/ai/elimu/common/utils/viewmodel/TextToSpeechViewModel.kt +++ b/utils/src/main/java/ai/elimu/common/utils/viewmodel/TextToSpeechViewModel.kt @@ -2,6 +2,7 @@ package ai.elimu.common.utils.viewmodel import ai.elimu.common.utils.data.model.tts.QueueMode import android.speech.tts.UtteranceProgressListener +import java.util.Locale interface TextToSpeechViewModel { fun speak(text: CharSequence, queueMode: QueueMode, utteranceId: String) @@ -12,4 +13,6 @@ interface TextToSpeechViewModel { durationInMs: Long, queueMode: Int, utteranceId: String? ): Int + fun setSpeechRate(speechRate: Float): Int + fun setLanguage(loc: Locale?): Int } \ No newline at end of file diff --git a/utils/src/main/java/ai/elimu/common/utils/viewmodel/TextToSpeechViewModelImpl.kt b/utils/src/main/java/ai/elimu/common/utils/viewmodel/TextToSpeechViewModelImpl.kt index f67ac72..e1bd60d 100644 --- a/utils/src/main/java/ai/elimu/common/utils/viewmodel/TextToSpeechViewModelImpl.kt +++ b/utils/src/main/java/ai/elimu/common/utils/viewmodel/TextToSpeechViewModelImpl.kt @@ -8,6 +8,7 @@ import androidx.lifecycle.ViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch +import java.util.Locale import javax.inject.Inject @HiltViewModel @@ -94,4 +95,12 @@ class TextToSpeechViewModelImpl @Inject constructor( ): Int { return textToSpeechRepository.playSilentUtterance(durationInMs, queueMode, utteranceId) } + + override fun setSpeechRate(speechRate: Float): Int { + return textToSpeechRepository.setSpeechRate(speechRate) + } + + override fun setLanguage(loc: Locale?): Int { + return textToSpeechRepository.setLanguage(loc) + } } \ No newline at end of file