app/src/main/java/com/example/jarvis_stts/MainActivity.kt aktualisiert
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user