Я пытаюсь реализовать класс распознавания речи для использования в моем приложении Expo React Native. Сборка работает хорошо, и я могу запустить приложение на симуляторе Android. Однако я не получаю никаких результатов от SpeechRecouncer. Вот мой код с некоторыми журналами:
package expo.modules.myvoicemodule
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.speech.RecognitionListener
import android.speech.RecognizerIntent
import android.speech.SpeechRecognizer
import expo.modules.kotlin.modules.Module
import expo.modules.kotlin.modules.ModuleDefinition
import android.util.Log
import android.Manifest
import android.content.pm.PackageManager
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
class MyVoiceModule : Module() {
private var speechRecognizer: SpeechRecognizer? = null
private var recognitionIntent: Intent? = null
override fun definition() = ModuleDefinition {
Name("MyVoiceModule")
Function("startListening") {
Log.d("MyVoiceModule", "Starting...")
val activity = appContext.currentActivity
?: throw Exception("No activity available")
val permission = Manifest.permission.RECORD_AUDIO
val currentActivity = appContext.currentActivity
Log.d("MyVoiceModule", "Activity...${activity}")
if (currentActivity != null && ContextCompat.checkSelfPermission(currentActivity, permission) != PackageManager.PERMISSION_GRANTED) {
// Request permission if not granted
ActivityCompat.requestPermissions(currentActivity, arrayOf(permission), 1)
Log.d("MyVoiceModule", "Permission not granted, requesting permission")
return@Function null
}
Handler(Looper.getMainLooper()).post {
Log.d("MyVoiceModule", "Test handler is working")
Log.d("MyVoiceModule", "ActivityProvider: ${appContext.currentActivity}")
val currentActivity = appContext.currentActivity
Log.d("MyVoiceModule", "currentActivtyi: ${currentActivity}")
if (currentActivity != null) {
speechRecognizer = SpeechRecognizer.createSpeechRecognizer(currentActivity)
speechRecognizer?.setRecognitionListener(recognitionListener)
Log.d("MyVoiceModule", "SpeechRecognizer: ${speechRecognizer}")
recognitionIntent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
}
Log.d("MyVoiceModule", "SpeechRecognizer will start listening now...")
speechRecognizer?.startListening(recognitionIntent)
Log.d("MyVoiceModule", "SpeechRecognizer is listening now...")
} else {
Log.d("current activity", "Activity is null!")
}
}
}
Function("stopListening") {
Log.d("MyVoiceModule", "Stopping...")
Handler(Looper.getMainLooper()).post {
appContext.activityProvider?.currentActivity?.let { _ ->
speechRecognizer?.stopListening()
speechRecognizer?.destroy()
speechRecognizer = null
}
}
}
Events("onResults")
Events("onError")
}
private val recognitionListener = object : RecognitionListener {
override fun onReadyForSpeech(params: Bundle) {
Log.d("recognition listener"," Ready for speech!")
}
override fun onBeginningOfSpeech() {}
override fun onRmsChanged(rmsdB: Float) {}
override fun onBufferReceived(buffer: ByteArray) {}
override fun onEndOfSpeech() {}
override fun onError(error: Int) {
Log.d("OnError", "Error...${error}")
sendEvent("onError", mapOf(
"errorCode" to error
))
}
override fun onResults(results: Bundle) {
val matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
Log.d("Speech Recognizer Results", "${matches}")
matches?.let {
sendEvent("onResults", mapOf(
"results" to it
))
}
}
override fun onPartialResults(partialResults: Bundle) {}
override fun onEvent(eventType: Int, params: Bundle) {}
}
}
Я не вижу никаких журналов внутри распознаванияListener, даже в onReadyForSpeech, хотя я вижу все журналы в Function("startListening"). Что здесь не так?
Я пытаюсь реализовать класс распознавания речи для использования в моем приложении Expo React Native. Сборка работает хорошо, и я могу запустить приложение на симуляторе Android. Однако я не получаю никаких результатов от SpeechRecouncer. Вот мой код с некоторыми журналами: [code]package expo.modules.myvoicemodule
private val recognitionListener = object : RecognitionListener { override fun onReadyForSpeech(params: Bundle) { Log.d("recognition listener"," Ready for speech!") }
override fun onBeginningOfSpeech() {}
override fun onRmsChanged(rmsdB: Float) {}
override fun onBufferReceived(buffer: ByteArray) {}
override fun onEndOfSpeech() {}
override fun onError(error: Int) { Log.d("OnError", "Error...${error}") sendEvent("onError", mapOf( "errorCode" to error )) }
override fun onResults(results: Bundle) { val matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION) Log.d("Speech Recognizer Results", "${matches}") matches?.let { sendEvent("onResults", mapOf( "results" to it )) } }
override fun onPartialResults(partialResults: Bundle) {}
override fun onEvent(eventType: Int, params: Bundle) {} } } [/code] Я не вижу никаких журналов внутри распознаванияListener, даже в onReadyForSpeech, хотя я вижу все журналы в Function("startListening"). Что здесь не так?
Я пытаюсь реализовать класс распознавания речи для использования в моем приложении Expo React Native. Сборка работает хорошо, и я могу запустить приложение на симуляторе Android. Однако я не получаю никаких результатов от SpeechRecouncer. Вот мой...
В качестве предисловия: я совершенно новичок в Android Studio и в целом новичок в Java, но я пытаюсь создать приложение для Android, похожее на Siri, в котором я мог бы сказать фразу, и телефон автоматически подхватит фразу и вводите в приложение...
Я создаю приложение для Android и использую распознавание речи, но, хотя приложение отлично работает с Android 11 и всеми версиями ниже, я столкнулся с препятствием при использовании чего-либо за пределами Android 12. Несмотря на то, что я потратил...
Я создаю приложение для Android и использую распознавание речи, но, хотя приложение отлично работает с Android 11 и всеми версиями ниже, я столкнулся с препятствием при использовании чего-либо за пределами Android 12. Несмотря на то, что я потратил...
Может кто-нибудь объяснить, как реализовать распознавание речи в реальном времени с помощью микрофона Bluetooth с помощью Android Jetpack Compose? Я изо всех сил пытался найти какие-либо полезные ресурсы по этому вопросу.
Это подход, который я...