| // Copyright 2014 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| /** |
| * @fileoverview Defines a Tts interface. |
| * All TTS engines in ChromeVox conform to the this interface. |
| */ |
| import {TestImportManager} from '/common/testing/test_import_manager.js'; |
| |
| import {QueueMode, TtsSpeechProperties} from '../common/tts_types.js'; |
| |
| /** |
| * An interface for clients who want to get notified when an utterance |
| * starts or ends from any source. |
| */ |
| export abstract class TtsCapturingEventListener { |
| /** Called when any utterance starts. */ |
| abstract onTtsStart(): void; |
| |
| /** Called when any utterance ends. */ |
| abstract onTtsEnd(): void; |
| |
| /** Called when any utterance gets interrupted. */ |
| abstract onTtsInterrupted(): void; |
| } |
| |
| /** @interface */ |
| export abstract class TtsInterface { |
| /** |
| * Speaks the given string using the specified queueMode and properties. |
| * @param textString The string of text to be spoken. |
| * @param queueMode The queue mode to use for speaking. |
| * @param properties Speech properties to use for this |
| * utterance. |
| * @return A tts object useful for chaining speak calls. |
| */ |
| abstract speak( |
| textString: string, queueMode: QueueMode, |
| properties?: TtsSpeechProperties): TtsInterface; |
| |
| /** @return True if the TTS is speaking. */ |
| abstract isSpeaking(): boolean; |
| |
| /** Stops speech. */ |
| abstract stop(): void; |
| |
| /** Adds a listener to get called whenever any utterance starts or ends. */ |
| abstract addCapturingEventListener(listener: TtsCapturingEventListener): void; |
| |
| /** Removes a listener to get called whenever any utterance starts or ends. */ |
| abstract removeCapturingEventListener(listener: TtsCapturingEventListener): |
| void; |
| |
| /** |
| * Increases a TTS speech property. |
| * @param propertyName The name of the property to change. |
| * @param increase If true, increases the property value by one |
| * step size, otherwise decreases. |
| */ |
| abstract increaseOrDecreaseProperty(propertyName: string, increase: boolean): |
| void; |
| |
| /** |
| * Sets the property to a particular value. Callers should prefer this |
| * to setting the underlying settings pref directly. |
| * @param propertyName The name of the property to change. |
| * @param value The value to change it to. |
| */ |
| abstract setProperty(propertyName: string, value: number): void; |
| |
| /** |
| * Converts an engine property value to a percentage from 0.00 to 1.00. |
| * @param property The property to convert. |
| * @return The percentage of the property. |
| */ |
| abstract propertyToPercentage(property: string): number|null; |
| |
| /** |
| * Returns the default properties of the first tts that has default |
| * properties. |
| * @param property Name of property. |
| * @return The default value. |
| */ |
| abstract getDefaultProperty(property: string): number|null; |
| |
| /** |
| * Toggles on or off speech. |
| * @return Whether speech is now on or off. |
| */ |
| abstract toggleSpeechOnOrOff(): boolean; |
| } |
| |
| TestImportManager.exportForTesting(TtsInterface); |