问各位点明的工程师一个,读屏调用三方语音的问题

开发者mister wang
和汗青且浅,相去复几许,盈盈一水间,脉脉不得语。

做安卓 TTS 开发的兄弟们应该都清楚哈,在把咱们的引擎接入系统服务的时候,首先得继承 'TextToSpeechService',在 'onCreate' 里把引擎初始化好,然后系统会通过 'bindService' 把咱们的服务绑定起来。


到了真正要合成的时候,流程是这样的:系统会先调用 'onSynthesizeText' 方法,把用户或者其他 APP 传过来的文本和回调对象 'synthCallback' 塞给咱们。咱们引擎拿到文本后,得先调用 'synthCallback.start()' 方法,把音频的采样率、格式和声道数这些参数设置好。接着就开始干活合成音频了,合成出一段数据后,就调用 'synthCallback.audioAvailable()' 把这块 PCM 音频数据传给系统。等整段文本都合成完毕了,最后再调用 'synthCallback.done()' 告诉系统合成结束,系统拿到这些数据后就会去播放。


不过这里有个事儿我一直没搞明白,想请教下各位大佬。在引擎合成期间,为啥咱们的点明读屏默认只等待 300 毫秒?咱们知道,有些在线 TTS 引擎发起网络请求,再到最后输出 PCM 数据,这中间的网络延迟加上处理时间,很容易就超过 300 毫秒了。读屏软件这么短的超时机制是出于什么考虑呢?是怕引擎卡死影响无障碍体验,还是有其他的兜底策略?这个问题卡了我挺久了,求工程解答,谢谢啦!

发表于:2026-10-29 13:58
3个回复
您还没有登录,登录后才可回复。 登录 注册