StjepanSalkovic

govor - kod

Oct 1st, 2025 (edited)
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.68 KB | Source Code | 0 0
  1. class MainActivity : AppCompatActivity() {
  2.  
  3.     private lateinit var mic: ImageButton
  4.     private lateinit var tvP: TextView
  5.     private lateinit var tvO: TextView
  6.     private var tts: TextToSpeech? = null
  7.     //pokretanje aktivnosti prepoznavanja govora (Speech-to-Text) i vraćanje rezultata.
  8.     private val speachLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult())  //registracija
  9.     {
  10.         if (it.resultCode == RESULT_OK) { //
  11.             val result = it.data?.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)  //uzimanje govora RecognizerIntent (Androidova ugrađena aktivnost za prepoznavanje govora).
  12.             val text = result?.getOrNull(0).orEmpty()  //uzimanje prvog govora iz liste
  13.             tvP.text = "Pitanje: $text"         //prikaz govora na ekranu
  14.             obradiTekst(text.lowercase(Locale.getDefault()))   //poziv funkcije za obradu
  15.         }
  16.     }
  17.  
  18.     private fun obradiTekst(text: String) {
  19.         val odgovor = when {
  20.             text.contains("vrijeme") || text.contains("kiša")-> "Danas će u nekim krajevima padati kiša, ako kod Vas ne bude padala znači da niste u tim krajevima"
  21.             text.contains("pobjeda") || text.contains("poraz") -> "Ako kaniš pobijediti, ne smiješ izgubiti"
  22.             text.contains("teorija")|| text.contains("praksa")-> "U teoriji nema razlike između teorije i prakse. U praksi – ima."
  23.  
  24.             else -> "Nepoznato pitanje"
  25.         }
  26.         tvO.text="Odgovor: $odgovor"
  27.         tts?.speak(odgovor, TextToSpeech.QUEUE_FLUSH, null, null)
  28.  
  29.     }
  30.  
  31.     override fun onCreate(savedInstanceState: Bundle?) {
  32.         super.onCreate(savedInstanceState)
  33.         enableEdgeToEdge()
  34.         setContentView(R.layout.activity_main)
  35.         ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
  36.             val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
  37.             v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
  38.             insets
  39.         }
  40.         ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.RECORD_AUDIO), 1)
  41.         mic = findViewById(R.id.btnPricaj)
  42.         tvP = findViewById(R.id.tvPitanje)
  43.         tvO = findViewById(R.id.tvOdgovor)
  44.         mic.setOnClickListener { startSpeech() }  //pokreni prepoznavanje govora
  45.         tts = TextToSpeech(this) { status -> //inicijalizacija TextToSpeech
  46.             if (status != TextToSpeech.ERROR) {   //ako je inicijalizacija uspješna
  47.                 tts?.language = Locale.getDefault() //postavi jezik na trenutni
  48.             }
  49.         }
  50.  
  51.     }
  52.  
  53.     private fun startSpeech() {
  54.         val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
  55.             putExtra(
  56.                 RecognizerIntent.EXTRA_LANGUAGE_MODEL,  //model prepoznavanja govora
  57.                 RecognizerIntent.LANGUAGE_MODEL_FREE_FORM  //tekstualni model
  58.             )
  59.             putExtra(
  60.                 RecognizerIntent.EXTRA_LANGUAGE,
  61.                 Locale.getDefault()
  62.             ) //postavi jezik na trenutni
  63.             putExtra(
  64.                 RecognizerIntent.EXTRA_PROMPT,
  65.                 "Govorite..."
  66.             )  //tekst koji se prikazuje na ekranu
  67.         }
  68.             try {
  69.                 speachLauncher.launch(intent)  //pokreni prepoznavanje govora
  70.             } catch (e: Exception) {
  71.                 Toast.makeText(this, "Nije podržano", Toast.LENGTH_SHORT).show()
  72.             }
  73.         }
  74.     override fun onDestroy() {
  75.         tts?.stop()       // prekida govor ako trenutno nešto čita
  76.         tts?.shutdown()   // potpuno oslobađa resurse TTS enginea
  77.         super.onDestroy()
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment