跳到主要内容
版本:4.0

自动语音下发

since 4.0.19

企业应用调用流媒体 HTTP 接口下发预置语音;流媒体打开对讲通道播放本地音频,并将结果写入 Kafka。

基本流程

  1. 流媒体启动时若从未同步过,从远程音频 API 全量同步到本地,并转码为 8 kHz / 单声道 / 16-bit LPCM WAV;之后新素材在第一次下发时按需拉取
  2. 应用调用 下发语音(可带 priority / guid
  3. VoiceDispatchMgr(priority DESC, reqTm ASC) 排队;同终端同时只执行 1 路;不抢占已执行任务。内存队可用 查询内存队列 观察(与 查询任务 库表分工)
  4. 执行器打开对讲(dataType=2),播完后关闭通道
  5. 凡终态向 auto-voice-evt 发送结果(result 1–4)

超时从入参 tm(epoch millis)起算,默认 30 秒(voice.dispatchTimeoutMs)。

与人工对讲

同一通道已被人工对讲占用时,自动下发立即失败result=2),不踢人、不等待。详见 对讲集成指南

音频库

  • voicestring(音频编号);本地文件 {voice.localDir}/{voice}.wav
  • 从未同步过:启动时全量一次(查询 GET {voice.remoteApi.baseUrl}/v1/voice,下载 GET {voice.remoteApi.baseUrl}/v1/voice/file?voice=,转码后落盘,并写 .voice-synced
  • 之后不定时同步。任务执行时若本地无该 voice,按需下载并与开对讲并行(voice.fetchTimeoutMs,默认 4 秒)
  • 按需拉取或转码失败 → result=2(不会空等到任务超时)
  • 远端查询失败时不删除本地已同步文件
  • 客户端可 查询音频库试听(本地 WAV,不在试听路径从远程拉取)

司机回传音频本版本不处理。