Releases: kxxt/aspeak
Releases · kxxt/aspeak
v6.0.1
v6.0.0: New major version of aspeak
aspeak v6.0 is finally released🎉🎉🎉! This is a major release with some breaking changes. Please read the following carefully.
Generic
- GitHub branches: The main branch has been deleted. The default branch is now
v6
and it will change as the major version change. - Upgrade dependencies (Solves security alert #77)
- Internal refactor
For CLI users
- Now the CLI uses the REST API instead of the WebSocket API by default.
- You can use the
--mode websocket
flag to use the WebSocket API. - You can also set the
mode
field towebsocket
in the auth section in your profile to use the WebSocket API by default.
- You can use the
- When the TTS API returns empty audio, aspeak no longer reports an cryptic "Unrecognized format" error.
- It will now report a warning in this case: "Got empty audio buffer, nothing to play"
- Now the voice listing command no longer fails with this API endpoint: https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list
- Performance improvement: eliminate unnecessary memory copy
For Rust crate users
There are a lots of breaking changes:
- Some fields of the
Voice
struct is now optional. - We now uses an modular approach for error handling instead of using a big enum for all errors. (#66)
- Now there are two synthesizers:
RestSynthesizer
for the REST API andWebSocketSynthesizer
for the WebSocket API. (#71)- The REST synthesizer has two extra methods that returns the underlying
Bytes
object instead ofVec<u8>
.
- The REST synthesizer has two extra methods that returns the underlying
- There is a
UnifiedSynthesizer
trait that provides a unified interface for both synthesizers. - Some methods are renamed. For example,
Synthesizer::connect
is nowSynthesizer::connect_websocket
. - Four new feature flags of this crate:
rest-synthesizer
: Enable theRestSynthesizer
struct.websocket-synthesizer
: Enable theWebSocketSynthesizer
struct.unified-synthesizer
: Enable theUnifiedSynthesizer
trait.synthesizers
: Enable all synthesizers.synthesizers
feature are enabled by default.- Disabling
websocket-synthesizer
feature will save you a bunch of dependencies. (aspeak.rlib
is ~0.8MB smaller in release mode)
- Improved doc comments.
- Support TLS feature flags: By default, this crate uses
native-tls
. To use other TLS implementations, you can use the following feature flags:native-tls-vendored
: Use the vendored version ofnative-tls
.rustls-tls-native-roots
rustls-tls-webpki-roots
- Add 4 examples for quick reference:
For Python binding users
- The
SpeechService
now automatically connect when it is constructed and it is using the websocket API. Theconnect
method is removed. - It now uses the REST API by default.
- New keyword argument for the constructor of
SpeechService
:- mode:
rest
orwebsocket
. Default isrest
.
- mode:
- Improved error messages of the python binding
- Enable abi3 wheels so that we do not need to build for every python version.
- Now type hints are provided. You will get better completion in your IDE. (#78)
v6.0.0-rc.1
Changes after v6.0.0-beta.3:
- Rust crate: make all items visible in the root module (Flat is better than nested).
- GitHub branches: The main branch has been deleted. The default branch is now
v5
and it will change tov6
when v6 is released. - Python binding: Now type hints are provided. You will get better completion in your IDE.
v6.0.0-beta.3
Changes after v6.0.0-beta.2:
- Improve an error message of the python binding
- Enable abi3 wheels so that we do not need to build for every python version.
v6.0.0-beta.2
Changes after v6.0.0-beta.1:
- CLI: performance improvement: eliminate unnecessary memory copy
- Docs(crate): Add two more examples
- Docs(crate): Add more doc comments
v6.0.0-beta.1
Changes after v6.0.0-alpha.3:
- Feature: Add two methods to
RestSynthesizer
that returnsBytes
instead ofVec<u8>
. - Upgrade openssl dependency (Solves security alert #77)
- Add two examples for the rust crate
- 01-synthesize-txt-files.rs: Synthesize speech from *.txt files in a directory.
- 02-rssl.rs: RSSL, Read-Synthesize-Speak-Loop (Something similar to a REPL). Read text from stdin line by line, synthesize speech and play it.
- Internal refactor
v6.0.0-alpha.3
Changes after v6.0.0-alpha.2:
- Improve doc comments.
- Bump
strum
to 0.25 by @attila-lin - crate: support TLS feature flags
- crate: add
synthesizers
feature that enables all synthesizers
v6.0.0-alpha.2
For CLI users
There are no breaking changes. But there are some differences.
Changes
- Now the CLI uses the REST API instead of the WebSocket API by default.
- You can use the
--mode websocket
flag to use the WebSocket API. - You can also set the
mode
field towebsocket
in the auth section in your profile to use the WebSocket API by default.
- You can use the
Bug Fixes
- When the TTS API returns empty audio, aspeak no longer reports an cryptic "Unrecognized format" error.
- It will now report a warning in this case: "Got empty audio buffer, nothing to play"
- Now the voice listing command no longer fails with this API endpoint: https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list
For Rust crate users
There are lots of breaking changes.
- Some fields of the
Voice
struct is now optional. - We now uses an modular approach for error handling instead of using a big enum for all errors.
- Now there are two synthesizers:
RestSynthesizer
for the REST API andWebSocketSynthesizer
for the WebSocket API. - There is a
UnifiedSynthesizer
trait that provides a unified interface for both synthesizers. - Some methods are renamed. For example,
Synthesizer::connect
is nowSynthesizer::connect_websocket
. - Three new features of this crate:
rest-synthesizer
: Enable theRestSynthesizer
struct.websocket-synthesizer
: Enable theWebSocketSynthesizer
struct.unified-synthesizer
: Enable theUnifiedSynthesizer
trait.- The above three features are enabled by default.
- Disabling
websocket-synthesizer
feature will save you a bunch of dependencies. (aspeak.rlib
is ~0.8MB smaller in release mode)
- Other minor changes.
For Python binding users
One breaking change:
- The
SpeechService
now automatically connect when it is constructed. Theconnect
method is removed. - It now uses the REST API by default.
- New keyword argument for the constructor of
SpeechService
:- mode:
rest
orwebsocket
. Default isrest
.
- mode:
v5.2.0
CLI
You can now set the authentication secrets via the following environment variables:
ASPEAK_AUTH_KEY
for authentication using subscription keyASPEAK_AUTH_TOKEN
for authentication using authorization token
Rust API
- Now you can use
Voice::request_available_voices
(orVoice::request_available_voices_with_additional_headers
) to get the list of available voices.
v5.1.0: debloat the crate for library usage
- Add binary feature to aspeak crate to make rust lib less bloated
- From now on, building the CLI requires
-F binary
flag.
- From now on, building the CLI requires