Skip to content

bug: Speechrecognition listeners ignored in Android 10 and 12, work in Android 14 #518

@ChristopherL-creator

Description

@ChristopherL-creator

Plugin(s)

  • Android Battery Optimization
  • Android Dark Mode Support
  • Android Edge-to-Edge Support
  • Android Foreground Service
  • App Review
  • App Shortcuts
  • App Update
  • Asset Manager
  • Audio Recorder
  • Background Task
  • Badge
  • Bluetooth Low Energy
  • Cloudinary
  • Contacts
  • Datetime Picker
  • File Compressor
  • File Opener
  • File Picker
  • Live Update
  • Managed Configurations
  • NFC
  • Photo Editor
  • Posthog
  • Printer
  • Screen Orientation
  • Screenshot
  • Speech Recognition
  • Speech Synthesis
  • Torch
  • Zip

Version

7.3.0

Platform(s)

  • Android
  • iOS
  • Web

Current behavior

Hello, since the silence threshold property gets ignored, i've been set the "end" listener callback, so that it triggers "start()" again. this way i managed to achieve continuous voice transcription on android 14.

However, this isn't working on my android 10 and android 12 devices:

  • if i don't speak for a few seconds after start(), the recognition stops after a few seconds, without triggering any listener;

  • if i speak, if i stop briefly, the "end" listener never triggers, unless i intentionally stop the speech transcription. it just stops after "speechend".
    I tried moving the logic to the "speechend" listener, but after a while it just gets stuck on "speechstarted" or "start" listeners.

  • i tried adding the following code to androidmanifest.xml, per https://stackoverflow.com/questions/71505916/speechrecognition-does-not-work-on-android11:
    "

"

may i get some context on this matter please? Thank you, and Kind Regards.

Expected behavior

during silence, the "end" listener should trigger before the recognition acutally ends

Reproduction

i was kindly allowed to skip the reproducible example

Steps to reproduce

  1. put logic in "end" listener so that is isListening() === false, start() will be called;
  2. as user requests recognition service, init listeners
  3. and call start() method.

Other information

package.json snippet for reference:
"
"dependencies": {
"@angular/animations": "^19.2.9",
"@angular/cdk": "^19.2.14",
"@angular/common": "^19.2.9",
"@angular/compiler": "^19.2.9",
"@angular/core": "^19.2.9",
"@angular/forms": "^19.2.9",
"@angular/platform-browser": "^19.2.9",
"@angular/platform-browser-dynamic": "^19.2.9",
"@angular/router": "^19.2.9",
"@awesome-cordova-plugins/audio-management": "^6.16.0",
"@awesome-cordova-plugins/core": "^6.16.0",
"@capacitor-community/speech-recognition": "^7.0.0",
"@capacitor-community/volume-buttons": "^7.0.0",
"@capacitor/android": "7.2.0",
"@capacitor/app": "7.0.1",
"@capacitor/core": "7.2.0",
"@capacitor/device": "^7.0.1",
"@capacitor/filesystem": "^7.0.1",
"@capacitor/haptics": "7.0.1",
"@capacitor/ios": "7.2.0",
"@capacitor/keyboard": "^7.0.1",
"@capacitor/preferences": "^7.0.1",
"@capacitor/push-notifications": "^7.0.1",
"@capacitor/status-bar": "^7.0.1",
"@capawesome-team/capacitor-speech-recognition": "^7.3.0",
"@capawesome/capacitor-file-picker": "^7.0.1",
"@ebarooni/capacitor-calendar": "^7.2.0",
"@fullcalendar/angular": "^6.1.17",
"@fullcalendar/core": "^6.1.17",
"@fullcalendar/daygrid": "^6.1.17",
"@fullcalendar/interaction": "^6.1.17",
"@fullcalendar/scrollgrid": "^6.1.17",
"@fullcalendar/timegrid": "^6.1.17",
"@google-cloud/speech": "^7.1.0",
"@ionic/angular": "^8.5.6",
"buffer": "^6.0.3",
"capacitor-native-settings": "^7.0.1",
"clovelced-plugin-audiomanagement": "^1.0.2",
"http-proxy-middleware": "^3.0.5",
"ionic8-calendar": "^1.1.0",
"ionicons": "^7.2.0",
"jwt-decode": "^4.0.0",
"rxjs": "~7.8.2",
"swiper": "^11.2.6",
"tslib": "^2.8.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^19.2.10",
"@angular-eslint/builder": "^19.3.0",
"@angular-eslint/eslint-plugin": "^19.3.0",
"@angular-eslint/eslint-plugin-template": "^19.3.0",
"@angular-eslint/schematics": "^19.3.0",
"@angular-eslint/template-parser": "^19.3.0",
"@angular/cli": "^19.2.10",
"@angular/compiler-cli": "^19.2.9",
"@angular/language-service": "^19.2.9",
"@capacitor/cli": "7.2.0",
"@ionic/angular-toolkit": "^12.2.0",
"@types/jasmine": "~5.1.7",
"@typescript-eslint/eslint-plugin": "^8.31.1",
"@typescript-eslint/parser": "^8.31.1",
"eslint": "^9.26.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsdoc": "^50.6.11",
"eslint-plugin-prefer-arrow": "1.2.3",
"jasmine-core": "~5.7.1",
"jasmine-spec-reporter": "~7.0.0",
"karma": "~6.4.4",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.1",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0",
"typescript": "~5.8.3"
"

Capacitor doctor

Capacitor Doctor

Latest Dependencies:

@capacitor/cli: 7.2.0
@capacitor/core: 7.2.0
@capacitor/android: 7.2.0
@capacitor/ios: 7.2.0

Installed Dependencies:

@capacitor/cli: 7.2.0
@capacitor/android: 7.2.0
@capacitor/ios: 7.2.0
@capacitor/core: 7.2.0

[success] Android looking great! 👌
[error] Xcode is not installed

Before submitting

  • I have read and followed the bug report guidelines.
  • I have attached links to possibly related issues and discussions.
  • I understand that incomplete issues (e.g. without reproduction) are closed.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions