Skip to content

Repository files navigation

React Native Android Text To Speech

A react native android wrapper for Text To speech

Purpose

Currently , React Native doesn't have inbuilt support for TextToSpeech library for Android.

But with help of exposing module in react-native , this wrapper will solve the problem for TTS.

Setup

  • Install Module
npm install --save react-native-android-speech
  • android/settings.gradle
...
include ':react-native-android-speech'
project(':react-native-android-speech').projectDir =newFile(settingsDir, '../node_modules/react-native-android-speech')
  • android/app/build.gradle
dependencies {
...
compile project(':react-native-android-speech')
}
  • for React Native Version >= 0.29, register module (in android/app/src/main/java/com/[app name]/MainApplication.java)
...
importcom.mihir.react.tts.*; // Import packagepublicclassMainApplicationextendsApplicationimplementsReactApplication {
...
@OverrideprotectedList<ReactPackage> getPackages() {
returnArrays.<ReactPackage>asList(
...,
newRCTTextToSpeechModule()
);
}
}
  • for React Native Version < 0.29, register module (in android/app/src/main/java/com/[app name]/MainActivity.java)
...
importcom.mihir.react.tts.*; // Import packagepublicclassMainActivityextendsActivityimplementsDefaultHardwareBackBtnHandler {
...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = newReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(newMainReactPackage())
.addPackage(newRCTTextToSpeechModule()) // Add any extra modules here
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(mReactInstanceManager, "YourProject", null);
setContentView(mReactRootView);
}
}

Usage

Currently there following functionality available. All below functions return Promise , with proper error codes.

  • getLocales
  • checkLanguageAvailability(language)
  • downloadTTSVoice()
  • speak(args)
  • isSpeaking
  • shutDown
  • stop

Importing module

vartts=require('react-native-android-speech')

getLocales()

Returns all available langauges from TTS make sure that exists in device also.

Example

tts.getLocales().then(locales=>{console.log(locales)});

checkLanguageAvailability(language)

returns whether a language is available on the device TTS engine

Example

tts.checkLanguageAvailability('ko').then(result=>{console.log('TTS voice availability for Korean is '+result);});

downloadTTSVoice()

opens the TTS download page on the device

Example

tts.checkLanguageAvailability('ko').then(result=>{if(!result){downloadTTSVoice();}});

speak()

Example

tts.speak({text:'Please provide some text to speak.',// Mandatorypitch:1.5,// Optional Parameter to set the pitch of Speech,forceStop : false,// Optional Parameter if true , it will stop TTS if it is already in processlanguage : 'en',// Optional Paramenter Default is en you can provide any supported lang by TTScountry : 'US'// Optional Paramenter Default is null, it provoques that system selects its default}).then(isSpeaking=>{//Success Callbackconsole.log(isSpeaking);}).catch(error=>{//Errror Callbackconsole.log(error)});

isSpeaking()

This method will help to figure out whether TTS engine is currently speaking or not.

Example

tts.isSpeaking().then(isSpeaking=>{//Callbackconsole.log(isSpeaking);}).catch(error=>{//if it fails console.log(error)});

Stop()

Stop currently processing speech. Return True/False

Example

tts.shutDown().then(isStopped=>{console.log(isStopped);}).catch(error=>{console.log(error);});

shutDown()

Shutdown TTS Engine

Example

tts.shutDown().then(shutDown=>{//Callback console.log(shutDown);}).catch(error=>{console.log(error)});

Changes

PR's are welcome

Todo

  • providing UternceId and callback
  • Differnt Voices
  • Custome Engines
  • Support Speech To Text

LICENSE

MIT

About

This simple React Native module for Android Text To Speech functionality.

Resources

Stars

48 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages