Vivox Core SDK 5.29.0
The 5.29.0 release adds native text-to-speech on Android, iOS, Windows, and Xbox, delivers a user's own directed messages back to them, introduces text translation, and adds support for the PS5 14.00 SDK and Xbox GDK 260400. It also contains various bug fixes and improvements.
- Version
- 5.29.0
- Product
- Vivox Core SDK
Vivox Core SDK 5.29.0
Release overview
- Change
For further technical details on all the changes included in this release, refer to the `CHANGELOG.md` file within the SDK.
Key features and bugs addressed
- Feature
Added
- Change
Native text-to-speech engine ( `tts_engine_native_default` ), which uses the operating system's installed voices and languages, on:
- Change
Android, using the device's text-to-speech engine ( `android.speech.tts` ). Voices are the device's installed offline voices. Requires `JniHelpers.init()` . Android finishes initializing text-to-speech on the main thread, so calls made from the main thread before it's ready see no voices; call from another thread to wait for them.
- Android
- Change
iOS 13 and later, using `AVSpeechSynthesizer` . On iOS 11 and 12, `vx_tts_initialize` returns `tts_error_not_supported` for the native engine.
- iOS
- Change
Windows 10 and later (desktop builds), using `Windows.Media.SpeechSynthesis` . On Windows 7 and 8.1, `vx_tts_initialize` returns `tts_error_not_supported` for the native engine. UWP builds are unchanged.
- Windows
- Change
Xbox One and Xbox Series X|S (GDK), using the console speech synthesizer ( `XSpeechSynthesizer` ).
- Change
`vx_tts_get_voice_info` , which returns a text-to-speech voice's BCP-47 language tag (for example `en-US` ), or `und` if the engine doesn't report one. The existing Flite voices report `en-US` .
- Change
Directed messages sent by the logged-in account are now echoed back to that account through `vx_evt_user_to_user_message` , with `is_current_user` set and `to_uri` identifying the original recipient. This is controlled by `vx_sdk_config_t.enable_dm_send_confirmation` , which is enabled by default; set it to 0 for the previous behavior.
- Fix
Text translation of incoming directed messages, their edits, and chat history results for a logged-in account, with either a fixed source and target language or languages resolved per message. Voice is never translated. Contact your Vivox representative to enable this feature, which is not yet generally available.
- Change
On-request translation of one or more texts into a target language. Contact your Vivox representative to enable this feature.
- Change
Support for PS5 14.00 SDK.
- Change
Support for Xbox GDK 260400.
- Change
Changed
- Change
Android: The minimum supported version is Android 6.0 (API 23), which the native library already required. The AAR manifest still declares `minSdkVersion` 14 so that existing app builds aren't affected. A future release will raise it to 23.
- Android
- Fix
Fixed
- Change
Directed messages sent by the logged-in account are now delivered back to that account, so the sender receives the server-assigned `message_id` that is required to edit or delete the message later.
- Change
Blocking with `vx_req_account_control_communications` now applies in both directions for channel text messages in text-only channels and when only one of the two users is connected to audio, including blocks set before a user joins the channel.
- Change
Account-level text mutes ( `mute_scope_text` or `mute_scope_all` ) now hide the muted user's channel text in channels joined after the mute was set.
- Change
Logout with more than one session group, including empty ones created with `vx_req_sessiongroup_create` , no longer reports completion early or fails to complete. Empty session groups now also receive `vx_evt_sessiongroup_removed` at logout.
- Change
When presence is enabled, logout now sends unavailable presence before disconnecting.
- Change
Automatic Connection Recovery (ACR) now reports the text connection as recovered only when the server confirms it, and ends as soon as the server rejects the resume instead of waiting out the full 30-second recovery timeout.
- Change
`vx_evt_account_edit_message.language` is now populated. It was previously always NULL.
- Fix
Fixed a crash in `MessageQueue::Enqueue` , most often seen on Windows after audio device changes, caused by the default memory pool returning NULL for some allocations of about 2 MB or larger when no custom allocator is supplied.
- Windows
- Fix
Fixed a crash ( `SIGABRT` in `StroConnection::~StroConnection` , most often seen on Android) when an account was logged out or released while ACR was still attempting to reconnect.
- Android
- Fix
Fixed a rare crash after text-to-speech playback, most often with queued local playback.
- Fix
Fixed a crash in the XMPP connection's timer handling, most often seen on Nintendo Switch™, caused by a data race on the connection's internal timer collections.
- Fix
Fixed apps failing to link against the static `libvivoxsdk.a` (for example on iOS) with `-all_load` , which caused duplicate symbol errors since 5.26.0.
- iOS
- Fix
Fixed builds with Clang on Windows ( `clang-cl` , or Clang targeting MSVC) failing with `-Werror` on `unknown pragma ignored [-Wunknown-pragmas]` in `Vxc.h` . MSVC builds are unchanged.
- Windows
- Change
Android: `JniHelpers.init()` now returns `false` instead of crashing the app when the native library can't be loaded. On devices older than Android 6.0 (API 23), it logs that the SDK requires API 23 or later and returns `false` .
- Android
- Change
Android: Disabling platform AEC ( `vx_set_platform_aec_enabled(0)` ) on Android 12 (API 31) and later no longer leaves the device on the speakerphone communication route.
- Android
- Change
Android: Opening or switching the audio input device no longer initializes the microphone twice, so switching devices during a session is faster, by about 200 to 500 ms on tested devices.
- Android
- Fix
Nintendo Switch™ 2: Fixed duplicate-symbol link errors in titles that also link another WebRTC-based library, such as Nintendo NPLN's `libnn_npln_p2p_middleware.a` .
- Fix
PlayStation® 5 and PlayStation® 4: Fixed a TLS connection leak that could exhaust the SSL pool and cause XMPP login failures (error 5046) over time.
- Fix
Xbox (GDK): Fixed audio device hotswap not switching to the new device on the first try while in a channel.
Public API Changes
- Change
New function: `vx_tts_get_voice_info` , returning a `vx_tts_voice_info_t` . `vx_tts_voice_t` and `vx_tts_get_voices` are unchanged.
- Change
`tts_engine_native_default` is now supported on Android, iOS 13 and later, Windows 10 and later (desktop builds), and Xbox (GDK).
- Windows
- Android
- iOS
- Change
New configuration field: `vx_sdk_config_t.enable_dm_send_confirmation` (enabled by default).
- Change
Event changes: `vx_evt_user_to_user_message` now contains `is_current_user` and `to_uri` .
- Change
Event changes: `vx_evt_user_to_user_message` , `vx_evt_account_edit_message` , and `vx_evt_account_archive_message` now contain `is_translated` . When set, the message text is the translation and `language` is the language it was translated into.
- Change
New request: `vx_req_account_translation_control` , with `source_language` and `target_language` , or `auto_languages` (mutually exclusive with them), which takes the target from the first language supplied at login and the source from each incoming message.
- Change
New request: `vx_req_account_translate_text` , given a target language and optionally a source language. The response carries one `vx_translated_text_t` per text, in request order.
Known Issues
No known issues reported.