5.2.1 语音控制
语音控制接口提供了完整的语音交互能力,包括语音合成、语音识别、音频降噪、音频播放和音量控制等功能。
核心特性
语音合成 (TTS)
文本转语音:将文本转换为自然语音
多语言支持:支持中文、英文等多种语言
情感语音:支持不同情感风格的语音合成
优先级管理:支持多级优先级控制
语音识别 (ASR)(待开放)
实时识别:支持实时语音识别
多语言识别:支持中文、英文等多种语言
音频流处理:支持音频流实时处理
音频处理
实时降噪:支持实时音频降噪处理
语音活动检测:支持VAD(Voice Activity Detection)
流式传输:支持降噪后音频流式传输
音频播放
音频流播放:支持音频数据流播放
优先级控制:支持播放优先级管理
格式支持:支持多种音频格式
音量控制
音量调节:支持系统音量调节
静音控制:支持静音/取消静音
音量查询:支持当前音量查询
音量控制服务
服务名称 |
数据类型 |
描述 |
|---|---|---|
|
查询音量 |
|
|
设置音量 |
|
|
查询静音 |
|
|
设置静音 |
GetVolumeros2-srv @ /hal/audio/srv/GetVolume.srv# 获取音量 # 服务名称: /aimdk_5Fmsgs/srv/GetVolume # 请求 CommonRequest request # 请求头 --- # 响应 CommonResponse response # 响应头 uint32 audio_volume # 当前音量 (0-100)
SetVolumeros2-srv @ /hal/audio/srv/SetVolume.srv# 设置音量 # 服务名称: /aimdk_5Fmsgs/srv/SetVolume # 请求 CommonRequest request # 请求头 uint32 audio_volume # 音量值 (0-100) --- # 响应 CommonResponse response # 响应头 uint32 audio_volume # 当前音量 (0-100)
GetMuteros2-srv @ /hal/audio/srv/GetMute.srv# 获取静音状态 # 服务名称: /aimdk_5Fmsgs/srv/GetMute # 请求 CommonRequest request # 请求头 --- # 响应 CommonResponse response # 响应头 bool is_mute # 当前静音状态
SetMuteros2-srv @ /hal/audio/srv/SetMute.srv# 设置静音 # 服务名称: /aimdk_5Fmsgs/srv/SetMute # 请求 CommonRequest request # 请求头 bool is_mute # 静音状态 --- # 响应 CommonResponse response # 响应头 bool is_mute # 当前静音状态
语音合成服务
服务名称 |
数据类型 |
描述 |
|---|---|---|
|
|
语音合成(文字转语音)播放 |
PlayTtsros2-srv @ interaction/srv/PlayTts.srv# 语音合成播放 # 服务名称: /aimdk_5Fmsgs/srv/PlayTts # 请求 CommonRequest header PlayTtsRequest tts_req #内嵌Request msg --- # 响应 CommonResponse header PlayTtsResponse tts_resp #内嵌Response msg
其中
PlayTtsRequestros2-msg @ interaction/msg/PlayTtsRequest.msg# 内嵌Request msg string text # 文本内容 TtsPriorityLevel priority_level # 优先级级别 (见下方TtsPriorityLevel说明) uint32 priority_weight # 优先级权重 (0-99) string domain # 调用方来源 string trace_id # 请求追踪ID bool is_interrupted # 是否打断同等优先级播报(不打断时进播放队列)
TtsPriorityLevelros2-msg @ interaction/msg/TtsPriorityLevel.msg# TTS优先级级别 uint8 value # 优先级值
TtsPriorityLevel可用级别:级别
数值
说明
使用场景
紧急安全层(SAFETY_L10)
10
最高优先级
安全警告、紧急通知
危险预警层(WARNING_L8)
8
高优先级
危险提醒、警告信息
交互响应层(INTERACTION_L6)
6
中高优先级
用户交互、对话响应
任务执行层(MISSION_L4)
4
中优先级
任务执行、状态播报
主动服务层(SERVICE_L2)
2
低优先级
主动服务、提醒
后台服务层(BACKGROUND_L1)
1
最低优先级
后台服务、日志
声音播放优先级机制说明:
本优先级体系涵盖语音合成播放(PlayTts)与稍后描述的音频文件播放(PlayMediaFile)
高优先级播报打断低优先级播报
同优先级播报根据
priority_weight和is_interrupted参数决定紧急安全层优先级最高,不被任何其他优先级打断
PlayTtsResponseros2-msg @ interaction/msg/PlayTtsResponse.msg# 内嵌Response msg string text # 响应文本 TtsPriorityLevel priority_level # 优先级级别 uint32 priority_weight # 优先级权重 string domain # 调用方来源 string trace_id # 请求追踪ID bool is_success # 是否成功 string error_message # 错误信息 uint32 estimated_duration # 预计耗时(毫秒)
音频文件播放服务
服务名称 |
数据类型 |
描述 |
|---|---|---|
|
|
音频文件播放 |
PlayMediaFileros2-srv @ interaction/srv/PlayMediaFile.srv# 播放音频文件 # 服务名称: /aimdk_5Fmsgs/srv/PlayMediaFile # 请求 CommonRequest header PlayMediaFileRequest media_file_req --- # 响应 CommonResponse header PlayTtsResponse tts_resp #复用PlayTtsResponse
PlayMediaFileRequestros2-msg @ interaction/msg/PlayMediaFileRequest.msg# 内嵌Request msg string file_name # 音频文件的绝对路径, 注意文件放在交互计算单元 uint32 sample_rate # 暂不使用。默认16k1ch TtsPriorityLevel priority_level # 推荐默认INTERACTION_L6 uint32 priority_weight # 权重(0-99) string domain # 调用方来源 string trace_id # 请求追踪ID bool is_interrupted # 是否打断同等优先级播报(不打断时进播放队列)
其中
priority_level取值参考声音播放优先级表PlayTtsResponse如前所述
注意事项:
音频文件需要是PCM编码的原始文件(要求后缀.pcm)或封装该pcm的WAV文件(要求后缀.wav)
音频对应采样率16kHz, 位深16bit, 单声道
音视频文件使用绝对路径
音视频文件须放置于交互计算单元(PC3, 10.0.1.42)上, 不在开发计算单元(PC2)上 (本条仅对灵犀X2旗舰版)
MIC音频流采集话题
支持获取实时降噪后的语音活动检测(VAD, Voice Activity Detection)事件及相应音频流
话题名称 |
数据类型 |
描述 |
QoS |
频率 |
|---|---|---|---|---|
|
|
VAD音频采集 |
- |
触发式 |
ProcessedAudioOutputros2-msg @ interaction/msg/ProcessedAudioOutput.msgMessageHeader header # 消息头 uint32 stream_id # 音频流id (1:本体mic, 2:外置mic) AudioVadStateType audio_vad_state # VAD状态 (0: 无语言, 1: 语言开始, 2:语言处理中, 3:语言结束) uint8[] audio_data # 语音数据 (PCM编码, 16kHz/16bit/1ch)
注意音频流格式:
采样率: 16kHz
位深: 16bit
声道: 单声道
编码: PCM
编程示例
详细的编程示例和代码说明请参考:
C++ 示例:
Python 示例:
安全注意事项
警告
语音播放限制
语音合成服务有优先级限制,避免同时播放多个语音
高优先级语音会打断低优先级语音,请合理设置优先级
建议在语音播放前检查当前播放状态
备注
最佳实践
使用合适的优先级级别,避免影响重要信息播报
实现语音播放状态监控和异常处理
建议实现语音播放队列管理
注意音频格式和采样率要求