1 客户端音频逻辑

image.png

1.1 行前请求

1、请求音频

第一次算路信息拿到后鹰巢立即请求动态运营服务,拿到本次路线上挂接的音频(包含URL、音频id)。

2、查询音频下载状态

鹰巢通知客户端本次路线挂接有音频内容,客户端根据收到音频id(MD5)在本地查询下载状态。
(1)查询本地是否存在

  • 本地没有对应音频,则客户端进行下载,下载完成后通知TBT
    • 下载完成:通知TBT,可播放
    • 下载中:不通知
  • 本地已有对应音频,通过鹰巢通知TBT,可播放

(2)通知时机

  • 开始导航场景挂接音频:开始导航前若下载完成,则实时通知
  • 行中及行后其他场景挂接音频:行前或行后若下载完成,则实时通知

(3)通知内容(如果有多条广告下载完成,如何通知)

  • 音频id
  • 本地存储绝对路径,用于TTS播报使用。

    3、存储

    (1)路径
    客户端下载后存储到固定路径(待补充路径地址)。
    (2)音频格式
    MP3格式,单个音频大小不超过200K
    (3)本地缓存
    本地音频存储大小不超过10M,当超过时删除时间最早的文件。

    1.2 行中播报

    1、TBT通知

    TBT根据客户端给出的音频是否存在,下发播报通知。根据播报场景挂接广告播报(rangetype),向客户端下发播报标识:音频序号(广告id)、插播方式。
    (1)本地存在:下发“音频+文本”的播报通知,内容包含:(帅奇)

  • 广告id

  • 插播方式
  • 本地绝对路径

(2)不存在:正常下发“文本”的播报通知,按原有TBT播报逻辑。

2、播放

客户端根据收到内容进行播放,音频碰撞逻辑见2音频播报碰撞逻辑。
若本地音频路径错误(如已被删除),则音频+文本均不播报。(刘超)

3、回传

客户端播报完成后,将状态回传给鹰巢,由鹰巢传给动态信息服务进行记录。
回传内容:
(1)场景id:动态时间+透出行驶构成的唯一id,由服务产生
(2)播报状态:

  • 播报完成
  • 播报失败,包含未播出、被打断

1.3 埋点记录

(1)下载状态
下载失败,记录一次。参数包含,广告id
(2)播报完成
播报结束,参数包含:事件id(TBT给出)

2 音频播放碰撞逻辑

2.1 整体原则

在其他端内音频播放中,不打断;

在广告音频播放时,有其他播报通知,排进队列。

2.2 各场景细分

1、与小德语音

保持小德语音交互高优先级。

场景 规则
唤醒小德 1、音频播报过程中,语音唤醒小德(待AEC消除支持后可唤醒)
2、音频播报过程中,手动点击小德唤醒,进入语音交互,音频结束播放。
小德交互过程中 1、小德录音或播报中,不播报广告音频。

2、与组队语音消息
场景 规则
组队录音 1、组队开始录音时,打断音频播报。
2、录音期间,出现音频,不播报。
组队播报 1、先到先播
2、组队消息后到,等音频播报结束后播出组队开始播报时,若有音频正在播报,要等音频先播报结束。
2、有组队消息播报期间,有音频播报时机到来,舍弃音频播报

3、与语音主动交互
场景 规则
主动交互 1、音频播报过程中,收到主动交互通知,判断为不满足客户端主动交互限制条件,将主动交互舍掉。
2、主动交互过程中,不播报广告音频。

4、 与TBT

音频与TBT播报的下发和播报时机,均由TBT判断,客户端不做碰撞逻辑。

5、 与三方音乐、音频
场景
规则
三方音频 1、三方音频播放时,端内音频自动播放:
- 安卓端根据导航设置选择,中断或压低三方音频。
- iOS端压低三方音频。