app/src/main/java/com/example/jarvis_stts/MainActivity.kt aktualisiert

This commit is contained in:
2026-03-11 12:08:29 +00:00
parent 0fd11668b3
commit 423409cbc2

View File

@@ -16,17 +16,24 @@ import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import okhttp3.* import okhttp3.*
import java.util.Locale import java.util.Locale
import ai.picovoice.porcupine.PorcupineManager //import ai.picovoice.porcupine.PorcupineManager
import ai.picovoice.porcupine.PorcupineManagerCallback //import ai.picovoice.porcupine.PorcupineManagerCallback
import ai.picovoice.porcupine.Porcupine //import ai.picovoice.porcupine.Porcupine
import org.vosk.Model
import org.vosk.Recognizer
import org.vosk.android.SpeechService
import org.vosk.android.StorageService
import org.vosk.android.RecognitionLi
class MainActivity : AppCompatActivity(), TextToSpeech.OnInitListener { class MainActivity : AppCompatActivity(), RecognitionListener {
private lateinit var tts: TextToSpeech private var voskService: SpeechService? = null
private lateinit var tvStatus: TextView private var voskModel: Model? = null
private lateinit var etUrl: EditText
private lateinit var spinnerVoices: Spinner override fun onCreate(savedInstanceState: Bundle?) {
private var porcupineManager: PorcupineManager? = null super.onCreate(savedInstanceState)
initVosk()
}
private val client = OkHttpClient() private val client = OkHttpClient()
private var webSocket: WebSocket? = null private var webSocket: WebSocket? = null
@@ -52,6 +59,46 @@ class MainActivity : AppCompatActivity(), TextToSpeech.OnInitListener {
} }
} }
private fun initVosk() {
StorageService.unpack(this, "model-de", "model",
{ model: Model ->
voskModel = model
startVosk()
},
{ exception: IOException ->
Log.e("JARVIS", "Vosk Fehler: ${exception.message}")
}
)
}
private fun startVosk() {
try {
// "jarvis" als Hotword im Recognizer definieren
val rec = Recognizer(voskModel, 16000.0f, "[\"jarvis\", \"[unk]\"]")
voskService = SpeechService(rec, 16000.0f)
voskService?.startListening(this)
tvStatus.text = "Bereit (Vosk)"
} catch (e: Exception) {
Log.e("JARVIS", "Vosk Start Fehler: ${e.message}")
}
}
// --- RecognitionListener Methoden ---
override fun onPartialResult(hypothesis: String) {
// Hier prüfen wir, ob "jarvis" im Teil-Ergebnis steht
if (hypothesis.contains("jarvis")) {
voskService?.stop() // Kurz Pause machen
startSpeechRecognition() // Dein Google STT starten
}
}
override fun onResult(hypothesis: String) { }
override fun onFinalResult(hypothesis: String) { }
override fun onError(exception: Exception) { }
override fun onTimeout() { }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)