播报卡顿,破音 问题总结

tts播报在一些极端情况下出现卡顿,怎么解决呢

数据没问题,只是极端情况下会影响audiotrack的写入间隔

所以如何保证数据间隔的稳定性

两个线程,一个获取数据,一个是写入数据

1 延时0.5s启动写入数据的线程

2 每次写入数据如果写入过快(小于150ms),就等到150ms再进行下一次的写入

3 将获取数据的线程等级设为 -16 即等级特别高,将写入数据的优先级保持normol等级即可

4 增大buffersize为 min的4倍

5 将每帧的数据重新组装为 buffersize*n 大小的数据块。

以上五点都是保证数据稳定输出的措施。这样既能稳定时间间隔,也能稳定数据块的大小,基本保证了播放的流畅性(cpu占用99%的情况下也能正常播报)

具体的阈值 会根据不同的设备微调。因为不同的系统underrun的条件不同,还是要配合系统一块调

你可能感兴趣的:(android应用层基础,android)