diff --git a/src/backends/android.rs b/src/backends/android.rs index 3f6d422..bc54ad4 100644 --- a/src/backends/android.rs +++ b/src/backends/android.rs @@ -250,6 +250,7 @@ impl Backend for Android { utterance_callbacks: true, voice: false, get_voice: false, + synthesize: false, } } @@ -284,6 +285,10 @@ impl Backend for Android { } } + fn synthesize(&mut self, text: &str) -> Result, Error> { + unimplemented!(); + } + fn stop(&mut self) -> Result<(), Error> { let vm = Self::vm()?; let env = vm.get_env()?; diff --git a/src/backends/appkit.rs b/src/backends/appkit.rs index cf1375a..ddc5c22 100644 --- a/src/backends/appkit.rs +++ b/src/backends/appkit.rs @@ -123,6 +123,10 @@ impl Backend for AppKit { Ok(None) } + fn synthesize(&mut self, text: &str) -> Result, Error> { + unimplemented!(); + } + fn stop(&mut self) -> Result<(), Error> { trace!("stop()"); unsafe { diff --git a/src/backends/av_foundation.rs b/src/backends/av_foundation.rs index a64d9b4..69379c4 100644 --- a/src/backends/av_foundation.rs +++ b/src/backends/av_foundation.rs @@ -169,6 +169,7 @@ impl Backend for AvFoundation { voice: true, get_voice: false, utterance_callbacks: true, + synthesize: false, } } @@ -205,6 +206,10 @@ impl Backend for AvFoundation { Ok(Some(UtteranceId::AvFoundation(utterance))) } + fn synthesize(&mut self, text: &str) -> Result, Error> { + unimplemented!(); + } + fn stop(&mut self) -> Result<(), Error> { trace!("stop()"); unsafe { diff --git a/src/backends/speech_dispatcher.rs b/src/backends/speech_dispatcher.rs index b3034a1..b91bd3b 100644 --- a/src/backends/speech_dispatcher.rs +++ b/src/backends/speech_dispatcher.rs @@ -85,6 +85,7 @@ impl Backend for SpeechDispatcher { voice: true, get_voice: false, utterance_callbacks: true, + synthesize: false, } } @@ -108,6 +109,10 @@ impl Backend for SpeechDispatcher { } } + fn synthesize(&mut self, text: &str) -> Result, Error> { + unimplemented!(); + } + fn stop(&mut self) -> Result<(), Error> { trace!("stop()"); self.0.cancel()?; diff --git a/src/backends/tolk.rs b/src/backends/tolk.rs index 056d75e..408c1f5 100644 --- a/src/backends/tolk.rs +++ b/src/backends/tolk.rs @@ -39,6 +39,10 @@ impl Backend for Tolk { Ok(None) } + fn synthesize(&mut self, text: &str) -> Result, Error> { + unimplemented!(); + } + fn stop(&mut self) -> Result<(), Error> { trace!("stop()"); self.0.silence(); diff --git a/src/backends/web.rs b/src/backends/web.rs index 578a213..e1c140f 100644 --- a/src/backends/web.rs +++ b/src/backends/web.rs @@ -59,6 +59,7 @@ impl Backend for Web { voice: true, get_voice: true, utterance_callbacks: true, + synthesize: false, } } @@ -121,6 +122,10 @@ impl Backend for Web { } } + fn synthesize(&mut self, text: &str) -> Result, Error> { + unimplemented!(); + } + fn stop(&mut self) -> Result<(), Error> { trace!("stop()"); if let Some(window) = web_sys::window() { diff --git a/src/backends/winrt.rs b/src/backends/winrt.rs index ceb5f00..85fb1ae 100644 --- a/src/backends/winrt.rs +++ b/src/backends/winrt.rs @@ -156,6 +156,7 @@ impl Backend for WinRt { voice: true, get_voice: true, utterance_callbacks: true, + synthesize: false, } } @@ -207,6 +208,10 @@ impl Backend for WinRt { Ok(Some(utterance_id)) } + fn synthesize(&mut self, text: &str) -> Result, Error> { + unimplemented!() + } + fn stop(&mut self) -> std::result::Result<(), Error> { trace!("stop()"); if !self.is_speaking()? { diff --git a/src/lib.rs b/src/lib.rs index 76c7b94..98b723e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -162,6 +162,7 @@ unsafe impl Sync for UtteranceId {} #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct Features { pub is_speaking: bool, + pub synthesize: bool, pub pitch: bool, pub rate: bool, pub stop: bool, @@ -217,6 +218,7 @@ pub trait Backend: Clone { fn id(&self) -> Option; fn supported_features(&self) -> Features; fn speak(&mut self, text: &str, interrupt: bool) -> Result, Error>; + fn synthesize(&mut self, text: &str) -> Result, Error>; fn stop(&mut self) -> Result<(), Error>; fn min_rate(&self) -> f32; fn max_rate(&self) -> f32;