Распознавание речи Android не работает в приложении ExpoAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Распознавание речи Android не работает в приложении Expo

Сообщение Anonymous »

Я пытаюсь реализовать класс распознавания речи для использования в моем приложении 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"):
Как только я нажму кнопку «Начать прослушивание»:

Код: Выделить всё

11-25 18:23:13.462 27006 27068 D MyVoiceModule: Starting...
11-25 18:23:13.463 27006 27068 D MyVoiceModule: Activity...com.anonymous.myexpoapp.MainActivity@8c53839
11-25 18:23:13.467 27006 27006 D MyVoiceModule: Test handler is working
11-25 18:23:13.467 27006 27006 D MyVoiceModule: ActivityProvider: com.anonymous.myexpoapp.MainActivity@8c53839
11-25 18:23:13.467 27006 27006 D MyVoiceModule: currentActivtyi: com.anonymous.myexpoapp.MainActivity@8c53839
11-25 18:23:13.467 27006 27006 D MyVoiceModule: SpeechRecognizer: android.speech.SpeechRecognizerProxy@e915243
11-25 18:23:13.467 27006 27006 D MyVoiceModule: SpeechRecognizer will start listening now...
11-25 18:23:13.473 27006 27006 D MyVoiceModule: SpeechRecognizer is listening now...
А если я затем нажму «Перестать слушать»:

Код: Выделить всё

11-25 18:23:17.998 27006 27068 D MyVoiceModule: Stopping...
Например, я никогда не видел Log.d("слушатель распознавания", "Готов к речи!").
Что здесь не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... n-expo-app
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Распознавание речи Android не работает в приложении Expo
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Распознавание речи не работает для приложения Android, использующего SpeechRecouncer в качестве службы
    Anonymous » » в форуме Android
    0 Ответы
    59 Просмотры
    Последнее сообщение Anonymous
  • Распознавание речи на Android 13
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Распознавание речи на Android 13
    Anonymous » » в форуме Android
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Распознавание речи Android через микрофон Bluetooth в Jetpack Compose — 2024 г.
    Anonymous » » в форуме Android
    0 Ответы
    47 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»