/text-to-speech

⚡️ Capacitor plugin for synthesizing speech from text.

Primary LanguageJavaMIT LicenseMIT


Text to Speech

@capacitor-community/text-to-speech

Capacitor community plugin for synthesizing speech from text.


Maintainers

Maintainer GitHub Social
Robin Genz robingenz @robin_genz

Installation

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

Android

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

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

Here you can find an example commit.

Configuration

No configuration required for this plugin.

Demo

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

Usage

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 });
};

API

speak(...)

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

Starts the TTS engine and plays the desired text.

Param Type
options TTSOptions

stop()

stop() => Promise<void>

Stops the TTS engine.


getSupportedLanguages()

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

Returns a list of supported BCP 47 language tags.

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


getSupportedVoices()

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

Returns a list of supported voices.

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


isLanguageSupported(...)

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()

openInstall() => Promise<void>

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

Only available for Android.


Interfaces

TTSOptions

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.

SpeechSynthesisVoice

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.

Changelog

See CHANGELOG.md.

License

See LICENSE.