语音控制服务
约 2491 字大约 8 分钟
2025-05-29
提供机器人系统语音服务控制器,通过AudioController可以通过RPC方式实现对机器人的音频进行指令控制和状态获取。
接口定义
AudioController
是一个封装音频控制功能的 C++ 类,主要用于音频播放控制、TTS 播放、音量设置与查询等场景。
AudioController
项目 | 内容 |
---|---|
函数名 | AudioController |
函数声明 | AudioController(); |
功能概述 | 初始化音频控制器对象,构造内部状态,分配资源等。 |
备注 | 构造内部状态。 |
~AudioController
项目 | 内容 |
---|---|
函数名 | ~AudioController |
函数声明 | ~AudioController(); |
功能概述 | 释放音频控制器资源,确保停止播放并清理底层资源。 |
备注 | 确保资源安全释放。 |
Initialize
项目 | 内容 |
---|---|
函数名 | Initialize |
函数声明 | bool Initialize(); |
功能概述 | 初始化音频控制模块,准备播放资源与设备。 |
返回值 | true 表示成功,false 表示失败。 |
备注 | 与 Shutdown() 配对使用。 |
Shutdown
项目 | 内容 |
---|---|
函数名 | Shutdown |
函数声明 | void Shutdown(); |
功能概述 | 关闭音频控制器并释放资源。 |
备注 | 确保在销毁前调用。 |
Play
项目 | 内容 |
---|---|
函数名 | Play |
函数声明 | Status Play(const TtsCommand& cmd); |
功能概述 | 播放 TTS(文本转语音)语音命令。 |
参数说明 | cmd :TTS 命令,包含文本、语速、语调等。 |
返回值 | Status::OK 表示成功,其他为失败状态。 |
备注 | 阻塞接口,调用前需确保已初始化模块。 |
Stop
项目 | 内容 |
---|---|
函数名 | Stop |
函数声明 | Status Stop(); |
功能概述 | 停止当前音频播放。 |
返回值 | Status::OK 表示成功,其他为失败状态。 |
备注 | 阻塞接口,通常用于中断当前语音。 |
SetVolume
项目 | 内容 |
---|---|
函数名 | SetVolume |
函数声明 | Status SetVolume(int volume); |
功能概述 | 设置音频输出的音量。 |
参数说明 | volume :音量值,通常范围为 0~100。 |
返回值 | Status::OK 表示成功,其他为失败状态。 |
备注 | 阻塞接口,设置后立即生效。 |
GetVolume
项目 | 内容 |
---|---|
函数名 | GetVolume |
函数声明 | Status GetVolume(int& volume); |
功能概述 | 获取当前音频输出音量。 |
参数说明 | volume :通过引用返回当前音量值。 |
返回值 | Status::OK 表示成功,其他为失败状态。 |
备注 | 阻塞接口,返回值需检查后再使用 volume 。 |
OpenAudioStream
项目 | 内容 |
---|---|
函数名 | OpenAudioStream |
函数声明 | Status OpenAudioStream(); |
功能概述 | 打开音频流,准备进行音频播放。 |
返回值 | Status::OK 表示成功,其他为失败状态。 |
备注 | 阻塞接口,返回值需检查是否执行成功 |
CloseAudioStream
项目 | 内容 |
---|---|
函数名 | CloseAudioStream |
函数声明 | Status CloseAudioStream(); |
功能概述 | 关闭音频流。 |
返回值 | Status::OK 表示成功,其他为失败状态。 |
备注 | 阻塞接口,返回值需检查是否执行成功 |
SubscribeOriginAudioStream
项目 | 内容 |
---|---|
函数名 | SubscribeOriginAudioStream |
函数声明 | void SubscribeOriginAudioStream(const OriginAudioStreamCallback callback); |
功能概述 | 订阅原始音频流数据。 |
参数说明 | callback :音频流数据回调函数。 |
返回值 | Status::OK 表示成功,其他为失败状态。 |
备注 | 非阻塞接口。 |
SubscribeBfAudioStream
项目 | 内容 |
---|---|
函数名 | SubscribeBfAudioStream |
函数声明 | void SubscribeBfAudioStream(const BfAudioStreamCallback callback); |
功能概述 | 订阅BF音频流数据。 |
参数说明 | callback :音频流数据回调函数。 |
返回值 | Status::OK 表示成功,其他为失败状态。 |
备注 | 非阻塞接口。 |
类型定义
TtsPriority
— TTS 播报优先级等级
用于控制不同 TTS 任务之间的中断行为。优先级越高的任务将中断当前低优先级任务的播放。
枚举值 | 描述 |
---|---|
TtsPriority::HIGH | 最高优先级,例如:低电告警、紧急提醒 |
TtsPriority::MIDDLE | 中优先级,例如:系统提示、状态播报 |
TtsPriority::LOW | 最低优先级,例如:日常语音对话、背景播报 |
TtsMode
— 同一优先级下的任务调度策略
用于细化控制在相同优先级条件下多个 TTS 任务的播放顺序和清除逻辑。
枚举值 | 描述 |
---|---|
TtsMode::CLEARTOP | 清空当前优先级所有任务(包括正在播放和等待队列),立即播放本次请求 |
TtsMode::ADD | 将本次请求追加到当前优先级队列尾部,顺序播放(不打断当前播放) |
TtsMode::CLEARBUFFER | 清空队列中未播放的请求,保留当前播放,之后播放本次请求 |
结构体定义
TtsCommand
— TTS 播放命令结构体
描述一次 TTS 播放请求的完整信息,支持设置唯一标识、文本内容、优先级控制以及同优先级下的调度模式。
字段名 | 类型 | 描述 |
---|---|---|
id | std::string | TTS 任务唯一 ID,例如 "id_01" ,用于追踪播放状态 |
content | std::string | 要播放的文本内容,例如 "你好,欢迎使用智能语音系统。" |
priority | TtsPriority | 播报优先级,控制是否中断正在播放的低优先级语音 |
mode | TtsMode | 同优先级下的调度策略,控制任务是否追加、覆盖等 |