← all repositories
jamsch/expo-speech-recognition

Wrapping native speech APIs so Expo devs don't have to

It saves Expo developers from juggling three separate native speech APIs by exposing a single interface across iOS, Android, and web.

654 stars TypeScript Image · Video · Audio
expo-speech-recognition
Not currently ranked — collecting fresh signals.
star history

What it does This Expo module wraps the native speech recognizers on iOS, Android, and web into one TypeScript interface. You get event hooks, permission helpers, and options like continuous listening, on-device recognition, and audio file transcription without touching SFSpeechRecognizer or SpeechRecognizer directly. It is essentially well-crafted glue code that absorbs the platform differences so your React Native app doesn’t have to.

The interesting bit Rather than forcing a lowest-common-denominator feature set, it exposes platform-specific levers—like Android intent options, iOS audio session categories, and web SpeechRecognition polyfills—while still providing a unified event model. That means you can tune behavior per platform without abandoning the shared API.

Key highlights

  • Unifies iOS SFSpeechRecognizer, Android SpeechRecognizer, and the Web Speech API under one module
  • Supports real-time transcription, audio file transcription, and volume metering
  • Can persist raw audio recordings on Android 13+ and iOS
  • Polyfills the Web SpeechRecognition API for browser environments
  • Includes an Expo config plugin to handle microphone and speech recognition permissions

Caveats

  • Requires a custom development build; it will not run in Expo Go because it relies on native code
  • Several features are fragmented by OS version: Android 12 and below lack continuous recognition and punctuation support, while iOS 17 and 18+ handle session timeouts differently
  • On-device recognition and audio recording are only available when the underlying platform supports them

Verdict Worth a look if you’re building a cross-platform Expo app that needs voice input and you want to avoid maintaining three separate speech integrations. Skip it if you’re already locked into a single-platform native stack or only need basic web speech recognition.

Frequently asked

What is jamsch/expo-speech-recognition?
It saves Expo developers from juggling three separate native speech APIs by exposing a single interface across iOS, Android, and web.
Is expo-speech-recognition open source?
Yes — jamsch/expo-speech-recognition is open source, released under the MIT license.
What language is expo-speech-recognition written in?
jamsch/expo-speech-recognition is primarily written in TypeScript.
How popular is expo-speech-recognition?
jamsch/expo-speech-recognition has 654 stars on GitHub.
Where can I find expo-speech-recognition?
jamsch/expo-speech-recognition is on GitHub at https://github.com/jamsch/expo-speech-recognition.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.