All Downloads are FREE. Search and download functionalities are using the official Maven repository.

chrome.tts.TTS.scala Maven / Gradle / Ivy

package chrome.tts

import chrome.ChromeAPI
import chrome.permissions.Permission.API
import chrome.tts.bindings._
import chrome.utils.ErrorHandling._

import scala.concurrent.{Future, Promise}
import scala.scalajs.js

object TTS extends ChromeAPI {

  val requiredPermissions: Set[API] = Set(API.TTS)

  def speak(utterance: String,
            options: js.UndefOr[SpeakOptions] = js.undefined): Future[Unit] = {
    val promise = Promise[Unit]()
    bindings.TTS.speak(utterance, options, js.Any.fromFunction0(() => {
      promise.complete(lastErrorOrValue(()))
    }))
    promise.future
  }

  def stop(): Unit = bindings.TTS.stop()

  def pause(): Unit = bindings.TTS.pause()

  def resume(): Unit = bindings.TTS.resume()

  def isSpeaking: Future[Boolean] = {
    val promise = Promise[Boolean]()
    bindings.TTS.isSpeaking(js.Any.fromFunction1((speaking: Boolean) => {
      promise.complete(lastErrorOrValue(speaking))
    }))
    promise.future
  }

  def getVoices: Future[js.Array[TTSVoice]] = {
    val promise = Promise[js.Array[TTSVoice]]()
    bindings.TTS.getVoices(
        js.Any.fromFunction1((voices: js.Array[TTSVoice]) => {
      promise.complete(lastErrorOrValue(voices))
    }))
    promise.future
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy