Skip to content

mhpdev-com/react-native-speech

React Native Full Responsive Banner

A high-performance text-to-speech library built for bare React Native and Expo, compatible with Android and iOS. It enables seamless speech management and provides events for detailed synthesis management.


Only New Architecture: This library is currently compatible with the new architecture. If you're using React Native 0.76 or higher, it is already enabled. However, if your React Native version is between 0.68 and 0.75, you need to enable it first. Click here if you need help enabling the new architecture

Preview

Android iOS
android-preview.mp4
Android Preview
ios-preview.mp4
iOS Preview

Features

  • 🚀  High-performance library built with Turbo Modules for Android and iOS

  • 🎛️  Provides essential methods for full control over synthesis

  • 🪄  Support for the pause and resume methods—including the onPause and onResume events—on Android as well. Unlike iOS, which natively provides these features, this library implements its own handling on Android (API 26+ required)

  • 📡  Offers useful events for more precise control over synthesis

  • 💅  Includes a customizable HighlightedText component to display the currently spoken text

  • ✅  Fully type-safe and written in TypeScript

Installation

Bare React Native

Install the package using either npm or Yarn:

npm install @mhpdev/react-native-speech

Or with Yarn:

yarn add @mhpdev/react-native-speech

Expo

For Expo projects, follow these steps:

  1. Install the package:

    npx expo install @mhpdev/react-native-speech
  2. Since it is not supported on Expo Go, run:

    npx expo prebuild

Usage

To learn how to use the library, check out the usage section.

Quick Start

import React from 'react';
import Speech from '@mhpdev/react-native-speech';
import {SafeAreaView, StyleSheet, Text, TouchableOpacity} from 'react-native';

const App: React.FC = () => {
  const onSpeakPress = () => {
    Speech.speak('Hello World!');
  };

  return (
    <SafeAreaView style={styles.container}>
      <TouchableOpacity style={styles.button} onPress={onSpeakPress}>
        <Text style={styles.buttonText}>Speak</Text>
      </TouchableOpacity>
    </SafeAreaView>
  );
};

export default App;

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
  button: {
    padding: 12.5,
    borderRadius: 5,
    backgroundColor: 'skyblue',
  },
  buttonText: {
    fontSize: 22,
    fontWeight: '600',
  },
});

To become more familiar with the usage of the library, check out the example project.

Testing

To mock the package's methods and components using the default mock configuration provided, follow these steps:

  • Create a file named @mhpdev/react-native-speech.ts inside your __mocks__ directory.

  • Copy the following code into that file:

    module.exports = require('@mhpdev/react-native-speech/jest');

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

About

A high-performance React Native library for text-to-speech on iOS and Android.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published