| // Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| // |
| // API docs from [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web). |
| // Attributions and copyright licensing by Mozilla Contributors is licensed |
| // under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/. |
| |
| // Generated from Web IDL definitions. |
| |
| // ignore_for_file: unintended_html_in_doc_comment |
| |
| @JS() |
| library; |
| |
| import 'dart:js_interop'; |
| |
| import 'dom.dart'; |
| import 'html.dart'; |
| import 'mediacapture_streams.dart'; |
| |
| typedef SpeechRecognitionErrorCode = String; |
| typedef SpeechSynthesisErrorCode = String; |
| |
| /// The **`SpeechRecognition`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// is the controller interface for the recognition service; this also handles |
| /// the [SpeechRecognitionEvent] sent from the recognition service. |
| /// |
| /// > [!NOTE] |
| /// > On some browsers, like Chrome, using Speech Recognition on a web page |
| /// > involves a server-based recognition engine. Your audio is sent to a web |
| /// > service for recognition processing, so it won't work offline. |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition). |
| extension type SpeechRecognition._(JSObject _) |
| implements EventTarget, JSObject { |
| external factory SpeechRecognition(); |
| |
| /// The **`start()`** method of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// starts the speech |
| /// recognition service listening to incoming audio with intent to recognize |
| /// grammars |
| /// associated with the current [SpeechRecognition]. |
| external void start([MediaStreamTrack audioTrack]); |
| |
| /// The **`stop()`** method of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// stops the speech |
| /// recognition service from listening to incoming audio, and attempts to |
| /// return a |
| /// [SpeechRecognitionResult] using the audio captured so far. |
| external void stop(); |
| |
| /// The **`abort()`** method of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// stops the speech |
| /// recognition service from listening to incoming audio, and doesn't attempt |
| /// to return a |
| /// [SpeechRecognitionResult]. |
| external void abort(); |
| |
| /// The **`lang`** property of the [SpeechRecognition] |
| /// interface returns and sets the language of the current |
| /// `SpeechRecognition`. |
| /// If not specified, this defaults to the HTML |
| /// [`lang`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang) |
| /// attribute |
| /// value, or the user agent's language setting if that isn't set either. |
| external String get lang; |
| external set lang(String value); |
| |
| /// The **`continuous`** property of the |
| /// [SpeechRecognition] interface controls whether continuous results are |
| /// returned for each recognition, or only a single result. |
| /// |
| /// It defaults to single results (`false`.) |
| external bool get continuous; |
| external set continuous(bool value); |
| |
| /// The **`interimResults`** property of the |
| /// [SpeechRecognition] interface controls whether interim results should be |
| /// returned (`true`) or not (`false`). Interim results are results |
| /// that are not yet final (e.g. the [SpeechRecognitionResult.isFinal] |
| /// property |
| /// is `false`). |
| /// |
| /// The default value for **`interimResults`** is `false`. |
| external bool get interimResults; |
| external set interimResults(bool value); |
| |
| /// The **`maxAlternatives`** property of the |
| /// [SpeechRecognition] interface sets the maximum number of |
| /// [SpeechRecognitionAlternative]s provided per |
| /// [SpeechRecognitionResult]. |
| /// |
| /// The default value is 1. |
| external int get maxAlternatives; |
| external set maxAlternatives(int value); |
| external EventHandler get onaudiostart; |
| external set onaudiostart(EventHandler value); |
| external EventHandler get onsoundstart; |
| external set onsoundstart(EventHandler value); |
| external EventHandler get onspeechstart; |
| external set onspeechstart(EventHandler value); |
| external EventHandler get onspeechend; |
| external set onspeechend(EventHandler value); |
| external EventHandler get onsoundend; |
| external set onsoundend(EventHandler value); |
| external EventHandler get onaudioend; |
| external set onaudioend(EventHandler value); |
| external EventHandler get onresult; |
| external set onresult(EventHandler value); |
| external EventHandler get onnomatch; |
| external set onnomatch(EventHandler value); |
| external EventHandler get onerror; |
| external set onerror(EventHandler value); |
| external EventHandler get onstart; |
| external set onstart(EventHandler value); |
| external EventHandler get onend; |
| external set onend(EventHandler value); |
| } |
| |
| /// The **`SpeechRecognitionErrorEvent`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// represents error messages from the recognition service. |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionErrorEvent). |
| extension type SpeechRecognitionErrorEvent._(JSObject _) |
| implements Event, JSObject { |
| /// The **`error`** read-only property of the |
| /// [SpeechRecognitionErrorEvent] interface returns the type of error raised. |
| external SpeechRecognitionErrorCode get error; |
| |
| /// The **`message`** read-only property of the |
| /// [SpeechRecognitionErrorEvent] interface returns a message describing the |
| /// error in more detail. |
| external String get message; |
| } |
| |
| /// The **`SpeechRecognitionAlternative`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// represents a single word that has been recognized by the speech recognition |
| /// service. |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionAlternative). |
| extension type SpeechRecognitionAlternative._(JSObject _) implements JSObject { |
| /// The **`transcript`** read-only property of the |
| /// [SpeechRecognitionResult] interface returns a string containing the |
| /// transcript of the recognized word(s). |
| /// |
| /// For continuous recognition, leading or trailing whitespace will be |
| /// included where |
| /// necessary so that concatenation of consecutive [SpeechRecognitionResult]s |
| /// produces a proper transcript of the session. |
| external String get transcript; |
| |
| /// The **`confidence`** read-only property of the |
| /// [SpeechRecognitionResult] interface returns a numeric estimate of how |
| /// confident the speech recognition system is that the recognition is |
| /// correct. |
| /// |
| /// > [!NOTE] |
| /// > Mozilla's implementation of `confidence` is still |
| /// > being worked on — at the moment, it always seems to return 1. |
| external double get confidence; |
| } |
| |
| /// The **`SpeechRecognitionResult`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// represents a single recognition match, which may contain multiple |
| /// [SpeechRecognitionAlternative] objects. |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult). |
| extension type SpeechRecognitionResult._(JSObject _) implements JSObject { |
| /// The **`item`** getter of the |
| /// [SpeechRecognitionResult] interface is a standard getter that allows |
| /// [SpeechRecognitionAlternative] objects within the result to be accessed |
| /// via |
| /// array syntax. |
| external SpeechRecognitionAlternative item(int index); |
| |
| /// The **`length`** read-only property of the |
| /// [SpeechRecognitionResult] interface returns the length of the "array" |
| /// — the number of [SpeechRecognitionAlternative] objects contained |
| /// in the result (also referred to as "n-best alternatives".) |
| /// |
| /// The number of alternatives contained in the result depends on what the |
| /// [SpeechRecognition.maxAlternatives] property was set to when the speech |
| /// recognition was first initiated. |
| external int get length; |
| |
| /// The **`isFinal`** read-only property of the |
| /// [SpeechRecognitionResult] interface is a boolean value that states |
| /// whether this result is final (`true`) or not (`false`) — if so, |
| /// then this is the final time this result will be returned; if not, then |
| /// this result is an |
| /// interim result, and may be updated later on. |
| external bool get isFinal; |
| } |
| |
| /// The **`SpeechRecognitionResultList`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// represents a list of [SpeechRecognitionResult] objects, or a single one if |
| /// results are being captured in mode. |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResultList). |
| extension type SpeechRecognitionResultList._(JSObject _) implements JSObject { |
| /// The **`item`** getter of the |
| /// [SpeechRecognitionResultList] interface is a standard getter — it allows |
| /// [SpeechRecognitionResult] objects in the list to be accessed via array |
| /// syntax. |
| external SpeechRecognitionResult item(int index); |
| |
| /// The **`length`** read-only property of the |
| /// [SpeechRecognitionResultList] interface returns the length of the |
| /// "array" — the number of [SpeechRecognitionResult] objects in the |
| /// list. |
| external int get length; |
| } |
| |
| /// The **`SpeechRecognitionEvent`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// represents the event object for the [SpeechRecognition.result_event] and |
| /// [SpeechRecognition.nomatch_event] events, and contains all the data |
| /// associated with an interim or final speech recognition result. |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionEvent). |
| extension type SpeechRecognitionEvent._(JSObject _) implements Event, JSObject { |
| /// The **`resultIndex`** read-only property of the |
| /// [SpeechRecognitionEvent] interface returns the lowest index value result |
| /// in |
| /// the [SpeechRecognitionResultList] "array" that has actually changed. |
| /// |
| /// The [SpeechRecognitionResultList] object is not an array, but it has a |
| /// getter that allows it to be accessed by array syntax. |
| external int get resultIndex; |
| |
| /// The **`results`** read-only property of the |
| /// [SpeechRecognitionEvent] interface returns a |
| /// [SpeechRecognitionResultList] object representing all the speech |
| /// recognition results for the current session. |
| /// |
| /// Specifically this object will contain all final results that have been |
| /// returned, |
| /// followed by the current best hypothesis for all interim results. When |
| /// subsequent |
| /// [SpeechRecognition.result_event] events are fired, interim results may be |
| /// overwritten by a newer |
| /// interim result or by a final result — they may even be removed, if they |
| /// are at the end |
| /// of the "results" array and the array length decreases. Final results on |
| /// the other hand |
| /// will not be overwritten or removed. |
| external SpeechRecognitionResultList get results; |
| } |
| |
| /// The **`SpeechSynthesis`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// is the controller interface for the speech service; this can be used to |
| /// retrieve information about the synthesis voices available on the device, |
| /// start and pause speech, and other commands besides. |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis). |
| extension type SpeechSynthesis._(JSObject _) implements EventTarget, JSObject { |
| /// The **`speak()`** method of the [SpeechSynthesis] |
| /// interface adds an [SpeechSynthesisUtterance] to the utterance |
| /// queue; it will be spoken when any other utterances queued before it have |
| /// been spoken. |
| external void speak(SpeechSynthesisUtterance utterance); |
| |
| /// The **`cancel()`** method of the [SpeechSynthesis] |
| /// interface removes all utterances from the utterance queue. |
| /// |
| /// If an utterance is currently being spoken, speaking will stop immediately. |
| external void cancel(); |
| |
| /// The **`pause()`** method of the [SpeechSynthesis] |
| /// interface puts the `SpeechSynthesis` object into a paused state. |
| external void pause(); |
| |
| /// The **`resume()`** method of the [SpeechSynthesis] |
| /// interface puts the `SpeechSynthesis` object into a non-paused state: |
| /// resumes it if it was already paused. |
| external void resume(); |
| |
| /// The **`getVoices()`** method of the |
| /// [SpeechSynthesis] interface returns a list of |
| /// [SpeechSynthesisVoice] objects representing all the available voices on |
| /// the |
| /// current device. |
| external JSArray<SpeechSynthesisVoice> getVoices(); |
| |
| /// The **`pending`** read-only property of the |
| /// [SpeechSynthesis] interface is a boolean value that returns |
| /// `true` if the utterance queue contains as-yet-unspoken utterances. |
| external bool get pending; |
| |
| /// The **`speaking`** read-only property of the |
| /// [SpeechSynthesis] interface is a boolean value that returns |
| /// `true` if an utterance is currently in the process of being spoken — even |
| /// if `SpeechSynthesis` is in a |
| /// [SpeechSynthesis.pause] state. |
| external bool get speaking; |
| |
| /// The **`paused`** read-only property of the |
| /// [SpeechSynthesis] interface is a boolean value that returns |
| /// `true` if the `SpeechSynthesis` object is in a paused state, or `false` if |
| /// not. |
| /// |
| /// It can be set to [SpeechSynthesis.pause] even if nothing is |
| /// currently being spoken through it. If |
| /// [SpeechSynthesisUtterance] are then added to the utterance |
| /// queue, they will not be spoken until the `SpeechSynthesis` object is |
| /// unpaused, using [SpeechSynthesis.resume]. |
| external bool get paused; |
| external EventHandler get onvoiceschanged; |
| external set onvoiceschanged(EventHandler value); |
| } |
| |
| /// The **`SpeechSynthesisUtterance`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// represents a speech request. |
| /// It contains the content the speech service should read and information about |
| /// how to read it (e.g. language, pitch and volume.) |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance). |
| extension type SpeechSynthesisUtterance._(JSObject _) |
| implements EventTarget, JSObject { |
| external factory SpeechSynthesisUtterance([String text]); |
| |
| /// The **`text`** property of the |
| /// [SpeechSynthesisUtterance] interface gets and sets the text that will be |
| /// synthesized when the utterance is spoken. |
| /// |
| /// The text may be provided as plain text, or a well-formed |
| /// [SSML](https://www.w3.org/TR/speech-synthesis/) document. |
| /// The SSML tags will be stripped away by devices that don't support SSML. |
| external String get text; |
| external set text(String value); |
| |
| /// The **`lang`** property of the [SpeechSynthesisUtterance] interface gets |
| /// and sets the language of the utterance. |
| /// |
| /// If unset, the app's (i.e. the `html` |
| /// [`lang`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang) |
| /// value) lang will be used, or the user-agent default if that is unset too. |
| external String get lang; |
| external set lang(String value); |
| |
| /// The **`voice`** property of the [SpeechSynthesisUtterance] interface gets |
| /// and sets the voice that will be used to speak the utterance. |
| /// |
| /// This should be set to one of the [SpeechSynthesisVoice] objects returned |
| /// by [SpeechSynthesis.getVoices]. |
| /// If not set by the time the utterance is spoken, the voice used will be the |
| /// most suitable default voice available for the utterance's |
| /// [SpeechSynthesisUtterance.lang] setting. |
| external SpeechSynthesisVoice? get voice; |
| external set voice(SpeechSynthesisVoice? value); |
| |
| /// The **`volume`** property of the [SpeechSynthesisUtterance] interface gets |
| /// and sets the volume that the utterance will be spoken at. |
| /// |
| /// If not set, the default value 1 will be used. |
| external double get volume; |
| external set volume(num value); |
| |
| /// The **`rate`** property of the [SpeechSynthesisUtterance] interface gets |
| /// and sets the speed at which the utterance will be spoken at. |
| /// |
| /// If unset, a default value of 1 will be used. |
| external double get rate; |
| external set rate(num value); |
| |
| /// The **`pitch`** property of the [SpeechSynthesisUtterance] interface gets |
| /// and sets the pitch at which the utterance will be spoken at. |
| /// |
| /// If unset, a default value of 1 will be used. |
| external double get pitch; |
| external set pitch(num value); |
| external EventHandler get onstart; |
| external set onstart(EventHandler value); |
| external EventHandler get onend; |
| external set onend(EventHandler value); |
| external EventHandler get onerror; |
| external set onerror(EventHandler value); |
| external EventHandler get onpause; |
| external set onpause(EventHandler value); |
| external EventHandler get onresume; |
| external set onresume(EventHandler value); |
| external EventHandler get onmark; |
| external set onmark(EventHandler value); |
| external EventHandler get onboundary; |
| external set onboundary(EventHandler value); |
| } |
| |
| /// The **`SpeechSynthesisEvent`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// contains information about the current state of [SpeechSynthesisUtterance] |
| /// objects that have been processed in the speech service. |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent). |
| extension type SpeechSynthesisEvent._(JSObject _) implements Event, JSObject { |
| external factory SpeechSynthesisEvent( |
| String type, |
| SpeechSynthesisEventInit eventInitDict, |
| ); |
| |
| /// The **`utterance`** read-only property of the [SpeechSynthesisUtterance] |
| /// interface returns the [SpeechSynthesisUtterance] instance that the event |
| /// was triggered on. |
| external SpeechSynthesisUtterance get utterance; |
| |
| /// The **`charIndex`** read-only property of the [SpeechSynthesisUtterance] |
| /// interface returns the index position of the character in |
| /// [SpeechSynthesisUtterance.text] that was being spoken when the event was |
| /// triggered. |
| external int get charIndex; |
| |
| /// The read-only **`charLength`** property of the [SpeechSynthesisEvent] |
| /// interface returns the number of characters left to be spoken after the |
| /// character at the [SpeechSynthesisEvent.charIndex] position. |
| /// |
| /// If the speech engine can't determine it, it returns 0. |
| external int get charLength; |
| |
| /// The **`elapsedTime`** read-only property of the [SpeechSynthesisEvent] |
| /// returns the elapsed time in seconds, after the |
| /// [SpeechSynthesisUtterance.text] started being spoken, at which the |
| /// [event](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance#events) |
| /// was triggered. |
| external double get elapsedTime; |
| |
| /// The **`name`** read-only property of the [SpeechSynthesisUtterance] |
| /// interface returns the name associated with certain types of events |
| /// occurring as the [SpeechSynthesisUtterance.text] is being spoken: |
| /// the name of the [SSML](https://www.w3.org/TR/speech-synthesis/#S3.3.2) |
| /// marker reached in the case of a [SpeechSynthesisUtterance.mark_event] |
| /// event, or the type of boundary reached in the case of a |
| /// [SpeechSynthesisUtterance.boundary_event] event. |
| external String get name; |
| } |
| extension type SpeechSynthesisEventInit._(JSObject _) |
| implements EventInit, JSObject { |
| external factory SpeechSynthesisEventInit({ |
| bool bubbles, |
| bool cancelable, |
| bool composed, |
| required SpeechSynthesisUtterance utterance, |
| int charIndex, |
| int charLength, |
| num elapsedTime, |
| String name, |
| }); |
| |
| external SpeechSynthesisUtterance get utterance; |
| external set utterance(SpeechSynthesisUtterance value); |
| external int get charIndex; |
| external set charIndex(int value); |
| external int get charLength; |
| external set charLength(int value); |
| external double get elapsedTime; |
| external set elapsedTime(num value); |
| external String get name; |
| external set name(String value); |
| } |
| |
| /// The **`SpeechSynthesisErrorEvent`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// contains information about any errors that occur while processing |
| /// [SpeechSynthesisUtterance] objects in the speech service. |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisErrorEvent). |
| extension type SpeechSynthesisErrorEvent._(JSObject _) |
| implements SpeechSynthesisEvent, JSObject { |
| external factory SpeechSynthesisErrorEvent( |
| String type, |
| SpeechSynthesisErrorEventInit eventInitDict, |
| ); |
| |
| /// The **`error`** property of the |
| /// [SpeechSynthesisErrorEvent] interface returns an error code indicating |
| /// what has gone wrong with a speech synthesis attempt. |
| external SpeechSynthesisErrorCode get error; |
| } |
| extension type SpeechSynthesisErrorEventInit._(JSObject _) |
| implements SpeechSynthesisEventInit, JSObject { |
| external factory SpeechSynthesisErrorEventInit({ |
| bool bubbles, |
| bool cancelable, |
| bool composed, |
| required SpeechSynthesisUtterance utterance, |
| int charIndex, |
| int charLength, |
| num elapsedTime, |
| String name, |
| required SpeechSynthesisErrorCode error, |
| }); |
| |
| external SpeechSynthesisErrorCode get error; |
| external set error(SpeechSynthesisErrorCode value); |
| } |
| |
| /// The **`SpeechSynthesisVoice`** interface of the |
| /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) |
| /// represents a voice that the system supports. |
| /// Every `SpeechSynthesisVoice` has its own relative speech service including |
| /// information about language, name and URI. |
| /// |
| /// --- |
| /// |
| /// API documentation sourced from |
| /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice). |
| extension type SpeechSynthesisVoice._(JSObject _) implements JSObject { |
| /// The **`voiceURI`** read-only property of the |
| /// [SpeechSynthesisVoice] interface returns the type of URI and location of |
| /// the speech synthesis service for this voice. |
| external String get voiceURI; |
| |
| /// The **`name`** read-only property of the |
| /// [SpeechSynthesisVoice] interface returns a human-readable name that |
| /// represents the voice. |
| external String get name; |
| |
| /// The **`lang`** read-only property of the [SpeechSynthesisVoice] interface |
| /// returns a BCP 47 language tag indicating the language of the voice. |
| external String get lang; |
| |
| /// The **`localService`** read-only property of the |
| /// [SpeechSynthesisVoice] interface returns a boolean value |
| /// indicating whether the voice is supplied by a local speech synthesizer |
| /// service |
| /// (`true`), or a remote speech synthesizer service (`false`.) |
| /// |
| /// This property is provided to allow differentiation in the case that some |
| /// voice options |
| /// are provided by a remote service; it is possible that remote voices might |
| /// have extra |
| /// latency, bandwidth or cost associated with them, so such distinction may |
| /// be useful. |
| external bool get localService; |
| @JS('default') |
| external bool get default_; |
| } |