Capacitor plugin for synthesizing speech from text.

Usage no npm install needed!

<script type="module">
  import capacitorCommunityTextToSpeech from 'https://cdn.skypack.dev/@capacitor-community/text-to-speech';


Text to Speech


Capacitor community plugin for synthesizing speech from text.


Maintainer GitHub Social
Robin Genz robingenz @robin_genz


npm install @capacitor-community/text-to-speech
npx cap sync


According to the Android documentation, apps targeting Android 11 should declare TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE in the queries elements of their manifest:

    <action android:name="android.intent.action.TTS_SERVICE" />

Here you can find an example commit.


No configuration required for this plugin.


A working example can be found here: robingenz/capacitor-plugin-demo


import { TextToSpeech } from '@capacitor-community/text-to-speech';

const speak = async () => {
  await TextToSpeech.speak({
    text: 'This is a sample text.',
    lang: 'en_US',
    rate: 1.0,
    pitch: 1.0,
    volume: 1.0,
    category: 'ambient',

const stop = async () => {
  await TextToSpeech.stop();

const getSupportedLanguages = async () => {
  const languages = await TextToSpeech.getSupportedLanguages();

const getSupportedVoices = async () => {
  const voices = await TextToSpeech.getSupportedVoices();

const isLanguageSupported = async (lang: string) => {
  const isSupported = await TextToSpeech.isLanguageSupported({ lang });



speak(options: TTSOptions) => Promise<void>

Starts the TTS engine and plays the desired text.

Param Type
options TTSOptions


stop() => Promise<void>

Stops the TTS engine.


getSupportedLanguages() => Promise<{ languages: string[]; }>

Returns a list of supported BCP 47 language tags.

Returns: Promise<{ languages: string[]; }>


getSupportedVoices() => Promise<{ voices: SpeechSynthesisVoice[]; }>

Returns a list of supported voices.

Returns: Promise<{ voices: SpeechSynthesisVoice[]; }>


isLanguageSupported(options: { lang: string; }) => Promise<{ supported: boolean; }>

Checks if a specific BCP 47 language tag is supported.

Param Type
options { lang: string; }

Returns: Promise<{ supported: boolean; }>


openInstall() => Promise<void>

Verifies proper installation and availability of resource files on the system.

Only available for Android.



Prop Type Description
text string The text that will be synthesised when the utterance is spoken.
lang string The language of the utterance. Possible languages can be queried using getSupportedLanguages. Default: en-US.
rate number The speed at which the utterance will be spoken at. Default: 1.0.
pitch number The pitch at which the utterance will be spoken at. Default: 1.0.
volume number The volume that the utterance will be spoken at. Default: 1.0.
voice number The index of the selected voice that will be used to speak the utterance. Possible voices can be queried using getSupportedVoices. Only available for Web.
category string Select the iOS Audio session category. Possible values: ambient and playback. Use playback to play audio even when the app is in the background. Only available for iOS. Default: ambient.


The SpeechSynthesisVoice interface represents a voice that the system supports.

Prop Type Description
default boolean Specifies whether the voice is the default voice for the current app (true) or not (false).
lang string BCP 47 language tag indicating the language of the voice. Example: en-US.
localService boolean Specifies whether the voice is supplied by a local (true) or remote (false) speech synthesizer service.
name string Human-readable name that represents the voice. Example: Microsoft Zira Desktop - English (United States).
voiceURI string Type of URI and location of the speech synthesis service for this voice. Example: urn:moz-tts:sapi:Microsoft Zira Desktop - English (United States)?en-US.