语音
语音服务提供自动语音识别(Automatic Speech Recognition,ASR)、语音合成(Text-to-Speech,TTS)和唤醒词检测。一元与流式都有:asr 和 tts 是一元 RPC,asr_stream、tts_stream、dialog 和 wake_word 是流式。当前版本不支持 dialog;连续语音交互与轮次编排使用 Liaison。
能力约定 TOML 在 capabilities/service/speech/;直接和嵌套使用的接口定义语言(Interface Definition Language,IDL)文件位于 capabilities/lib/{speech,asr,tts,audio,lifecycle}/。
新软件包省略 Driver 条目,由框架自动注册共享的 robonix/lifecycle/driver;显式选择共享 Driver 的行为相同。未实现生命周期回调时,框架记录警告并执行空操作。
robonix/service/speech/driver、lifecycle/Driver 和 service/speech/driver.v1.toml 只用于仍由软件包自行维护 Driver TOML 的旧实现。目前仍可使用,但计划迁移到共享 Driver;两种 Driver 不能同时注册。详见生命周期兼容流程。
接口
| 能力约定 ID | 模式 | 默认实现传输 | 载荷(IDL) | 能力约定 TOML |
|---|---|---|---|---|
robonix/service/speech/asr | rpc | gRPC | asr/Recognize | service/speech/asr.v1.toml |
robonix/service/speech/asr_stream | rpc_bidirectional_stream | gRPC | asr/RecognizeStream | service/speech/asr_stream.v1.toml |
robonix/service/speech/tts | rpc | gRPC | tts/Synthesize | service/speech/tts.v1.toml |
robonix/service/speech/tts_stream | rpc_server_stream | gRPC | tts/SynthesizeStream | service/speech/tts_stream.v1.toml |
robonix/service/speech/dialog | rpc_server_stream | gRPC(已注册,实现不可用) | speech/StartDialog | service/speech/dialog.v1.toml |
robonix/service/speech/speak | rpc | 模型上下文协议(Model Context Protocol,MCP) | speech/Speak | service/speech/speak.v1.toml |
robonix/service/speech/list_speakers | rpc | MCP | speech/ListSpeakers | service/speech/list_speakers.v1.toml |
robonix/service/speech/wake_word | rpc_client_stream | gRPC | speech/DetectWakeWord | service/speech/wake_word.v1.toml |
speak 是“合成并直接播放”的 MCP 入口;其 target 填 list_speakers 返回的扬声器 provider_id,留空时使用部署配置的默认扬声器,否则取第一个可用实例。list_speakers 只返回通过 gRPC 暴露扬声器能力的运行实例,因此返回的 ID 可以直接用于 speak.target;仅通过 ROS 2 暴露的扬声器不会出现在该列表中。tts 返回完整音频缓冲区,tts_stream 返回音频分块,两者都由调用方播放。list_speakers 列出的是播放目标,不是 TTS 音色。流式能力约定只能走 gRPC(ROS 2 不原生支持流式 RPC)。
参考实现:Robonix 源码中的 services/speech。local 后端使用 FunASR 完成客户端连续语音交互所需的流式识别,使用 Edge TTS 完成合成;Edge TTS 仍需要访问 Microsoft 服务。Whisper 只服务于单次识别接口,当前支持不完善且默认权重超过 20 GB,不建议用于快速上手。部署也可选择腾讯云或自定义后端;腾讯云账号、密钥、引擎和清单字段见语音后端配置。某个后端初始化失败时,对应的 ASR、TTS 或唤醒词调用会返回 UNAVAILABLE。
实现依据:软件包清单 · gRPC / MCP 注册 ·
DialogEventIDL