diff --git a/buildSrc/src/main/kotlin/Version.kt b/buildSrc/src/main/kotlin/Version.kt index 62a58f8a4..5dc17b7f6 100644 --- a/buildSrc/src/main/kotlin/Version.kt +++ b/buildSrc/src/main/kotlin/Version.kt @@ -3,7 +3,7 @@ object Version { const val major = 0 const val minor = 5 const val patch = 6 - const val code = 148 + const val code = 149 override fun toString(): String { return "$major.$minor.$patch-$code" diff --git a/data/src/androidMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioFormatEncodingType.kt b/data/src/androidMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioFormatEncodingType.kt index 06b509e29..b2f40b044 100644 --- a/data/src/androidMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioFormatEncodingType.kt +++ b/data/src/androidMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioFormatEncodingType.kt @@ -3,6 +3,7 @@ package org.rhasspy.mobile.data.audiorecorder import android.annotation.SuppressLint import android.media.AudioFormat.* import android.os.Build +import androidx.annotation.ChecksSdkIntAtLeast import kotlinx.serialization.Serializable import org.rhasspy.mobile.data.resource.StableStringResource import org.rhasspy.mobile.data.resource.stable @@ -18,7 +19,6 @@ actual enum class AudioFormatEncodingType( PCM8Bit(MR.strings.encoding_type_PCM8Bit.stable, ENCODING_PCM_8BIT, 8), PCM16Bit(MR.strings.encoding_type_PCM16Bit.stable, ENCODING_PCM_16BIT, 16), - @SuppressLint("InlinedApi") PCM_32BIT(MR.strings.encoding_type_PCM_32BIT.stable, ENCODING_PCM_32BIT, 32); diff --git a/data/src/androidMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioSourceType.kt b/data/src/androidMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioSourceType.kt new file mode 100644 index 000000000..b38421db4 --- /dev/null +++ b/data/src/androidMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioSourceType.kt @@ -0,0 +1,42 @@ +package org.rhasspy.mobile.data.audiorecorder + +import android.annotation.SuppressLint +import android.media.MediaRecorder +import android.os.Build +import android.os.Build.VERSION +import android.os.Build.VERSION_CODES +import androidx.annotation.ChecksSdkIntAtLeast +import kotlinx.serialization.Serializable +import org.rhasspy.mobile.data.resource.StableStringResource +import org.rhasspy.mobile.data.resource.stable +import org.rhasspy.mobile.data.service.option.IOption +import org.rhasspy.mobile.resources.MR + +@Serializable +actual enum class AudioSourceType( + override val text: StableStringResource, + actual val value: Int +) : IOption { + + Default(MR.strings.source_type_default.stable, MediaRecorder.AudioSource.DEFAULT), + Mic(MR.strings.source_type_mic.stable, MediaRecorder.AudioSource.MIC), + @SuppressLint("InlinedApi") + Unprocessed(MR.strings.source_type_unprocessed.stable, MediaRecorder.AudioSource.UNPROCESSED), + VoiceCommunication(MR.strings.source_type_voice_communication.stable, MediaRecorder.AudioSource.VOICE_COMMUNICATION), + VoiceRecognition(MR.strings.source_type_voice_recognition.stable, MediaRecorder.AudioSource.VOICE_RECOGNITION); + + actual companion object { + actual val default: AudioSourceType get() = Default + + actual fun supportedValues(): List { + return buildList { + addAll(listOf(Default, Mic)) + if (VERSION.SDK_INT >= VERSION_CODES.N) { + add(Unprocessed) + } + addAll(listOf(VoiceCommunication, VoiceRecognition)) + } + } + } + +} \ No newline at end of file diff --git a/data/src/commonMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioSourceType.kt b/data/src/commonMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioSourceType.kt new file mode 100644 index 000000000..244b41f19 --- /dev/null +++ b/data/src/commonMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioSourceType.kt @@ -0,0 +1,18 @@ +package org.rhasspy.mobile.data.audiorecorder + +import kotlinx.serialization.Serializable +import org.rhasspy.mobile.data.service.option.IOption + +@Serializable +expect enum class AudioSourceType : IOption { + + ; + + val value: Int + + companion object { + val default: AudioSourceType + fun supportedValues(): List + } + +} \ No newline at end of file diff --git a/data/src/commonMain/kotlin/org/rhasspy/mobile/data/settings/SettingsEnum.kt b/data/src/commonMain/kotlin/org/rhasspy/mobile/data/settings/SettingsEnum.kt index 88a2ceb6a..9b9928d5c 100644 --- a/data/src/commonMain/kotlin/org/rhasspy/mobile/data/settings/SettingsEnum.kt +++ b/data/src/commonMain/kotlin/org/rhasspy/mobile/data/settings/SettingsEnum.kt @@ -70,6 +70,7 @@ enum class SettingsEnum { WakeWordOption, + WakeWordAudioRecorderSourceType, WakeWordAudioRecorderChannel, WakeWordAudioRecorderEncoding, WakeWordAudioRecorderSampleRate, @@ -84,6 +85,7 @@ enum class SettingsEnum { WakeWordPorcupineLanguage, SpeechToTextOption, + SpeechToTextRecorderSourceType, SpeechToTextAudioRecorderChannel, SpeechToTextAudioRecorderEncoding, SpeechToTextAudioRecorderSampleRate, diff --git a/data/src/iosMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioSourceType.kt b/data/src/iosMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioSourceType.kt new file mode 100644 index 000000000..9f7b9b9a2 --- /dev/null +++ b/data/src/iosMain/kotlin/org/rhasspy/mobile/data/audiorecorder/AudioSourceType.kt @@ -0,0 +1,22 @@ +package org.rhasspy.mobile.data.audiorecorder + +import kotlinx.serialization.Serializable +import org.rhasspy.mobile.data.resource.StableStringResource +import org.rhasspy.mobile.data.resource.stable +import org.rhasspy.mobile.data.service.option.IOption +import org.rhasspy.mobile.resources.MR + +@Serializable +actual enum class AudioSourceType( + override val text: StableStringResource, + actual val value: Int +) : IOption { + + Default(MR.strings.defaultText.stable, 1); + + actual companion object { + actual val default: AudioSourceType get() = Default + actual fun supportedValues() = listOf(Default) + } + +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d9f276c1f..099cf7c53 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ #Tue Jan 30 18:30:39 CET 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-rc-1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextService.kt b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextService.kt index 376c1eb4e..5d636f8e7 100644 --- a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextService.kt +++ b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextService.kt @@ -247,6 +247,7 @@ internal class SpeechToTextService( } audioRecorder.startRecording( + audioRecorderSourceType = params.audioRecorderSourceType, audioRecorderChannelType = params.audioRecorderChannelType, audioRecorderEncodingType = params.audioRecorderEncodingType, audioRecorderSampleRateType = params.audioRecorderSampleRateType, diff --git a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextServiceParams.kt b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextServiceParams.kt index 3d43aebda..46f9922d6 100644 --- a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextServiceParams.kt +++ b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextServiceParams.kt @@ -3,6 +3,7 @@ package org.rhasspy.mobile.logic.domains.speechtotext import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType import org.rhasspy.mobile.data.service.option.DialogManagementOption import org.rhasspy.mobile.data.service.option.SpeechToTextOption @@ -10,6 +11,7 @@ internal data class SpeechToTextServiceParams( val isAutoPauseOnMediaPlayback: Boolean, val speechToTextOption: SpeechToTextOption, val dialogManagementOption: DialogManagementOption, + val audioRecorderSourceType: AudioSourceType, val audioRecorderChannelType: AudioFormatChannelType, val audioRecorderEncodingType: AudioFormatEncodingType, val audioRecorderSampleRateType: AudioFormatSampleRateType, diff --git a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextServiceParamsCreator.kt b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextServiceParamsCreator.kt index 4f580ef50..c94af4f1e 100644 --- a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextServiceParamsCreator.kt +++ b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/speechtotext/SpeechToTextServiceParamsCreator.kt @@ -14,6 +14,7 @@ internal class SpeechToTextServiceParamsCreator { AppSetting.isPauseRecordingOnMedia.data, ConfigurationSetting.speechToTextOption.data, ConfigurationSetting.dialogManagementOption.data, + ConfigurationSetting.speechToTextAudioRecorderSourceType.data, ConfigurationSetting.speechToTextAudioRecorderChannel.data, ConfigurationSetting.speechToTextAudioRecorderEncoding.data, ConfigurationSetting.speechToTextAudioRecorderSampleRate.data, @@ -31,6 +32,7 @@ internal class SpeechToTextServiceParamsCreator { isAutoPauseOnMediaPlayback = AppSetting.isPauseRecordingOnMedia.value, speechToTextOption = ConfigurationSetting.speechToTextOption.value, dialogManagementOption = ConfigurationSetting.dialogManagementOption.value, + audioRecorderSourceType = ConfigurationSetting.speechToTextAudioRecorderSourceType.value, audioRecorderChannelType = ConfigurationSetting.speechToTextAudioRecorderChannel.value, audioRecorderEncodingType = ConfigurationSetting.speechToTextAudioRecorderEncoding.value, audioRecorderSampleRateType = ConfigurationSetting.speechToTextAudioRecorderSampleRate.value, diff --git a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordService.kt b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordService.kt index d8462d205..67c84694e 100644 --- a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordService.kt +++ b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordService.kt @@ -186,6 +186,7 @@ internal class WakeWordService( private fun startRecording() { if (_serviceState.value == Success) { audioRecorder.startRecording( + audioRecorderSourceType = params.audioRecorderSourceType, audioRecorderChannelType = params.audioRecorderChannelType, audioRecorderEncodingType = params.audioRecorderEncodingType, audioRecorderSampleRateType = params.audioRecorderSampleRateType, diff --git a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordServiceParams.kt b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordServiceParams.kt index 87a0b4064..0672b4163 100644 --- a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordServiceParams.kt +++ b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordServiceParams.kt @@ -4,6 +4,7 @@ import kotlinx.collections.immutable.ImmutableList import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType import org.rhasspy.mobile.data.porcupine.PorcupineCustomKeyword import org.rhasspy.mobile.data.porcupine.PorcupineDefaultKeyword import org.rhasspy.mobile.data.service.option.PorcupineLanguageOption @@ -13,6 +14,7 @@ internal data class WakeWordServiceParams( val isMicrophonePermissionEnabled: Boolean, val isEnabled: Boolean, val isAutoPauseOnMediaPlayback: Boolean, + val audioRecorderSourceType: AudioSourceType, val audioRecorderSampleRateType: AudioFormatSampleRateType, val audioRecorderChannelType: AudioFormatChannelType, val audioRecorderEncodingType: AudioFormatEncodingType, diff --git a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordServiceParamsCreator.kt b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordServiceParamsCreator.kt index 59780cf42..8352d041b 100644 --- a/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordServiceParamsCreator.kt +++ b/logic/src/commonMain/kotlin/org/rhasspy/mobile/logic/domains/wakeword/WakeWordServiceParamsCreator.kt @@ -18,6 +18,7 @@ internal class WakeWordServiceParamsCreator( microphonePermission.granted, AppSetting.isHotWordEnabled.data, AppSetting.isPauseRecordingOnMedia.data, + ConfigurationSetting.wakeWordAudioRecorderSourceType.data, ConfigurationSetting.wakeWordAudioRecorderChannel.data, ConfigurationSetting.wakeWordAudioRecorderEncoding.data, ConfigurationSetting.wakeWordAudioRecorderSampleRate.data, @@ -42,6 +43,7 @@ internal class WakeWordServiceParamsCreator( isMicrophonePermissionEnabled = microphonePermission.granted.value, isEnabled = AppSetting.isHotWordEnabled.value, isAutoPauseOnMediaPlayback = AppSetting.isPauseRecordingOnMedia.value, + audioRecorderSourceType = ConfigurationSetting.wakeWordAudioRecorderSourceType.value, audioRecorderChannelType = ConfigurationSetting.wakeWordAudioRecorderChannel.value, audioRecorderEncodingType = ConfigurationSetting.wakeWordAudioRecorderEncoding.value, audioRecorderSampleRateType = ConfigurationSetting.wakeWordAudioRecorderSampleRate.value, diff --git a/logic/src/commonTest/kotlin/org/rhasspy/mobile/logic/services/speechtotext/FakeAudioRecorder.kt b/logic/src/commonTest/kotlin/org/rhasspy/mobile/logic/services/speechtotext/FakeAudioRecorder.kt index dd8f34b82..1fa4a1f00 100644 --- a/logic/src/commonTest/kotlin/org/rhasspy/mobile/logic/services/speechtotext/FakeAudioRecorder.kt +++ b/logic/src/commonTest/kotlin/org/rhasspy/mobile/logic/services/speechtotext/FakeAudioRecorder.kt @@ -7,6 +7,7 @@ import kotlinx.coroutines.flow.StateFlow import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType import org.rhasspy.mobile.platformspecific.audiorecorder.IAudioRecorder class FakeAudioRecorder : IAudioRecorder { @@ -19,6 +20,7 @@ class FakeAudioRecorder : IAudioRecorder { override val absoluteMaxVolume: Float = 32767.0f override fun startRecording( + audioRecorderSourceType: AudioSourceType, audioRecorderChannelType: AudioFormatChannelType, audioRecorderEncodingType: AudioFormatEncodingType, audioRecorderSampleRateType: AudioFormatSampleRateType, diff --git a/platformspecific/src/androidMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt b/platformspecific/src/androidMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt index e77107621..3edf05a1b 100644 --- a/platformspecific/src/androidMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt +++ b/platformspecific/src/androidMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt @@ -25,6 +25,7 @@ import org.koin.core.component.inject import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType import org.rhasspy.mobile.platformspecific.application.NativeApplication import org.rhasspy.mobile.platformspecific.readOnly import org.rhasspy.mobile.platformspecific.resampler.Resampler @@ -87,6 +88,7 @@ internal actual class AudioRecorder : IAudioRecorder, KoinComponent { */ @SuppressLint("MissingPermission") actual override fun startRecording( + audioRecorderSourceType: AudioSourceType, audioRecorderChannelType: AudioFormatChannelType, audioRecorderEncodingType: AudioFormatEncodingType, audioRecorderSampleRateType: AudioFormatSampleRateType, @@ -128,7 +130,7 @@ internal actual class AudioRecorder : IAudioRecorder, KoinComponent { logger.v { "initializing recorder $tempBufferSize" } recorder?.release() recorder = AudioRecord.Builder() - .setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION) + .setAudioSource(audioRecorderSourceType.value) .setAudioFormat( AudioFormat.Builder() .setSampleRate(audioRecorderSampleRateType.value) diff --git a/platformspecific/src/commonMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt b/platformspecific/src/commonMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt index 7047c9a71..031dc46d1 100644 --- a/platformspecific/src/commonMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt +++ b/platformspecific/src/commonMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt @@ -5,6 +5,7 @@ import kotlinx.coroutines.flow.StateFlow import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType interface IAudioRecorder { @@ -14,6 +15,7 @@ interface IAudioRecorder { val absoluteMaxVolume: Float fun startRecording( + audioRecorderSourceType: AudioSourceType, audioRecorderChannelType: AudioFormatChannelType, audioRecorderEncodingType: AudioFormatEncodingType, audioRecorderSampleRateType: AudioFormatSampleRateType, @@ -49,6 +51,7 @@ internal expect class AudioRecorder() : IAudioRecorder { * start recording */ override fun startRecording( + audioRecorderSourceType: AudioSourceType, audioRecorderChannelType: AudioFormatChannelType, audioRecorderEncodingType: AudioFormatEncodingType, audioRecorderSampleRateType: AudioFormatSampleRateType, diff --git a/platformspecific/src/iosMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt b/platformspecific/src/iosMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt index 8bc84ac3e..1b9268d02 100644 --- a/platformspecific/src/iosMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt +++ b/platformspecific/src/iosMain/kotlin/org/rhasspy/mobile/platformspecific/audiorecorder/AudioRecorder.kt @@ -6,6 +6,7 @@ import kotlinx.coroutines.flow.StateFlow import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType internal actual class AudioRecorder : IAudioRecorder { @@ -23,6 +24,7 @@ internal actual class AudioRecorder : IAudioRecorder { * start recording */ actual override fun startRecording( + audioRecorderSourceType: AudioSourceType, audioRecorderChannelType: AudioFormatChannelType, audioRecorderEncodingType: AudioFormatEncodingType, audioRecorderSampleRateType: AudioFormatSampleRateType, diff --git a/resources/build.gradle.kts b/resources/build.gradle.kts index 13a1e15e6..98cede594 100644 --- a/resources/build.gradle.kts +++ b/resources/build.gradle.kts @@ -5,6 +5,8 @@ import com.mikepenz.aboutlibraries.plugin.DuplicateMode.MERGE import com.mikepenz.aboutlibraries.plugin.DuplicateRule.SIMPLE import groovy.json.JsonSlurper import org.apache.tools.ant.taskdefs.condition.Os +import java.net.URLDecoder +import java.net.URLEncoder plugins { kotlin("multiplatform") @@ -180,8 +182,15 @@ tasks.register("updatePorcupineFiles") { // parse directory listing contents = JsonSlurper().parse(contentsFile) as List> - urls = contents.map { url -> url["download_url"] } + urls = contents.map { url -> + val downloadUrl: String = url["download_url"]!! + //some urls need decoding (download_url contains special characters in the filename) + //therefore all urls are first encoded and then decoded again, because URLEncoder.encode translates whitespace to +, + is replaced with %20 + //only substring after last / is encoded/decoded, because it's the filename + "${downloadUrl.substringBeforeLast("/")}/${URLEncoder.encode(URLDecoder.decode(downloadUrl.substringAfterLast("/"), "UTF-8"), "UTF-8").replace("+", "%20")}" + } + //download each file separate so a fail will not skip all // download files download.run { src(urls) @@ -189,7 +198,6 @@ tasks.register("updatePorcupineFiles") { overwrite(true) onlyIfModified(true) eachFile { - //correctly encode non standard letters name = name.replace(Regex("[^A-Za-z0-9._]"), "") } } diff --git a/resources/src/commonMain/resources/MR/base/strings.xml b/resources/src/commonMain/resources/MR/base/strings.xml index 71c680ed4..92dae6edd 100644 --- a/resources/src/commonMain/resources/MR/base/strings.xml +++ b/resources/src/commonMain/resources/MR/base/strings.xml @@ -330,6 +330,7 @@ share setting file failed unable to open file chooser Audio Recorder + Source Sample rate Channel Encoding @@ -369,6 +370,11 @@ subscription failed topic subscription failed + Default + Mic + Unprocessed + Voice Communication + Voice Recognition Default Mono Stereo diff --git a/resources/src/commonMain/resources/MR/de/strings.xml b/resources/src/commonMain/resources/MR/de/strings.xml index a6adfc31f..ddf9159fc 100644 --- a/resources/src/commonMain/resources/MR/de/strings.xml +++ b/resources/src/commonMain/resources/MR/de/strings.xml @@ -319,12 +319,12 @@ Speichern des Logs fehlgeschlagen Teilen des Logs fehlgeschlagen Deaktivieren der Batterie-Optimierung fehlgeschlagen - Exportieren der Einstellungsdatei fehlgeschlagen - + Exportieren der Einstellungsdatei fehlgeschlagen Einstellungen aus Datei wiederherstellen fehlgeschlagen Einstellungsdatei freigeben fehlgeschlagen Die Dateiauswahl kann nicht geƶffnet werden Audiorecorder + Quelle Samplerate Channel Encoding @@ -364,6 +364,11 @@ subscription failed topic subscription failed + Default + Mic + Unprocessed + Voice Communication + Voice Recognition Default Mono Stereo diff --git a/resources/src/commonMain/resources/MR/files/aboutlibraries.json b/resources/src/commonMain/resources/MR/files/aboutlibraries.json index 8b2658923..a6d8d287a 100644 --- a/resources/src/commonMain/resources/MR/files/aboutlibraries.json +++ b/resources/src/commonMain/resources/MR/files/aboutlibraries.json @@ -1,6 +1,6 @@ { "metadata": { - "generated": "2024-02-10T17:22:38.725Z" + "generated": "2024-02-17T23:00:26.256Z" }, "libraries": [ { @@ -286,14 +286,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Compose animation library", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Animation", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-animation#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-animation#1.6.1", "licenses": [ "Apache-2.0" ], @@ -311,14 +311,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Animation engine and animation primitives that are the building blocks of the Compose animation library", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Animation Core", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-animation#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-animation#1.6.1", "licenses": [ "Apache-2.0" ], @@ -336,14 +336,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Higher level abstractions of the Compose UI primitives. This library is design system agnostic, providing the high-level building blocks for both application and design-system developers", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Foundation", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.6.1", "licenses": [ "Apache-2.0" ], @@ -361,14 +361,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Compose layout implementations", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Layouts", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.6.1", "licenses": [ "Apache-2.0" ], @@ -386,14 +386,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.2.0-rc01", + "artifactVersion": "1.2.0", "description": "Compose Material You Design Components library", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Material3 Components", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-material3#1.2.0-rc01", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-material3#1.2.0", "licenses": [ "Apache-2.0" ], @@ -411,14 +411,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Compose Material Design Components library", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Material Components", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-material#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-material#1.6.1", "licenses": [ "Apache-2.0" ], @@ -436,14 +436,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Compose Material Design core icons. This module contains the most commonly used set of Material icons.", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Material Icons Core", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-material#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-material#1.6.1", "licenses": [ "Apache-2.0" ], @@ -461,14 +461,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Material ripple used to build interactive components", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Material Ripple", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-material#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-material#1.6.1", "licenses": [ "Apache-2.0" ], @@ -486,14 +486,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Tree composition support for code generated by the Compose compiler plugin and corresponding public API", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Runtime", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.6.1", "licenses": [ "Apache-2.0" ], @@ -511,14 +511,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Compose components that allow saving and restoring the local ui state", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Saveable", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.6.1", "licenses": [ "Apache-2.0" ], @@ -536,14 +536,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Compose UI primitives. This library contains the primitives that form the Compose UI Toolkit, such as drawing, measurement and layout.", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose UI", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.1", "licenses": [ "Apache-2.0" ], @@ -561,14 +561,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Compose classes related to dimensions without units", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Geometry", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.1", "licenses": [ "Apache-2.0" ], @@ -586,14 +586,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Compose graphics", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Graphics", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.1", "licenses": [ "Apache-2.0" ], @@ -611,14 +611,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Compose Text primitives and utilities", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose UI Text", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.1", "licenses": [ "Apache-2.0" ], @@ -636,14 +636,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Compose classes for simple units", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Unit", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.1", "licenses": [ "Apache-2.0" ], @@ -661,14 +661,14 @@ "name": "The Android Open Source Project" } ], - "artifactVersion": "1.6.0", + "artifactVersion": "1.6.1", "description": "Internal Compose utilities used by other modules", "scm": { "connection": "scm:git:https://android.googlesource.com/platform/frameworks/support", "url": "https://cs.android.com/androidx/platform/frameworks/support" }, "name": "Compose Util", - "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.0", + "website": "https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.1", "licenses": [ "Apache-2.0" ], @@ -1555,7 +1555,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose animation library", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1579,7 +1579,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Animation engine and animation primitives that are the building blocks of the Compose animation library", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1603,7 +1603,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.8.0-alpha01", + "artifactVersion": "1.6.0-rc02", "description": "Provides source annotations for tooling and readability.", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1627,7 +1627,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Standalone efficient collections.", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1651,7 +1651,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Higher level abstractions of the Compose UI primitives. This library is design system agnostic, providing the high-level building blocks for both application and design-system developers", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1675,7 +1675,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose layout implementations", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1699,7 +1699,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose Material You Design Components library", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1723,7 +1723,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose Material Design Components library", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1747,7 +1747,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose Material Design core icons. This module contains the most commonly used set of Material icons.", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1771,7 +1771,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Material ripple used to build interactive components", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1795,7 +1795,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Tree composition support for code generated by the Compose compiler plugin and corresponding public API", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1819,7 +1819,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose components that allow saving and restoring the local ui state", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1843,7 +1843,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose UI primitives. This library contains the primitives that form the Compose UI Toolkit, such as drawing, measurement and layout.", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1867,7 +1867,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose classes related to dimensions without units", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1891,7 +1891,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose graphics", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1915,7 +1915,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose Text primitives and utilities", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1939,7 +1939,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Internal iOS UIKit utilities including Objective-C library.", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1963,7 +1963,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Compose classes for simple units", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -1987,7 +1987,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "1.6.0-beta02", + "artifactVersion": "1.6.0-rc02", "description": "Internal Compose utilities used by other modules", "scm": { "connection": "scm:git:https://github.com/JetBrains/compose-jb.git", @@ -2311,7 +2311,7 @@ "name": "Compose Multiplatform Team" } ], - "artifactVersion": "0.7.90", + "artifactVersion": "0.7.93", "description": "Kotlin Skia bindings", "scm": { "connection": "scm:git:https://www.github.com/JetBrains/skiko.git", diff --git a/resources/src/commonMain/resources/MR/files/changelog.json b/resources/src/commonMain/resources/MR/files/changelog.json index 980d47750..7cc8faa07 100644 --- a/resources/src/commonMain/resources/MR/files/changelog.json +++ b/resources/src/commonMain/resources/MR/files/changelog.json @@ -4,5 +4,6 @@ "update Ui to new Domain Settings", "fixed possible issue with AudioRecorder in combination with Pause on Media Playback", "updated Log to be stored in a Database", - "fixed settings not saving correctly" + "fixed settings not saving correctly", + "added audio source type setting" ] diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/alexa_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/alexa_android.ppn index 756164376..1864c8231 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/alexa_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/alexa_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/americano_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/americano_android.ppn index d7c19d7e3..c632a658a 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/americano_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/americano_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/blueberry_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/blueberry_android.ppn index 1523a513a..d98c85b1e 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/blueberry_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/blueberry_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/bumblebee_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/bumblebee_android.ppn index b0ba070ee..47c4c84d4 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/bumblebee_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/bumblebee_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/computer_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/computer_android.ppn index 5f8077fb8..bf6070361 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/computer_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/computer_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/grapefruit_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/grapefruit_android.ppn index 9b7fbc2e2..43e7c048e 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/grapefruit_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/grapefruit_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/grasshopper_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/grasshopper_android.ppn index 040924cc9..125c9e1be 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/grasshopper_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/grasshopper_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20barista_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20barista_android.ppn index 095e629eb..51e1e3c04 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20barista_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20barista_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20google_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20google_android.ppn index 29286c0b2..4f0854380 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20google_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20google_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20siri_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20siri_android.ppn index 5a6e3865e..0af1da138 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20siri_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/hey20siri_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/jarvis_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/jarvis_android.ppn index eb4c69bbf..b2286e87d 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/jarvis_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/jarvis_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/ok20google_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/ok20google_android.ppn index dbeeb2d25..946da2807 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/ok20google_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/ok20google_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/pico20clock_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/pico20clock_android.ppn index 03efb76a3..6625454aa 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/pico20clock_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/pico20clock_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/picovoice_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/picovoice_android.ppn index 9110262b6..961bd5a25 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/picovoice_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/picovoice_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/porcupine_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/porcupine_android.ppn index e930efc79..f712aec42 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/porcupine_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/porcupine_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/terminator_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/terminator_android.ppn index 18a36b3e0..6a47baad6 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/terminator_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files/terminator_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D8A3D8AED8B7D8A8D988D8B7_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D8A3D8AED8B7D8A8D988D8B7_android.ppn index 4719456bb..5ca726df3 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D8A3D8AED8B7D8A8D988D8B7_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D8A3D8AED8B7D8A8D988D8B7_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D8A7D984D8ADD985D8B5_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D8A7D984D8ADD985D8B5_android.ppn index 66c5d46a8..4d3ea1843 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D8A7D984D8ADD985D8B5_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D8A7D984D8ADD985D8B5_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D982D987D988D8A9_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D982D987D988D8A9_android.ppn index 4715f869d..4c3d9180c 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D982D987D988D8A9_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D982D987D988D8A9_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D985D8ADD985D8B5D8A9_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D985D8ADD985D8B5D8A9_android.ppn index 3b0493cad..3ff975906 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D985D8ADD985D8B5D8A9_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ar/D985D8ADD985D8B5D8A9_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/ananas_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/ananas_android.ppn index becf5724d..6af48a75a 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/ananas_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/ananas_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/heuschrecke_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/heuschrecke_android.ppn index 04abdbf5f..f64fda7b6 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/heuschrecke_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/heuschrecke_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/himbeere_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/himbeere_android.ppn index 26df1f78c..c35e79571 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/himbeere_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/himbeere_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/leguan_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/leguan_android.ppn index 6e576ff94..c6bf52b78 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/leguan_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/leguan_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/stachelschwein_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/stachelschwein_android.ppn index ee7f2fc6f..4b1aa8cbe 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/stachelschwein_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_de/stachelschwein_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/emparedado_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/emparedado_android.ppn index a37425c2f..e579e39ca 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/emparedado_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/emparedado_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/leopardo_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/leopardo_android.ppn index 4102866e7..319bac427 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/leopardo_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/leopardo_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/manzana_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/manzana_android.ppn index d541fa0f1..fdbd4e145 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/manzana_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/manzana_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/murciC3A9lago_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/murciC3A9lago_android.ppn index e2a15d24d..4619b523d 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/murciC3A9lago_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_es/murciC3A9lago_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8ACD988D8ACD98720D8AADB8CD8BADB8C_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8ACD988D8ACD98720D8AADB8CD8BADB8C_android.ppn index 209ab301d..3f024e373 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8ACD988D8ACD98720D8AADB8CD8BADB8C_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8ACD988D8ACD98720D8AADB8CD8BADB8C_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8AED8AFD8A7D8ADD8A7D981D8B8_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8AED8AFD8A7D8ADD8A7D981D8B8_android.ppn index e83702850..97ede5dd5 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8AED8AFD8A7D8ADD8A7D981D8B8_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8AED8AFD8A7D8ADD8A7D981D8B8_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8B5D8A8D8AD20D8A8D8AEDB8CD8B1_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8B5D8A8D8AD20D8A8D8AEDB8CD8B1_android.ppn index bfd4c0207..b239e8b17 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8B5D8A8D8AD20D8A8D8AEDB8CD8B1_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fa/D8B5D8A8D8AD20D8A8D8AEDB8CD8B1_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/framboise_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/framboise_android.ppn index dac3c30a0..3dc591b83 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/framboise_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/framboise_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/mon20chouchou_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/mon20chouchou_android.ppn index 8942bee32..5534bc9d1 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/mon20chouchou_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/mon20chouchou_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/parapluie_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/parapluie_android.ppn index 0e3e63b88..820b2764b 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/parapluie_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/parapluie_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/perroquet_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/perroquet_android.ppn index 1e0a9f28a..78f86b10b 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/perroquet_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/perroquet_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/tournesol_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/tournesol_android.ppn index 80742ad21..44c12af07 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/tournesol_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_fr/tournesol_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4A8E0A4AEE0A4B8E0A58DE0A4A4E0A587_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4A8E0A4AEE0A4B8E0A58DE0A4A4E0A587_android.ppn index 597d51128..ff790b8f4 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4A8E0A4AEE0A4B8E0A58DE0A4A4E0A587_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4A8E0A4AEE0A4B8E0A58DE0A4A4E0A587_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4AEE0A58BE0A4B9E0A4ACE0A58DE0A4ACE0A4A4_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4AEE0A58BE0A4B9E0A4ACE0A58DE0A4ACE0A4A4_android.ppn index bfa7c17f4..2b726bf77 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4AEE0A58BE0A4B9E0A4ACE0A58DE0A4ACE0A4A4_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4AEE0A58BE0A4B9E0A4ACE0A58DE0A4ACE0A4A4_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4B5E0A4BFE0A4A6E0A4BEE0A488_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4B5E0A4BFE0A4A6E0A4BEE0A488_android.ppn index 1d27ea5f8..c0cfa3c25 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4B5E0A4BFE0A4A6E0A4BEE0A488_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4B5E0A4BFE0A4A6E0A4BEE0A488_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4B8E0A581E0A4ADE0A497_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4B8E0A581E0A4ADE0A497_android.ppn index 755d250d5..72c5077f9 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4B8E0A581E0A4ADE0A497_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_hi/E0A4B8E0A581E0A4ADE0A497_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/cameriere_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/cameriere_android.ppn index aba3c21f4..aee6887f1 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/cameriere_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/cameriere_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/espresso_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/espresso_android.ppn index be3ea4651..70db35841 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/espresso_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/espresso_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/porcospino_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/porcospino_android.ppn index 1dc292406..9a714a539 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/porcospino_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/porcospino_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/silenzio20bruno_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/silenzio20bruno_android.ppn index 083e0c94e..3e2661b67 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/silenzio20bruno_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_it/silenzio20bruno_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E3828AE38293E38194_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E3828AE38293E38194_android.ppn index d1cfabfb9..30007c1b7 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E3828AE38293E38194_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E3828AE38293E38194_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E5BF8DE88085_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E5BF8DE88085_android.ppn index 66342c257..e2bd0e65b 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E5BF8DE88085_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E5BF8DE88085_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E6ADA6E5A3AB_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E6ADA6E5A3AB_android.ppn index 6d9f24686..ae4e3f195 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E6ADA6E5A3AB_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ja/E6ADA6E5A3AB_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/EBB985EC8AA4EBB984_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/EBB985EC8AA4EBB984_android.ppn index 67919c4d3..302331b35 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/EBB985EC8AA4EBB984_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/EBB985EC8AA4EBB984_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/EC9584EC9DB4EC8AA4ED81ACEBA6BC_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/EC9584EC9DB4EC8AA4ED81ACEBA6BC_android.ppn index 8642e3e9c..9debbaa33 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/EC9584EC9DB4EC8AA4ED81ACEBA6BC_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/EC9584EC9DB4EC8AA4ED81ACEBA6BC_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/ECBD94EBBF94EC868C_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/ECBD94EBBF94EC868C_android.ppn index 1324fbb2c..36659abca 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/ECBD94EBBF94EC868C_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ko/ECBD94EBBF94EC868C_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/broodrooster_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/broodrooster_android.ppn index 63afa7b28..355c3f20f 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/broodrooster_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/broodrooster_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/hoi20lotte_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/hoi20lotte_android.ppn index de6605a7c..a72aab0e1 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/hoi20lotte_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/hoi20lotte_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/koffie_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/koffie_android.ppn index 55f42218f..b2a526e3a 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/koffie_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/koffie_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/stekelvarken_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/stekelvarken_android.ppn index 4da833bc6..908fcd193 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/stekelvarken_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_nl/stekelvarken_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/C5BCubrC3B3wka_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/C5BCubrC3B3wka_android.ppn index 59a0da17e..0aa1acba0 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/C5BCubrC3B3wka_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/C5BCubrC3B3wka_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/jeC5BCozwierz_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/jeC5BCozwierz_android.ppn index 212cf62ae..efc078d3d 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/jeC5BCozwierz_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/jeC5BCozwierz_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/kawa_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/kawa_android.ppn index bcb83494b..c3b45d5f2 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/kawa_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/kawa_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/pierogi_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/pierogi_android.ppn index 5edfa437e..39022d9b2 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/pierogi_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pl/pierogi_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/abacaxi_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/abacaxi_android.ppn index 36a97f59e..a3618fccb 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/abacaxi_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/abacaxi_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/fenC3B4meno_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/fenC3B4meno_android.ppn index 406b88aa1..6eebc9acc 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/fenC3B4meno_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/fenC3B4meno_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/formiga_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/formiga_android.ppn index 57353eb35..33aa2bb64 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/formiga_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/formiga_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/porcoespinho_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/porcoespinho_android.ppn index 6ab73f3d8..b0df1560e 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/porcoespinho_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_pt/porcoespinho_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0B2D0BDD0B8D0BCD0B0D0BDD0B8D0B5_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0B2D0BDD0B8D0BCD0B0D0BDD0B8D0B5_android.ppn index 16e259acc..dd050c998 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0B2D0BDD0B8D0BCD0B0D0BDD0B8D0B5_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0B2D0BDD0B8D0BCD0B0D0BDD0B8D0B5_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BED181D182D0BED180D0BED0B6D0BDD18BD0B9_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BED181D182D0BED180D0BED0B6D0BDD18BD0B9_android.ppn index 845a93340..e3d434c6a 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BED181D182D0BED180D0BED0B6D0BDD18BD0B9_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BED181D182D0BED180D0BED0B6D0BDD18BD0B9_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BED182D0BAD180D18BD182D0BE_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BED182D0BAD180D18BD182D0BE_android.ppn index cf16ea632..a0ba33d9d 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BED182D0BAD180D18BD182D0BE_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BED182D0BAD180D18BD182D0BE_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BFD0BED0BCD0BED0B3D0B8D182D0B5_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BFD0BED0BCD0BED0B3D0B8D182D0B5_android.ppn index 98b7c2b68..41e5c76dd 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BFD0BED0BCD0BED0B3D0B8D182D0B5_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_ru/D0BFD0BED0BCD0BED0B3D0B8D182D0B5_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/hygge_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/hygge_android.ppn index 3f3977476..92ec0c51b 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/hygge_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/hygge_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/kC3B6ttbullar_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/kC3B6ttbullar_android.ppn index b3c0e1ed6..a209578cd 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/kC3B6ttbullar_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/kC3B6ttbullar_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/kaffe_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/kaffe_android.ppn index 5eb5ff74e..ce364fabb 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/kaffe_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/kaffe_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/piggsvin_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/piggsvin_android.ppn index d65486616..bfad10605 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/piggsvin_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_sv/piggsvin_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/chC3A0o20chE1BB8B_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/chC3A0o20chE1BB8B_android.ppn index 50acdb041..ae6751316 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/chC3A0o20chE1BB8B_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/chC3A0o20chE1BB8B_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/con20nhC3ADm_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/con20nhC3ADm_android.ppn index 63ccf3623..c8be77063 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/con20nhC3ADm_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/con20nhC3ADm_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/mC3A1y20nC6B0E1BB9Bng20bC3A1nh20mC3AC_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/mC3A1y20nC6B0E1BB9Bng20bC3A1nh20mC3AC_android.ppn index c6d98d805..4a4739345 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/mC3A1y20nC6B0E1BB9Bng20bC3A1nh20mC3AC_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/mC3A1y20nC6B0E1BB9Bng20bC3A1nh20mC3AC_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/mC3A1y20pha20cC3A020phC3AA_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/mC3A1y20pha20cC3A020phC3AA_android.ppn index d8f288fa5..168fbfa3f 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/mC3A1y20pha20cC3A020phC3AA_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_vn/mC3A1y20pha20cC3A020phC3AA_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E4BDA0E5A5BD_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E4BDA0E5A5BD_android.ppn index 263bca284..e4bf5a158 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E4BDA0E5A5BD_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E4BDA0E5A5BD_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E59296E595A1_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E59296E595A1_android.ppn index 294ed4597..6e11e4ab4 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E59296E595A1_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E59296E595A1_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E6B0B4E9A5BA_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E6B0B4E9A5BA_android.ppn index 162ba25b5..245f5f02e 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E6B0B4E9A5BA_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E6B0B4E9A5BA_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E8B1AAE78CAA_android.ppn b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E8B1AAE78CAA_android.ppn index 880d0678a..0797f45a5 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E8B1AAE78CAA_android.ppn and b/resources/src/commonMain/resources/MR/files/porcupine/keyword_files_zh/E8B1AAE78CAA_android.ppn differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params.pv index 11743f388..27b7e5366 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ar.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ar.pv index 4ffe2132d..295fde60e 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ar.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ar.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_de.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_de.pv index d654fb1f5..321246aeb 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_de.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_de.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_es.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_es.pv index eb0771c5c..c7e4e5496 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_es.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_es.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_fa.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_fa.pv index 5ab3d7b9a..333bc82e5 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_fa.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_fa.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_fr.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_fr.pv index 227e40bfe..f3cf6e4bf 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_fr.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_fr.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_hi.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_hi.pv index aa33c5523..5788da0a1 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_hi.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_hi.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_it.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_it.pv index 337bccfe5..10338a12a 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_it.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_it.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ja.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ja.pv index 1fe2fe436..b6cb1aed2 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ja.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ja.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ko.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ko.pv index df63586ab..3dc6f5b83 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ko.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ko.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_nl.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_nl.pv index a3ff7ebcd..bb8a9e568 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_nl.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_nl.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_pl.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_pl.pv index 98bed0e5c..741253708 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_pl.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_pl.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_pt.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_pt.pv index c51c0822e..66e956ca9 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_pt.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_pt.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ru.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ru.pv index fb0c7335e..9188a5189 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ru.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_ru.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_sv.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_sv.pv index 1cb6435dd..56d06b5e3 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_sv.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_sv.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_vn.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_vn.pv index 889f0081c..63bc9056e 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_vn.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_vn.pv differ diff --git a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_zh.pv b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_zh.pv index ff16eb7e4..c20d6cd26 100644 Binary files a/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_zh.pv and b/resources/src/commonMain/resources/MR/files/porcupine/models/porcupine_params_zh.pv differ diff --git a/settings/src/commonMain/kotlin/org/rhasspy/mobile/settings/ConfigurationSetting.kt b/settings/src/commonMain/kotlin/org/rhasspy/mobile/settings/ConfigurationSetting.kt index 4ca4ccfd0..4c36d2e39 100644 --- a/settings/src/commonMain/kotlin/org/rhasspy/mobile/settings/ConfigurationSetting.kt +++ b/settings/src/commonMain/kotlin/org/rhasspy/mobile/settings/ConfigurationSetting.kt @@ -4,6 +4,7 @@ import kotlinx.serialization.builtins.ListSerializer import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType import org.rhasspy.mobile.data.connection.HttpConnectionData import org.rhasspy.mobile.data.connection.LocalWebserverConnectionData import org.rhasspy.mobile.data.connection.MqttConnectionData @@ -84,6 +85,7 @@ object ConfigurationSetting { val wakeWordOption = ISetting(SettingsEnum.WakeWordOption, WakeWordOption.Disabled, WakeWordOption.serializer()) + val wakeWordAudioRecorderSourceType = ISetting(SettingsEnum.WakeWordAudioRecorderSourceType, AudioSourceType.default, AudioSourceType.serializer()) val wakeWordAudioRecorderChannel = ISetting(SettingsEnum.WakeWordAudioRecorderChannel, AudioFormatChannelType.default, AudioFormatChannelType.serializer()) val wakeWordAudioRecorderEncoding = ISetting(SettingsEnum.WakeWordAudioRecorderEncoding, AudioFormatEncodingType.default, AudioFormatEncodingType.serializer()) val wakeWordAudioRecorderSampleRate = ISetting(SettingsEnum.WakeWordAudioRecorderSampleRate, AudioFormatSampleRateType.default, AudioFormatSampleRateType.serializer()) @@ -123,6 +125,7 @@ object ConfigurationSetting { val speechToTextOption = ISetting(SettingsEnum.SpeechToTextOption, SpeechToTextOption.Disabled, SpeechToTextOption.serializer()) + val speechToTextAudioRecorderSourceType = ISetting(SettingsEnum.SpeechToTextRecorderSourceType, AudioSourceType.default, AudioSourceType.serializer()) val speechToTextAudioRecorderChannel = ISetting(SettingsEnum.SpeechToTextAudioRecorderChannel, AudioFormatChannelType.default, AudioFormatChannelType.serializer()) val speechToTextAudioRecorderEncoding = ISetting(SettingsEnum.SpeechToTextAudioRecorderEncoding, AudioFormatEncodingType.default, AudioFormatEncodingType.serializer()) val speechToTextAudioRecorderSampleRate = ISetting(SettingsEnum.SpeechToTextAudioRecorderSampleRate, AudioFormatSampleRateType.default, AudioFormatSampleRateType.serializer()) diff --git a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/TestTag.kt b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/TestTag.kt index 8fd6b9a2d..588b34007 100644 --- a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/TestTag.kt +++ b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/TestTag.kt @@ -104,6 +104,7 @@ enum class TestTag { AudioFocusOnDialog, AudioFocusStopRecording, + AudioRecorderSourceType, AudioRecorderEncodingType, AudioRecorderChannelType, AudioRecorderSampleRateType, diff --git a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/AudioInputConfigurationScreen.kt b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/AudioInputConfigurationScreen.kt index 7b06b4c89..99ec8cf6a 100644 --- a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/AudioInputConfigurationScreen.kt +++ b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/AudioInputConfigurationScreen.kt @@ -134,7 +134,7 @@ private fun AudioInputWakeWord( } ) - Divider() + HorizontalDivider() //button to open audio output format ListElement( @@ -169,7 +169,7 @@ private fun AudioInputSpeechToText( elevation = CardDefaults.cardElevation(defaultElevation = 8.dp) ) { - ListElement { + TitleListElement { Text(resource = MR.strings.speechToText.stable) } @@ -191,7 +191,7 @@ private fun AudioInputSpeechToText( } ) - Divider() + HorizontalDivider() //button to open audio output format ListElement( diff --git a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/speechtotext/SpeechToTextAudioRecorderFormatScreen.kt b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/speechtotext/SpeechToTextAudioRecorderFormatScreen.kt index 57896690a..7ae72febd 100644 --- a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/speechtotext/SpeechToTextAudioRecorderFormatScreen.kt +++ b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/speechtotext/SpeechToTextAudioRecorderFormatScreen.kt @@ -66,6 +66,23 @@ private fun WakeWordAudioFormatScreenContent( viewState: SpeechToTextAudioRecorderConfigurationData, onEvent: (event: SpeechToTextConfigurationUiEvent) -> Unit ) { + Card( + modifier = Modifier.padding(8.dp), + elevation = CardDefaults.cardElevation(defaultElevation = 8.dp) + ) { + ListElement { + Text(resource = MR.strings.source.stable) + } + + RadioButtonsEnumSelectionList( + modifier = Modifier.testTag(TestTag.AudioRecorderSourceType), + selected = viewState.audioRecorderSourceType, + onSelect = { onEvent(SelectAudioRecorderSourceType(it)) }, + combinedTestTag = TestTag.AudioRecorderSourceType, + values = viewState.audioRecorderSourceTypes + ) + } + Card( modifier = Modifier.padding(8.dp), elevation = CardDefaults.cardElevation(defaultElevation = 8.dp) diff --git a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/wakeword/WakeWordAudioRecorderFormatScreen.kt b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/wakeword/WakeWordAudioRecorderFormatScreen.kt index 67b0355ff..c24a48980 100644 --- a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/wakeword/WakeWordAudioRecorderFormatScreen.kt +++ b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/configuration/wakeword/WakeWordAudioRecorderFormatScreen.kt @@ -22,6 +22,7 @@ import org.rhasspy.mobile.ui.content.elements.RadioButtonsEnumSelectionList import org.rhasspy.mobile.ui.content.elements.Text import org.rhasspy.mobile.ui.content.list.ListElement import org.rhasspy.mobile.ui.testTag +import org.rhasspy.mobile.viewmodel.configuration.speechtotext.SpeechToTextConfigurationUiEvent import org.rhasspy.mobile.viewmodel.configuration.wakeword.WakeWordConfigurationUiEvent import org.rhasspy.mobile.viewmodel.configuration.wakeword.WakeWordConfigurationUiEvent.Action.BackClick import org.rhasspy.mobile.viewmodel.configuration.wakeword.WakeWordConfigurationUiEvent.AudioRecorderFormatUiEvent.Change.* @@ -76,6 +77,23 @@ private fun WakeWordAudioRecorderFormatScreenContent( viewState: WakeWordAudioRecorderConfigurationData, onEvent: (event: WakeWordConfigurationUiEvent) -> Unit ) { + Card( + modifier = Modifier.padding(8.dp), + elevation = CardDefaults.cardElevation(defaultElevation = 8.dp) + ) { + ListElement { + Text(resource = MR.strings.source.stable) + } + + RadioButtonsEnumSelectionList( + modifier = Modifier.testTag(TestTag.AudioRecorderSourceType), + selected = viewState.audioRecorderSourceType, + onSelect = { onEvent(SelectAudioRecorderSourceType(it)) }, + combinedTestTag = TestTag.AudioRecorderSourceType, + values = viewState.audioRecorderSourceTypes + ) + } + Card( modifier = Modifier.padding(8.dp), elevation = CardDefaults.cardElevation(defaultElevation = 8.dp) diff --git a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/elements/CustomDivider.kt b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/elements/CustomDivider.kt index ac4024824..2aa24f0cd 100644 --- a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/elements/CustomDivider.kt +++ b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/elements/CustomDivider.kt @@ -1,13 +1,13 @@ package org.rhasspy.mobile.ui.content.elements -import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @Composable fun CustomDivider(modifier: Modifier = Modifier) { - Divider( + HorizontalDivider( modifier = modifier, color = MaterialTheme.colorScheme.surfaceVariant ) diff --git a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/elements/Dialog.kt b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/elements/Dialog.kt index 5201cccec..cc676a760 100644 --- a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/elements/Dialog.kt +++ b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/elements/Dialog.kt @@ -260,7 +260,7 @@ private fun Dialog( //Divider (optional) if (showDivider) { - Divider() + HorizontalDivider() } } diff --git a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/list/TitleListElement.kt b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/list/TitleListElement.kt index fc18a2c2a..d4cf0a615 100644 --- a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/list/TitleListElement.kt +++ b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/content/list/TitleListElement.kt @@ -19,7 +19,7 @@ fun TitleListElement( text: @Composable () -> Unit ) { CustomElevation( - tonalElevation = (-6).dp, + tonalElevation = (-3).dp, ) { ListItem( headlineContent = text, diff --git a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/main/DialogScreen.kt b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/main/DialogScreen.kt index e2afac5ea..c0d5310c8 100644 --- a/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/main/DialogScreen.kt +++ b/ui/src/commonMain/kotlin/org/rhasspy/mobile/ui/main/DialogScreen.kt @@ -154,7 +154,7 @@ fun DialogTransitionListItem(item: DialogInformationItem) { horizontalAlignment = Alignment.CenterHorizontally ) { - Divider( + HorizontalDivider( color = MaterialTheme.colorScheme.surfaceVariant, modifier = Modifier .height(10.dp) @@ -169,7 +169,6 @@ fun DialogTransitionListItem(item: DialogInformationItem) { } } -@OptIn(ExperimentalMaterial3Api::class) @Composable private fun DialogActionListItem(item: DialogActionViewState) { ListElement( diff --git a/versions.properties b/versions.properties index a33e52346..29c990ebe 100644 --- a/versions.properties +++ b/versions.properties @@ -6,59 +6,43 @@ #### #### suppress inspection "SpellCheckingInspection" for whole file #### suppress inspection "UnusedProperty" for whole file - -plugin.android=8.4.0-alpha09 - +plugin.android=8.4.0-alpha10 plugin.app.cash.sqldelight=2.0.1 - plugin.co.touchlab.crashkios.crashlyticslink=0.8.6 - plugin.com.google.devtools.ksp=1.9.22-1.0.17 ## # available=2.0.0-Beta1-1.0.14 ## # available=2.0.0-Beta1-1.0.15 ## # available=2.0.0-Beta2-1.0.16 ## # available=2.0.0-Beta3-1.0.17 - +## # available=2.0.0-Beta4-1.0.17 plugin.de.undercouch.download=5.5.0 - version.ai.picovoice..porcupine-android=3.0.1 - version.android.tools.desugar_jdk_libs=2.0.4 - version.androidx.activity=1.8.2 ## # available=1.9.0-alpha01 ## # available=1.9.0-alpha02 ## # available=1.9.0-alpha03 - version.androidx.appcompat=1.6.1 ## # available=1.7.0-alpha01 ## # available=1.7.0-alpha02 ## # available=1.7.0-alpha03 - version.androidx.arch.core=2.2.0 - version.androidx.browser=1.8.0-beta02 - version.androidx.compose.compiler=1.5.9 - version.androidx.compose.ui=1.6.1 ## # available=1.7.0-alpha01 ## # available=1.7.0-alpha02 - version.androidx.core=1.12.0 ## # available=1.13.0-alpha01 ## # available=1.13.0-alpha02 ## # available=1.13.0-alpha03 ## # available=1.13.0-alpha04 ## # available=1.13.0-alpha05 - version.androidx.core-splashscreen=1.0.1 ## # available=1.1.0-alpha01 ## # available=1.1.0-alpha02 - version.androidx.documentfile=1.0.1 ## # available=1.1.0-alpha01 - version.androidx.fragment=1.6.2 ## # available=1.7.0-alpha01 ## # available=1.7.0-alpha02 @@ -70,141 +54,86 @@ version.androidx.fragment=1.6.2 ## # available=1.7.0-alpha08 ## # available=1.7.0-alpha09 ## # available=1.7.0-alpha10 - version.androidx.glance=1.0.0 ## # available=1.1.0-alpha01 - version.androidx.lifecycle=2.7.0 ## # available=2.8.0-alpha01 - version.androidx.multidex=2.0.1 - -## unused version.androidx.paging=3.2.0 - -## unused version.androidx.paging-compose=3.2.0 - version.androidx.test.core=1.6.0-alpha05 - version.androidx.test.orchestrator=1.5.0-alpha02 - version.androidx.test.rules=1.6.0-alpha03 - version.androidx.test.runner=1.6.0-alpha06 - version.androidx.test.uiautomator=2.3.0-rc01 - version.androidx.tracing=1.2.0 ## # available=1.3.0-alpha01 ## # available=1.3.0-alpha02 - version.androidx.window=1.2.0 ## # available=1.3.0-alpha01 ## # available=1.3.0-alpha02 - version.app.cash.paging=3.3.0-alpha02-0.4.0 - version.app.cash.sqldelight=2.0.1 - version.com.adevinta.android..barista=4.3.0 - version.com.benasher44..uuid=0.8.2 - version.com.codingfeline.buildkonfig..buildkonfig-gradle-plugin=0.15.1 - version.com.github.requery..sqlite-android=3.45.0 - version.com.google.gms..google-services=4.4.1 - version.com.journeyapps..zxing-android-embedded=4.3.0 - version.com.mikepenz..aboutlibraries-core=11.1.0-b01 - -version.com.mikepenz.aboutlibraries.plugin..aboutlibraries-plugin=11.1.0-b01 - +version.com.mikepenz.aboutlibraries.plugin..aboutlibraries-plugin=11.1.0-b02 version.dev.icerock.moko..mvvm-core=0.16.1 - version.dev.icerock.moko..resources=0.23.0 ## # available=0.24.0-alpha-1 ## # available=0.24.0-alpha-2 ## # available=0.24.0-alpha-3 - +## # available=0.24.0-alpha-4 version.dev.icerock.moko..resources-compose=0.23.0 ## # available=0.24.0-alpha-1 ## # available=0.24.0-alpha-2 ## # available=0.24.0-alpha-3 - +## # available=0.24.0-alpha-4 version.dev.icerock.moko..resources-generator=0.23.0 ## # available=0.24.0-alpha-1 ## # available=0.24.0-alpha-2 ## # available=0.24.0-alpha-3 - +## # available=0.24.0-alpha-4 version.firebase-bom=32.7.2 - version.firebase-crashlytics-gradle=2.9.9 - version.google.accompanist=0.34.0 ## # available=0.35.0-alpha - version.hamcrest=2.2 - version.io.github.nailik..androidresampler=0.2 - version.kermit=2.0.3 - - version.koin=3.5.3 +version.koin=3.5.3 ### available=3.6.0-alpha1 ### available=3.6.0-wasm-alpha1 ### available=3.6.0-wasm-alpha2 - version.kotlin=1.9.22 ## # available=2.0.0-Beta1 ## # available=2.0.0-Beta2 ## # available=2.0.0-Beta3 - +## # available=2.0.0-Beta4 version.kotlinx.collections.immutable=0.3.7 - -version.kotlinx.coroutines=1.7.3 -## # available=1.8.0-RC -## # available=1.8.0-RC2 - +version.kotlinx.coroutines=1.8.0 version.kotlinx.datetime=0.5.0 - -version.kotlinx.serialization=1.6.2 - - version.ktor=3.0.0-beta-1 - +version.kotlinx.serialization=1.6.3 +version.ktor=3.0.0-beta-1 version.multiplatform-settings=1.1.1 - - version.okio=3.8.0 - +version.okio=3.8.0 version.org.gradle..test-retry-gradle-plugin=1.5.8 - -version.org.jetbrains.compose..compose-gradle-plugin=1.6.0-beta02 - -version.org.jetbrains.compose.foundation..foundation=1.6.0-beta02 - -version.org.jetbrains.compose.material..material=1.6.0-beta02 - -version.org.jetbrains.compose.material..material-icons-extended=1.6.0-beta02 - -version.org.jetbrains.compose.material3..material3=1.6.0-beta02 - -version.org.jetbrains.compose.runtime..runtime=1.6.0-beta02 - -version.org.jetbrains.compose.ui..ui=1.6.0-beta02 - -version.org.jetbrains.compose.ui..ui-test-junit4=1.6.0-beta02 - +version.org.jetbrains.compose..compose-gradle-plugin=1.6.0-rc02 +version.org.jetbrains.compose.foundation..foundation=1.6.0-rc02 +version.org.jetbrains.compose.material..material=1.6.0-rc02 +version.org.jetbrains.compose.material..material-icons-extended=1.6.0-rc02 +version.org.jetbrains.compose.material3..material3=1.6.0-rc02 +version.org.jetbrains.compose.runtime..runtime=1.6.0-rc02 +version.org.jetbrains.compose.ui..ui=1.6.0-rc02 +version.org.jetbrains.compose.ui..ui-test-junit4=1.6.0-rc02 version.org.jetbrains.kotlinx..atomicfu=0.23.2 - version.org.kodein.mock..mockmp-gradle-plugin=1.17.0 - version.org.kodein.mock..mockmp-test-helper=1.17.0 - version.org.slf4j..slf4j-simple=2.0.12 ## # available=2.1.0-alpha0 ## # available=2.1.0-alpha1 - version.org.sonarsource.scanner.gradle..sonarqube-gradle-plugin=4.4.1.3373 diff --git a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/audioinput/AudioInputConfigurationViewModel.kt b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/audioinput/AudioInputConfigurationViewModel.kt index f0a22c64e..d655da30c 100644 --- a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/audioinput/AudioInputConfigurationViewModel.kt +++ b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/audioinput/AudioInputConfigurationViewModel.kt @@ -25,10 +25,10 @@ class AudioInputConfigurationViewModel( fun onAction(action: Action) { when (action) { BackClick -> navigator.onBackPressed() - OpenWakeWordRecorderFormatScreen -> navigator.navigate(WakeWordConfigurationScreen, WakeWordConfigurationScreenDestination.AudioRecorderFormatScreen) - OpenWakeWordOutputFormatScreen -> navigator.navigate(WakeWordConfigurationScreen, WakeWordConfigurationScreenDestination.AudioOutputFormatScreen) - OpenTextToSpeechRecorderFormatScreen -> navigator.navigate(SpeechToTextConfigurationScreen, SpeechToTextConfigurationScreenDestination.AudioRecorderFormatScreen) - OpenTextToSpeechOutputFormatScreen -> navigator.navigate(SpeechToTextConfigurationScreen, SpeechToTextConfigurationScreenDestination.AudioOutputFormatScreen) + OpenWakeWordRecorderFormatScreen -> navigator.navigate(WakeWordConfigurationScreenDestination.AudioRecorderFormatScreen) + OpenWakeWordOutputFormatScreen -> navigator.navigate(WakeWordConfigurationScreenDestination.AudioOutputFormatScreen) + OpenTextToSpeechRecorderFormatScreen -> navigator.navigate(SpeechToTextConfigurationScreenDestination.AudioRecorderFormatScreen) + OpenTextToSpeechOutputFormatScreen -> navigator.navigate(SpeechToTextConfigurationScreenDestination.AudioOutputFormatScreen) } } diff --git a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationUiEvent.kt b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationUiEvent.kt index d6fd80b8f..4d15b3716 100644 --- a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationUiEvent.kt +++ b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationUiEvent.kt @@ -3,6 +3,7 @@ package org.rhasspy.mobile.viewmodel.configuration.speechtotext import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType import org.rhasspy.mobile.data.service.option.SpeechToTextOption sealed interface SpeechToTextConfigurationUiEvent { @@ -23,6 +24,7 @@ sealed interface SpeechToTextConfigurationUiEvent { sealed interface Change : AudioRecorderFormatUiEvent { + data class SelectAudioRecorderSourceType(val value: AudioSourceType) : Change data class SelectAudioRecorderChannelType(val value: AudioFormatChannelType) : Change data class SelectAudioRecorderEncodingType(val value: AudioFormatEncodingType) : Change data class SelectAudioRecorderSampleRateType(val value: AudioFormatSampleRateType) : Change diff --git a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationViewModel.kt b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationViewModel.kt index b46b4e4b7..969542488 100644 --- a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationViewModel.kt +++ b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationViewModel.kt @@ -78,6 +78,7 @@ class SpeechToTextConfigurationViewModel( it.copy(editData = with(it.editData) { copy( speechToTextAudioRecorderData = when (event) { + is SelectAudioRecorderSourceType -> speechToTextAudioRecorderData.copy(audioRecorderSourceType = event.value) is SelectAudioRecorderChannelType -> speechToTextAudioRecorderData.copy(audioRecorderChannelType = event.value) is SelectAudioRecorderEncodingType -> speechToTextAudioRecorderData.copy(audioRecorderEncodingType = event.value) is SelectAudioRecorderSampleRateType -> speechToTextAudioRecorderData.copy(audioRecorderSampleRateType = event.value) diff --git a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationViewState.kt b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationViewState.kt index 22bdaed23..55f5a33bf 100644 --- a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationViewState.kt +++ b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/speechtotext/SpeechToTextConfigurationViewState.kt @@ -6,6 +6,7 @@ import kotlinx.collections.immutable.toImmutableList import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType import org.rhasspy.mobile.data.service.option.SpeechToTextOption import org.rhasspy.mobile.settings.ConfigurationSetting import org.rhasspy.mobile.viewmodel.configuration.IConfigurationViewState @@ -29,10 +30,12 @@ data class SpeechToTextConfigurationViewState internal constructor( @Stable data class SpeechToTextAudioRecorderConfigurationData( + val audioRecorderSourceType: AudioSourceType = ConfigurationSetting.speechToTextAudioRecorderSourceType.value, val audioRecorderChannelType: AudioFormatChannelType = ConfigurationSetting.speechToTextAudioRecorderChannel.value, val audioRecorderEncodingType: AudioFormatEncodingType = ConfigurationSetting.speechToTextAudioRecorderEncoding.value, val audioRecorderSampleRateType: AudioFormatSampleRateType = ConfigurationSetting.speechToTextAudioRecorderSampleRate.value, ) { + val audioRecorderSourceTypes: ImmutableList = AudioSourceType.supportedValues().toImmutableList() val audioRecorderChannelTypes: ImmutableList = AudioFormatChannelType.entries.toImmutableList() val audioRecorderEncodingTypes: ImmutableList = AudioFormatEncodingType.supportedValues().toImmutableList() val audioRecorderSampleRateTypes: ImmutableList = AudioFormatSampleRateType.entries.toImmutableList() diff --git a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/voiceactivitydetection/VoiceActivityDetectionConfigurationViewModel.kt b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/voiceactivitydetection/VoiceActivityDetectionConfigurationViewModel.kt index a0db72f6e..a817fa2b9 100644 --- a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/voiceactivitydetection/VoiceActivityDetectionConfigurationViewModel.kt +++ b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/voiceactivitydetection/VoiceActivityDetectionConfigurationViewModel.kt @@ -158,6 +158,7 @@ class VoiceActivityDetectionConfigurationViewModel( AppSetting.isHotWordEnabled.value = false //start this recording audioRecorder.startRecording( + audioRecorderSourceType = ConfigurationSetting.speechToTextAudioRecorderSourceType.value, audioRecorderChannelType = ConfigurationSetting.speechToTextAudioRecorderChannel.value, audioRecorderEncodingType = ConfigurationSetting.speechToTextAudioRecorderEncoding.value, audioRecorderSampleRateType = ConfigurationSetting.speechToTextAudioRecorderSampleRate.value, diff --git a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationUiEvent.kt b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationUiEvent.kt index 7d7516290..4b0d68929 100644 --- a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationUiEvent.kt +++ b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationUiEvent.kt @@ -4,6 +4,7 @@ import okio.Path import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType import org.rhasspy.mobile.data.porcupine.PorcupineCustomKeyword import org.rhasspy.mobile.data.porcupine.PorcupineDefaultKeyword import org.rhasspy.mobile.data.service.option.PorcupineLanguageOption @@ -88,7 +89,7 @@ sealed interface WakeWordConfigurationUiEvent { sealed interface AudioRecorderFormatUiEvent : WakeWordConfigurationUiEvent { sealed interface Change : AudioRecorderFormatUiEvent { - + data class SelectAudioRecorderSourceType(val value: AudioSourceType) : Change data class SelectAudioRecorderChannelType(val value: AudioFormatChannelType) : Change data class SelectAudioRecorderEncodingType(val value: AudioFormatEncodingType) : Change data class SelectAudioRecorderSampleRateType(val value: AudioFormatSampleRateType) : Change diff --git a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationViewModel.kt b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationViewModel.kt index ca16c1855..086339153 100644 --- a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationViewModel.kt +++ b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationViewModel.kt @@ -100,8 +100,8 @@ class WakeWordConfigurationViewModel( _viewState.update { it.copy(editData = with(it.editData) { copy( - wakeWordAudioRecorderData = - when (event) { + wakeWordAudioRecorderData = when (event) { + is SelectAudioRecorderSourceType -> wakeWordAudioRecorderData.copy(audioRecorderSourceType = event.value) is SelectAudioRecorderChannelType -> wakeWordAudioRecorderData.copy(audioRecorderChannelType = event.value) is SelectAudioRecorderEncodingType -> wakeWordAudioRecorderData.copy(audioRecorderEncodingType = event.value) is SelectAudioRecorderSampleRateType -> wakeWordAudioRecorderData.copy(audioRecorderSampleRateType = event.value) diff --git a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationViewState.kt b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationViewState.kt index 99720aa71..0ed4c368d 100644 --- a/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationViewState.kt +++ b/viewmodel/src/commonMain/kotlin/org/rhasspy/mobile/viewmodel/configuration/wakeword/WakeWordConfigurationViewState.kt @@ -7,6 +7,7 @@ import kotlinx.collections.immutable.toImmutableList import org.rhasspy.mobile.data.audiorecorder.AudioFormatChannelType import org.rhasspy.mobile.data.audiorecorder.AudioFormatEncodingType import org.rhasspy.mobile.data.audiorecorder.AudioFormatSampleRateType +import org.rhasspy.mobile.data.audiorecorder.AudioSourceType import org.rhasspy.mobile.data.data.toStringOrEmpty import org.rhasspy.mobile.data.porcupine.PorcupineCustomKeyword import org.rhasspy.mobile.data.porcupine.PorcupineDefaultKeyword @@ -45,10 +46,12 @@ data class WakeWordConfigurationViewState internal constructor( @Stable data class WakeWordAudioRecorderConfigurationData( + val audioRecorderSourceType: AudioSourceType = ConfigurationSetting.wakeWordAudioRecorderSourceType.value, val audioRecorderChannelType: AudioFormatChannelType = ConfigurationSetting.wakeWordAudioRecorderChannel.value, val audioRecorderEncodingType: AudioFormatEncodingType = ConfigurationSetting.wakeWordAudioRecorderEncoding.value, val audioRecorderSampleRateType: AudioFormatSampleRateType = ConfigurationSetting.wakeWordAudioRecorderSampleRate.value, ) { + val audioRecorderSourceTypes: ImmutableList = AudioSourceType.supportedValues().toImmutableList() val audioRecorderChannelTypes: ImmutableList = AudioFormatChannelType.entries.toTypedArray().toImmutableList() val audioRecorderEncodingTypes: ImmutableList = AudioFormatEncodingType.supportedValues().toImmutableList() val audioRecorderSampleRateTypes: ImmutableList = AudioFormatSampleRateType.entries.toTypedArray().toImmutableList() diff --git a/viewmodel/src/commonTest/kotlin/org/rhasspy/mobile/viewmodel/configuration/voiceactivitydetection/VoiceActivityDetectionConfigurationViewModelTest.kt b/viewmodel/src/commonTest/kotlin/org/rhasspy/mobile/viewmodel/configuration/voiceactivitydetection/VoiceActivityDetectionConfigurationViewModelTest.kt index 339cac62e..3e995019b 100644 --- a/viewmodel/src/commonTest/kotlin/org/rhasspy/mobile/viewmodel/configuration/voiceactivitydetection/VoiceActivityDetectionConfigurationViewModelTest.kt +++ b/viewmodel/src/commonTest/kotlin/org/rhasspy/mobile/viewmodel/configuration/voiceactivitydetection/VoiceActivityDetectionConfigurationViewModelTest.kt @@ -73,13 +73,13 @@ class VoiceActivityDetectionConfigurationViewModelTest : AppTest() { @Suppress("unused") fun `when the user tests the audio recording and closes the app audio recording test is stopped`() { every { audioRecorder.stopRecording() } returns Unit - every { audioRecorder.startRecording(isAny(), isAny(), isAny(), isAny(), isAny(), isAny(), isAny()) } returns Unit + every { audioRecorder.startRecording(isAny(), isAny(), isAny(), isAny(), isAny(), isAny(), isAny(), isAny()) } returns Unit every { microphonePermission.granted } returns MutableStateFlow(true) assertEquals(false, audioRecorder.isRecording.value) voiceActivityDetectionConfigurationViewModel.onEvent(ToggleAudioLevelTest) nVerify { - audioRecorder.startRecording(isAny(), isAny(), isAny(), isAny(), isAny(), isAny(), isAny()) + audioRecorder.startRecording(isAny(), isAny(), isAny(), isAny(), isAny(), isAny(), isAny(), isAny()) } isAppInBackground.value = true