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