Skip to main content

Crate spiel

Crate spiel 

Source
Expand description

§spiel

Read and write audio, as well as mixed audio/events streams using the Spiel speech synthesis protocol.

§Cargo Features

Note that features with an unmarked checkbox are not yet implemented.

  • default: none. This includes all basic protocol functionality, both from bytes and into bytes: no_std and no_alloc. This feature set requires only core.
  • client: std, and pulls in the zbus crate. This provides a Client proxy type that ask for the speech provider to synthesize some speech, as well as query which voices and options are available.
  • reader: alloc. This gives you a sans-io Reader type where you can [Reader::push] bytes into the buffer, and then [Reader::try_read] to the conversion into a Message.
    • This is almost zero-copy. But currently requires a clone of the string if an event sent from the synthesizer has a name.
  • alloc: pulls in the bytes, if serde is enabled. It exposes new types like [crate::MessageOwned] and [crate::EventOwned], which are owned versions of crate::Message and crate::Event.
  • poll: add wrapper functions that return Poll::Pending when there is not enough data in the buffer. This is not for general use, but rather only if you are creating an async integration.
  • serde: activate [serde::Serialize] and [serde::Deserialize] on all types.
  • provider: activates [std] and pulls in the zbus crate. This will provide the SpeechProvider struct, which can be used to provide speech over the Spiel protocol via DBus.

§MSRV

We use the str::from_utf8 which was introduced in Rust 1.87; with no features enabled, this is our MSRV.

With other features, YMMV.

§License

All contributions are dual-licensed under MIT or Apache-2.0. This crate is suitable for proprietary text-to-speech synthesizers wanting to be providers on the Spiel interface.

Structs§

Event

Enums§

ChunkType
Error
EventType
Message
MessageType
A type for interpreting buffer data, instead of taking references to the underlying data. This is for when the data is on your stack, and you want to borrow the results yourself.

Functions§

read_message
read_message takes a buffer and triees to read a Message from it. This borrows data from the buffer, then returns a tuple containing:
read_message_type
read_message_type allows you to get references to the input slice instead of placing it into a Message.
write_message
Write a message to the buffer.