Get Started
API Reference


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

Platform Compatibility

Android DeviceAndroid EmulatoriOS DeviceiOS SimulatorWeb


→ expo install expo-speech

If you're installing this in a bare React Native app, you should also follow these additional installation instructions.

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

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

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

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

import * as Speech from 'expo-speech';

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

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

  • text (string) -- The text to be spoken. Cannot be longer than Speech.maxSpeechInputLength.
  • options (object) --
    A map of options:
    • voice (string) -- Voice identifier
    • language (string) -- The code of a language that should be used to read the text, check out IETF BCP 47 to see valid codes.
    • pitch (number) -- Pitch of the voice to speak text. 1.0 is the normal pitch.
    • rate (number) -- Rate of the voice to speak text. 1.0 is the normal rate.
    • onStart (function) -- A callback that is invoked when speaking starts.
    • onDone (function) -- A callback that is invoked when speaking finishes.
    • onStopped (function) -- A callback that is invoked when speaking is stopped by calling Speech.stop().
    • onError (function) -- (Android only). A callback that is invoked when an error occurred while speaking.

Interrupts current speech and deletes all in queue.

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

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

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

Returns a Promise that resolves to a boolean, true if speaking, false if not.

Returns list of all available voices.

List of Voice objects.
qualityenum Speech.VoiceQuality

  • VoiceQuality.Default
  • VoiceQuality.Enhanced

An error occurred when length of text parameter provided to Speech.speak() exceeds its limit. To see the limit, use Speech.maxSpeechInputLength.