This is documentation for the next SDK version. For up-to-date documentation, see the latest version (SDK 52).

Expo Speech iconExpo Speech

GitHub

npm

A library that provides access to text-to-speech functionality.

Android
iOS
Web

expo-speech provides an API that allows you to utilize Text-to-speech functionality in your app.

Installation

Terminal
npx expo install expo-speech

If you are installing this in an existing React Native app, start by installing expo in your project. Then, follow the additional instructions as mentioned by the library's README under "Installation in bare React Native projects" section.

Usage

Speech
import { View, StyleSheet, Button } from 'react-native';
import * as Speech from 'expo-speech';

export default function App() {
  const speak = () => {
    const thingToSay = '1';
    Speech.speak(thingToSay);
  };

  return (
    <View style={styles.container}>
      <Button title="Press to hear some words" onPress={speak} />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    backgroundColor: '#ecf0f1',
    padding: 8,
  },
});

API

import * as Speech from 'expo-speech';

Constants

Android
iOS
Web

Speech.maxSpeechInputLength

Type: number


Maximum possible text length acceptable by Speech.speak() method. It is platform-dependent. On iOS, this returns Number.MAX_VALUE.

Methods

Android
iOS
Web

Speech.getAvailableVoicesAsync()

Returns list of all available voices.

Returns:

Promise<Voice[]>

List of Voice objects.

Android
iOS
Web

Speech.isSpeakingAsync()

Determine whether the Text-to-speech utility is currently speaking. Will return true if speaker is paused.

Returns:

Promise<boolean>

Returns a Promise that fulfils with a boolean, true if speaking, false if not.

Android
iOS
Web

Speech.pause()

Pauses current speech. This method is not available on Android.

Returns:

Promise<void>

Android
iOS
Web

Speech.resume()

Resumes speaking previously paused speech or does nothing if there's none. This method is not available on Android.

Returns:

Promise<void>

Android
iOS
Web

Speech.speak(text, options)

ParameterTypeDescription
textstring

The text to be spoken. Cannot be longer than Speech.maxSpeechInputLength.

options
(optional)
SpeechOptions

A SpeechOptions object.

Default:{}

Speak out loud the text given options. Calling this when another text is being spoken adds an utterance to queue.

Returns:

void

Android
iOS
Web

Speech.stop()

Interrupts current speech and deletes all in queue.

Returns:

Promise<void>

Types

Android
iOS
Web

SpeechOptions

NameTypeDescription
_voiceIndex
(optional)
number-
language
(optional)
string

The code of a language that should be used to read the text, refer to IETF BCP 47 to see valid codes.

onBoundary
(optional)
NativeBoundaryEventCallback | SpeechEventCallback | null

A callback that is invoked when the spoken utterance reaches a word.

onDone
(optional)
() => void | SpeechEventCallback

A callback that is invoked when speaking finishes.

onError
(optional)
(error: Error) => void | SpeechEventCallback
Only for:
Android
iOS

A callback that is invoked when an error occurred while speaking.

onMark
(optional)
SpeechEventCallback | null-
onPause
(optional)
SpeechEventCallback | null-
onResume
(optional)
SpeechEventCallback | null-
onStart
(optional)
() => void | SpeechEventCallback

A callback that is invoked when speaking starts.

onStopped
(optional)
() => void | SpeechEventCallback

A callback that is invoked when speaking is stopped by calling Speech.stop().

pitch
(optional)
number

Pitch of the voice to speak text. 1.0 is the normal pitch.

rate
(optional)
number

Rate of the voice to speak text. 1.0 is the normal rate.

voice
(optional)
string

Voice identifier.

volume
(optional)
number
Only for:
Web

Volume of the voice to speak text. A number between 0.0 (muted) and 1.0 (max volume)

Default:1.0
Android
iOS
Web

Voice

Object describing the available voices on the device.

NameTypeDescription
identifierstring

Voice unique identifier.

languagestring

Voice language.

namestring

Voice name.

qualityVoiceQuality

Voice quality.

Android
iOS
Web

WebVoice

Type: Voice extended by:


NameTypeDescription
isDefaultboolean-
localServiceboolean-
namestring-
voiceURIstring-

Enums

Android
iOS
Web

VoiceQuality

Enum representing the voice quality.

VoiceQuality Values

Default

VoiceQuality.Default = "Default"

Enhanced

VoiceQuality.Enhanced = "Enhanced"