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 release notes

Vivox Core SDK 5.29.0

Official notes

Release overview

  1. 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

  1. Feature

    Added

  2. Change

    Native text-to-speech engine ( `tts_engine_native_default` ), which uses the operating system's installed voices and languages, on:

  3. 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
  4. 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
  5. 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
  6. Change

    Xbox One and Xbox Series X|S (GDK), using the console speech synthesizer ( `XSpeechSynthesizer` ).

  7. 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` .

  8. 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.

  9. 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.

  10. Change

    On-request translation of one or more texts into a target language. Contact your Vivox representative to enable this feature.

  11. Change

    Support for PS5 14.00 SDK.

  12. Change

    Support for Xbox GDK 260400.

  13. Change

    Changed

  14. 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
  15. Fix

    Fixed

  16. 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.

  17. 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.

  18. 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.

  19. 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.

  20. Change

    When presence is enabled, logout now sends unavailable presence before disconnecting.

  21. 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.

  22. Change

    `vx_evt_account_edit_message.language` is now populated. It was previously always NULL.

  23. 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
  24. 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
  25. Fix

    Fixed a rare crash after text-to-speech playback, most often with queued local playback.

  26. 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.

  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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` .

  33. 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.

  34. Fix

    Xbox (GDK): Fixed audio device hotswap not switching to the new device on the first try while in a channel.

Public API Changes

  1. 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.

  2. 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
  3. Change

    New configuration field: `vx_sdk_config_t.enable_dm_send_confirmation` (enabled by default).

  4. Change

    Event changes: `vx_evt_user_to_user_message` now contains `is_current_user` and `to_uri` .

  5. 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.

  6. 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.

  7. 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.

Pick your Unity version

Unity Releases compares releases against the version your project is on. Picking it now keeps Compare versions focused on what changes between where you are and where you might be going.