开发者社区> 问答> 正文

请教一个关于阿里语音AI的问题,语音合成,android 这个构造函数,是阻塞的么 ?

请教一个关于阿里语音AI的问题,问题一:语音合成,android 这个构造函数,是阻塞的么 ? new NativeNui(Constants.ModeType.MODE_TTS) 场景:我在第一个300字播放完成的回调中,去新建一个任务,继续执行,发现会被卡住 问题二:没有,我是 提前创建的, 上一个任务还在执行 问题三:我是创建 2个任务,交替执行, 因为300字 一段。为了连贯性 上一个任务不能释放 问题四:2fed13859e8b1f986bec853494985a97.png对 我切换到了主线程,好像可以了 这个方案,有风险么,实验中有出现 声音卡的情况 问题五:我们回调 是在固定的线程么,我这里需要处理下异步。 我放在子线程再试下

展开
收起
jdki652dnjsbo 2023-05-16 14:48:26 213 0
2 条回答
写回答
取消 提交回答
  • 问题一:语音合成,android 这个构造函数,是阻塞的么 ?

    根据 Aliyun 系统文档,new NativeNui(Constants.ModeType.MODE_TTS) 的构造函数不是阻塞的,但是在调用 synthesize() 方法时,会阻塞当前线程,直到语音合成完成。 问题二:没有,我是 提前创建的, 上一个任务还在执行

    如果您使用了多线程的方式进行语音合成,那么在创建新任务之前,需要保证前一个任务已经完成。否则,在多个任务同时执行时,可能会导致资源冲突、竞争等问题,从而让程序出现异常或卡死的情况。 问题三:我是创建 2个任务,交替执行, 因为300字 一段。为了连贯性 上一个任务不能释放

    如果因为要保持连贯性而不释放前一个任务,那么就需要考虑如何优化资源分配和管理,并在保证流畅性的基础上,尽可能地避免资源的浪费或冲突。例如,可以通过缓存机制、线程池、请求队列等方式来优化资源的分配和管理,从而保证多任务间的协同执行和流畅性。 问题四: 我切换到了主线程,好像可以了 这个方案,有风险么,实验中有出现声音卡的情况

    在 Android 平台上,主线程主要用于处理 UI 相关的操作和事件,如果您在主线程中进行语音合成,可能会导致阻塞或响应不及时等情况,从而影响用户体验。因此,通常建议将语音合成等耗时操作放在子线程中执行,这样可以保证程序的流畅性和响应速度,并避免卡顿等问题的出现。 问题五:我们回调 是在固定的线程么,我这里需要处理下异步。 我放在子线程再试下

    关于回调的执行线程,这取决于具体的实现方式和框架。一般来说,回调是在触发事件的线程中执行的,如果是在主线程中触发事件,那么回调也会在主线程中执行。如果您需要在回调中进行异步处理,可以考虑使用线程池、异步任务、Handler 等方式来实现,从而避免在回调中阻塞 UI 界面。

    2023-05-16 15:44:26
    赞同 展开评论 打赏
  • 针对问题一的回答:上一个释放了嘛?针对问题二的回答:释放下试试?主线程? 针对问题三的回答:您这个应该是堵塞了把 第一个可以执行 第二个不行把 针对问题四的回答: 您这样实现是占并发的把 有可能堵塞的 您的用法 我不太理解呀 针对问题五的回答:放子线程试试--此回答整理自钉群“阿里语音AI【6群】”

    2023-05-16 15:41:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2023云栖大会:PolarDB for AI 立即下载
2023云栖大会:Lindorm一站式AI数据平台实战 立即下载
释放算力潜能加速应用构建Serverless为AI创新提速 立即下载