This is react-native-nitro-speech package (npm). The old name @gmessier/nitro-speech will be deprecated soon (npm). If you are using the old name, please switch to the new one.
The API is identical β no migration needed.
- β‘ Built with Nitro Modules for low-overhead native binding
- π Supports 60+ languages
- π The only library implementing new
SpeechAnalyzerwithSpeechTranscriberorDictationTranscriberAPI for iOS 26+ (with fallback to legacySFSpeechRecognitionfor older versions) - π§΅ Full support of
react-native-worklets- each method is accessible from any runtime - β±οΈ Timer for silence
- Configurable and mutable
autoFinishRecognitionMsvalue (default: 8 sec) - Callback
onAutoFinishProgressfires periodically with an interval - Configurable and mutable interval
autoFinishProgressIntervalMsvalue (default: 1 sec) - Method
resetAutoFinishTimeresets the timer to the threshold - Method
addAutoFinishTimeadds time once without changing threshold - Configurable volume-based sensitivity
resetAutoFinishVoiceSensitivity
- Configurable and mutable
- π€ Rich user voice input management
- Hook
useVoiceInputVolumeand methodgetVoiceInputVolumefor displaying volume in dB or making UI animations with smoothedVolume - Callback
onVolumeChangefor advanced use cases
- Hook
- π§© Session Lifecycle methods:
prewarmandupdateConfig - π Configurable Haptic Feedback on start and finish
- ποΈ Speech-quality features: see full list here
- π Embedded Permission handling
- Callback
onPermissionDeniedand methodgetPermissions - Option
requestPermissionforprewarmmethod
- Callback
- π¦ Everything else that could be found in Expo or other libraries
- Installation
- Permissions
- Features
- Requirements
- Compatibility
- Contributions and feedback
- Troubleshooting
- Usage:
npm install react-native-nitro-speech react-native-nitro-modules
# or
yarn add react-native-nitro-speech react-native-nitro-modules
# or
bun add react-native-nitro-speech react-native-nitro-modulesThis library works with Expo. You need to run prebuild to generate native code:
npx expo prebuildNote: Make sure New Arch is enabled in your Expo configuration before running prebuild.
cd ios && pod installNo additional setup required.
More about permissions here
No actions required.
The library declares the required permission in its AndroidManifest.xml (merged automatically):
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.VIBRATE" />Add the following keys to your app's Info.plist:
<key>NSMicrophoneUsageDescription</key>
<string>This app needs microphone access for speech recognition</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>This app needs speech recognition to convert speech to text</string>Both permissions are required for speech recognition to work on iOS.
| Feature | Documentation page | iOS | Android |
|---|---|---|---|
| Real-time transcription | Link π | β | β |
| Full worklets support | Link π | β | β |
| New advanced iOS models | Link π | β | β |
| Locale support | Link π | β | β |
| Auto-finish on silence | Link π | β | β |
| Auto-finish progress | Link π | β | β |
| Auto-finish progress interval | Link π | β | β |
| Add Auto-finish Time | Link π | β | β |
| Reset Auto-finish Time | Link π | β | β |
| Reset Auto-finish Sensitivity | Link π | β | β |
| Voice input volume | Link π | β | β |
| Prewarm | Link π | β | β |
| Update config | Link π | β | β |
| Active state | Link π | β | β |
| Haptic feedback | Link π | β | β |
| Permission handling | Link π | β | β |
| Background handling | Link π | β | β |
| Repeating word filter | Link π | β | β |
| Offensive word masking | Link π | iOS 26+ | β |
| Contextual strings | Link π | β | β |
| Language model selection | Link π | Auto | β |
| Batch handling | Link π | Auto | β |
| Formatting quality | Link π | Auto | β |
| Transcription preset | Link π | β | Auto |
| Automatic punctuation | Link π | β | Auto |
| Atypical speech hint | Link π | β | Auto |
| getSupportedLocalesIOS | Link π | β | X |
- React Native >= 0.76
- New Arch Only
- react-native-nitro-modules
react-native-nitro-modules published a version 0.35.0 that is incompatible with older versions.
If your project can't migrate to the latest version of react-native-nitro-modules, you can use the older versions of @gmessier/nitro-speech
| nitro-speech | react-native-nitro-modules |
|---|---|
@gmessier/nitro-speech < 0.3.* |
react-native-nitro-modules < 0.35.0 |
@gmessier/nitro-speech >= 0.3.* |
react-native-nitro-modules >= 0.35.0 |
react-native-nitro-speech * |
react-native-nitro-modules >= 0.35.0 |
If you hit an issue or want to request a feature, please open a GitHub issue or reach out to me on Discord / Twitter (X) β response is guaranteed.
- GitHub Issues
- Twitter (X)
- Discord:
@gmessier
If you're having issues with Android Gradle sync, try running the prebuild for the library that causes the issue:
e.g. failed in react-native-nitro-modules:
cd android && ./gradlew :react-native-nitro-modules:preBuilde.g. failed in react-native-worklets:
cd android && ./gradlew :react-native-worklets:preBuildMIT