下面是一套比较通用、实战中常用的「直播间数字人 TTS 节流/调度」思路。思路分成两层:事件层(如何从海量原始消息里挑出“要说的”)和 播报层(如何把挑出来的事件播得自然、随机、不卡顿)。
1 事件层:先把海量消息“提炼成要说的事”
2 播报层:让数字人口播既不卡、又不机械
2.1 速率节流(Rate Limiter)
令牌桶 / 漏桶:给 TTS 线程设置“每分钟最多 N 条”硬上限,避免极端高峰。
软间隔:相邻两条语音最少间隔
δ
秒(例如 δ = 2s)。保证上一句没说完不会被下一句截断。
2.2 随机化 & 模板多样化
多句式模板库
欢迎 {user} 来到直播间! {user} 也加入了我们,热烈欢迎~ 很高兴见到 {user} !
播放时随机挑一句,或者根据用户性别/等级做微调。
插播小惊喜
每隔 K 条自动插一条固定句式(“喜欢的朋友点点关注哦”),用randint(5,8)
之类的随机间隔,让节奏更自然。
2.3 任务切换与打断
可中断播报:高优先级事件(大额礼物)实时打断当前播报。实现上可以让 TTS Engine 支持
stop()
,然后把当前句子回到队列首,后续重新排。过时丢弃:如果一条事件在队列里滞留时间 > T (如 10 s),直接丢弃或改成总结式播报,避免“旧闻播报”。
评论