diff --git a/proto/anki/card_rendering.proto b/proto/anki/card_rendering.proto index 2c544dd9b..7be401a1a 100644 --- a/proto/anki/card_rendering.proto +++ b/proto/anki/card_rendering.proto @@ -29,14 +29,14 @@ service CardRenderingService { rpc CompareAnswer(CompareAnswerRequest) returns (generic.String); rpc ExtractClozeForTyping(ExtractClozeForTypingRequest) returns (generic.String); - rpc AllTtsVoices(AllTtsVoicesRequest) returns (AllTtsVoicesResponse); - rpc WriteTtsStream(WriteTtsStreamRequest) returns (generic.Empty); } // Implicitly includes any of the above methods that are not listed in the // backend service. service BackendCardRenderingService { rpc StripHtml(StripHtmlRequest) returns (generic.String); + rpc AllTtsVoices(AllTtsVoicesRequest) returns (AllTtsVoicesResponse); + rpc WriteTtsStream(WriteTtsStreamRequest) returns (generic.Empty); } message ExtractAvTagsRequest { diff --git a/rslib/src/backend/card_rendering.rs b/rslib/src/backend/card_rendering.rs index 7c4520948..e202c0284 100644 --- a/rslib/src/backend/card_rendering.rs +++ b/rslib/src/backend/card_rendering.rs @@ -4,6 +4,8 @@ use anki_proto::card_rendering::StripHtmlRequest; use crate::backend::Backend; use crate::card_rendering::service::strip_html_proto; +use crate::card_rendering::tts; +use crate::prelude::*; use crate::services::BackendCardRenderingService; impl BackendCardRenderingService for Backend { @@ -13,4 +15,25 @@ impl BackendCardRenderingService for Backend { ) -> crate::error::Result { strip_html_proto(input) } + + fn all_tts_voices( + &self, + input: anki_proto::card_rendering::AllTtsVoicesRequest, + ) -> Result { + tts::all_voices(input.validate) + .map(|voices| anki_proto::card_rendering::AllTtsVoicesResponse { voices }) + } + + fn write_tts_stream( + &self, + request: anki_proto::card_rendering::WriteTtsStreamRequest, + ) -> Result<()> { + tts::write_stream( + &request.path, + &request.voice_id, + request.speed, + &request.text, + ) + .map(Into::into) + } } diff --git a/rslib/src/card_rendering/service.rs b/rslib/src/card_rendering/service.rs index c9cd203f0..4ee15f26c 100644 --- a/rslib/src/card_rendering/service.rs +++ b/rslib/src/card_rendering/service.rs @@ -7,7 +7,6 @@ use anki_proto::generic; use crate::card::CardId; use crate::card_rendering::extract_av_tags; use crate::card_rendering::strip_av_tags; -use crate::card_rendering::tts; use crate::cloze::extract_cloze_for_typing; use crate::collection::Collection; use crate::error::OrInvalid; @@ -167,27 +166,6 @@ impl crate::services::CardRenderingService for Collection { .to_string() .into()) } - - fn all_tts_voices( - &mut self, - input: anki_proto::card_rendering::AllTtsVoicesRequest, - ) -> Result { - tts::all_voices(input.validate) - .map(|voices| anki_proto::card_rendering::AllTtsVoicesResponse { voices }) - } - - fn write_tts_stream( - &mut self, - request: anki_proto::card_rendering::WriteTtsStreamRequest, - ) -> Result<()> { - tts::write_stream( - &request.path, - &request.voice_id, - request.speed, - &request.text, - ) - .map(Into::into) - } } fn rendered_nodes_to_proto(