UNPKG

@mhpdev/react-native-speech

Version:

A high-performance React Native library for text-to-speech on iOS and Android

182 lines (180 loc) 6.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _NativeSpeech = _interopRequireDefault(require("./NativeSpeech.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } class Speech { /** * Gets a list of all available voices on the device * @param language - Optional language code to filter voices (e.g., 'en', 'fr', 'en-US', 'fr-FR'). * If not provided, returns all available voices. * @returns Promise<VoiceProps[]> Array of voice properties matching the language filter * @example * // Get all available voices * const allVoices = await Speech.getAvailableVoices(); * // Get only English voices * const englishVoices = await Speech.getAvailableVoices('en-US'); * // or * const englishVoices = await Speech.getAvailableVoices('en'); */ static getAvailableVoices(language) { return _NativeSpeech.default.getAvailableVoices(language ?? ''); } /** * Sets the global options for all subsequent speak() calls * @param options - Voice configuration options * @example * Speech.initialize({ * pitch: 1.2, * rate: 0.8, * volume: 1.0, * language: 'en-US' * }); */ static initialize(options) { _NativeSpeech.default.initialize(options); } /** * Resets all speech options to their default values * @example * Speech.reset(); */ static reset() { _NativeSpeech.default.reset(); } /** * Immediately stops any ongoing or in queue speech synthesis * @returns Promise<void> Resolves when speech is stopped * @example * await Speech.stop(); */ static stop() { return _NativeSpeech.default.stop(); } /** * Pauses the current speech at the next word boundary * @note on Android, API 26+ required due to missing onRangeStart support * @returns Promise<boolean> Resolves to true if speech was paused, false if nothing to pause * @example * const isPaused = await Speech.pause(); * console.log(isPaused ? 'Speech paused' : 'Nothing to pause'); */ static pause() { return _NativeSpeech.default.pause(); } /** * Resumes previously paused speech * @note on Android, API 26+ required due to missing onRangeStart support * @returns Promise<boolean> Resolves to true if speech was resumed, false if nothing to resume * @example * const isResumed = await Speech.resume(); * console.log(isResumed ? 'Speech resumed' : 'Nothing to resume'); */ static resume() { return _NativeSpeech.default.resume(); } /** * Checks if speech is currently being synthesized * @returns Promise<boolean> Resolves to true if speaking or paused, false otherwise * @example * const speaking = await Speech.isSpeaking(); * console.log(speaking ? 'Speaking' : 'Not speaking'); */ static isSpeaking() { return _NativeSpeech.default.isSpeaking(); } /** * Speaks text using current global options * @param text - The text to synthesize * @returns Promise<void> Resolves when speech completes * @throws If text is null or undefined * @example * await Speech.speak('Hello, world!'); */ static speak(text) { return _NativeSpeech.default.speak(text); } /** * Speaks text with custom options for this utterance only. Uses global options for any settings not provided. * @param text - The text to synthesize * @param options - Voice options overriding global settings * @returns Promise<void> Resolves when speech completes * @throws If text is null or undefined * @example * await Speech.speakWithOptions('Hello!', { * pitch: 1.5, * rate: 0.8, * language: 'en-US' * }); */ static speakWithOptions(text, options) { return _NativeSpeech.default.speakWithOptions(text, options); } /** * Called when an error occurs during speech synthesis * @example * // Add listener * const subscription = Speech.onError(({id}) => console.log('Speech error', id)); * // Later, cleanup when no longer needed * subscription.remove(); */ static onError = _NativeSpeech.default.onError; /** * Called when speech synthesis begins * @example * // Add listener * const subscription = Speech.onStart(({id}) => console.log('Started speaking', id)); * // Later, cleanup when no longer needed * subscription.remove(); */ static onStart = _NativeSpeech.default.onStart; /** * Called when speech synthesis completes successfully * @example * const subscription = Speech.onFinish(({id}) => console.log('Finished speaking', id)); * // Cleanup * subscription.remove(); */ static onFinish = _NativeSpeech.default.onFinish; /** * Called when speech is paused * @note on Android, API 26+ required due to missing onRangeStart support * @example * const subscription = Speech.onPause(({id}) => console.log('Speech paused', id)); * // Cleanup * subscription.remove(); */ static onPause = _NativeSpeech.default.onPause; /** * Called when speech is resumed * @note on Android, API 26+ required due to missing onRangeStart support * @example * const subscription = Speech.onResume(({id}) => console.log('Speech resumed', id)); * // Cleanup * subscription.remove(); */ static onResume = _NativeSpeech.default.onResume; /** * Called when speech is stopped * @example * const subscription = Speech.onStopped(({id}) => console.log('Speech stopped', id)); * // Cleanup * subscription.remove(); */ static onStopped = _NativeSpeech.default.onStopped; /** * Called during speech with progress information * @note on Android, API 26+ required due to missing onRangeStart support * @example * const subscription = Speech.onProgress(progress => { * console.log(`Speaking progress`, progress); * }); * // Cleanup when component unmounts or listener is no longer needed * subscription.remove(); */ static onProgress = _NativeSpeech.default.onProgress; } exports.default = Speech; //# sourceMappingURL=Speech.js.map