请教一个关于阿里语音AI的问题,问题一:语音合成,android 这个构造函数,是阻塞的么 ? new NativeNui(Constants.ModeType.MODE_TTS) 场景:我在第一个300字播放完成的回调中,去新建一个任务,继续执行,发现会被卡住 问题二:没有,我是 提前创建的, 上一个任务还在执行 问题三:我是创建 2个任务,交替执行, 因为300字 一段。为了连贯性 上一个任务不能释放 问题四:对 我切换到了主线程,好像可以了 这个方案,有风险么,实验中有出现 声音卡的情况 问题五:我们回调 是在固定的线程么,我这里需要处理下异步。 我放在子线程再试下
问题一:语音合成,android 这个构造函数,是阻塞的么 ?
根据 Aliyun 系统文档,new NativeNui(Constants.ModeType.MODE_TTS) 的构造函数不是阻塞的,但是在调用 synthesize() 方法时,会阻塞当前线程,直到语音合成完成。 问题二:没有,我是 提前创建的, 上一个任务还在执行
如果您使用了多线程的方式进行语音合成,那么在创建新任务之前,需要保证前一个任务已经完成。否则,在多个任务同时执行时,可能会导致资源冲突、竞争等问题,从而让程序出现异常或卡死的情况。 问题三:我是创建 2个任务,交替执行, 因为300字 一段。为了连贯性 上一个任务不能释放
如果因为要保持连贯性而不释放前一个任务,那么就需要考虑如何优化资源分配和管理,并在保证流畅性的基础上,尽可能地避免资源的浪费或冲突。例如,可以通过缓存机制、线程池、请求队列等方式来优化资源的分配和管理,从而保证多任务间的协同执行和流畅性。 问题四: 我切换到了主线程,好像可以了 这个方案,有风险么,实验中有出现声音卡的情况
在 Android 平台上,主线程主要用于处理 UI 相关的操作和事件,如果您在主线程中进行语音合成,可能会导致阻塞或响应不及时等情况,从而影响用户体验。因此,通常建议将语音合成等耗时操作放在子线程中执行,这样可以保证程序的流畅性和响应速度,并避免卡顿等问题的出现。 问题五:我们回调 是在固定的线程么,我这里需要处理下异步。 我放在子线程再试下
关于回调的执行线程,这取决于具体的实现方式和框架。一般来说,回调是在触发事件的线程中执行的,如果是在主线程中触发事件,那么回调也会在主线程中执行。如果您需要在回调中进行异步处理,可以考虑使用线程池、异步任务、Handler 等方式来实现,从而避免在回调中阻塞 UI 界面。
针对问题一的回答:上一个释放了嘛?针对问题二的回答:释放下试试?主线程? 针对问题三的回答:您这个应该是堵塞了把 第一个可以执行 第二个不行把 针对问题四的回答: 您这样实现是占并发的把 有可能堵塞的 您的用法 我不太理解呀 针对问题五的回答:放子线程试试--此回答整理自钉群“阿里语音AI【6群】”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。