在原生 Tizen TV 上使用 Elementary 访问多次阅读文本

Read text multiple times with Elementary access on native Tizen TV

各位程序员大家好,

我正在尝试在 tizen TV 的本机应用程序中使用 Elementary access library(来自 Enlightenment)提供的文本转语音功能。

到目前为止,我已经能够阅读文本,但只有一次:当我多次调用 API 时,只有第一次调用呈现为音频。 我已经调查了 elementary access 的来源,但无法真正发现问题。

这是我的应用示例:

#include <app.h>
#include <Elementary.h>

#include <unistd.h>
#include <string>

using namespace std;

const char APP_PKG[] = "org.tizen.tts";

/// Struct to store application information and passed at start time to the efl framework
struct _appdata
{
    const char *name; 
    Evas_Object *win; 
};


static bool
_create(void *data)
{
    elm_config_access_set(EINA_TRUE);
    return true;
}

static bool
_control(app_control_h app_control, void *data)
{
    for (int i = 1; i <= 2; i++) {
        string text = to_string(i) + ". Read me please.";
        elm_access_say(text.c_str());
        // sleep(10);
    }
    return true;
}

int
main(int argc, char *argv[])
{
    _appdata ad = {0,};
    ad.name = APP_PKG;

    ui_app_lifecycle_callback_s lifecycle_callback = {0,};

    lifecycle_callback.create = _create;
    lifecycle_callback.app_control = _control;

    return ui_app_main(argc, argv, &lifecycle_callback, &ad);
}

我试过使用elm_access_force_say,也在循环中移动elm_config_access_set(EINA_TRUE),但每次句子只说一次。

源代码中的

Hereelm_access_say 调用的一些代码。 api 似乎调用了 espeak 可执行文件,奇怪的是我在设备上找不到任何 espeak 可执行文件。

Tizen 提供 API 用于在本机应用程序中使用 TTS 引擎,但仅适用于移动设备和手表(至少在文档中)。

如果有人尝试过在原生电视上使用 TTS 引擎,或者对 Elementary access 库有更多经验,并愿意分享一些知识,我将不胜感激。

如果您使用的是 Tizen 4.0 或更高版本并且您想使用辅助功能框架多次阅读文本,请使用 elm_atspi_bridge_utils_say。下面的代码片段演示了如何读取连续的数字。

statc void reade_n_times(int n) {
char buf[32];
for (int i=1;i<=n;++i){
 snprintf(bug,sizesizeof(buf), "%d", i);
   elm_atspi_bridge_utils_say(buf, EINA_FALSE, say_cb, NULL);
          }
   }  

elm_atspi_bridge_utils_say 的完整规格可在此处找到: https://developer.tizen.org/dev-guide/tizen-iot-headed/4.0/group__Elm__Atspi__Bridge.html#gafde6945c1451cb8752c67f2aa871d12d

将此页面用于 4.0 可穿戴 API 参考。 API tizen-iot-headed 的参考不是最新的。

https://docs.tizen.org/application/native/api/mobile/4.0/group__Elm__Atspi__Bridge.html