跳到主要内容

语音

语音服务提供自动语音识别(Automatic Speech Recognition,ASR)、语音合成(Text-to-Speech,TTS)和唤醒词检测。一元与流式都有:asrtts 是一元 RPC,asr_streamtts_streamdialogwake_word 是流式。当前版本不支持 dialog;连续语音交互与轮次编排使用 Liaison

能力约定 TOML 在 capabilities/service/speech/;直接和嵌套使用的接口定义语言(Interface Definition Language,IDL)文件位于 capabilities/lib/{speech,asr,tts,audio,lifecycle}/

新软件包省略 Driver 条目,由框架自动注册共享的 robonix/lifecycle/driver;显式选择共享 Driver 的行为相同。未实现生命周期回调时,框架记录警告并执行空操作。

后向兼容:语音服务命名空间 Driver

robonix/service/speech/driverlifecycle/Driverservice/speech/driver.v1.toml 只用于仍由软件包自行维护 Driver TOML 的旧实现。目前仍可使用,但计划迁移到共享 Driver;两种 Driver 不能同时注册。详见生命周期兼容流程

接口

能力约定 ID模式默认实现传输载荷(IDL)能力约定 TOML
robonix/service/speech/asrrpcgRPCasr/Recognizeservice/speech/asr.v1.toml
robonix/service/speech/asr_streamrpc_bidirectional_streamgRPCasr/RecognizeStreamservice/speech/asr_stream.v1.toml
robonix/service/speech/ttsrpcgRPCtts/Synthesizeservice/speech/tts.v1.toml
robonix/service/speech/tts_streamrpc_server_streamgRPCtts/SynthesizeStreamservice/speech/tts_stream.v1.toml
robonix/service/speech/dialogrpc_server_streamgRPC(已注册,实现不可用)speech/StartDialogservice/speech/dialog.v1.toml
robonix/service/speech/speakrpc模型上下文协议(Model Context Protocol,MCP)speech/Speakservice/speech/speak.v1.toml
robonix/service/speech/list_speakersrpcMCPspeech/ListSpeakersservice/speech/list_speakers.v1.toml
robonix/service/speech/wake_wordrpc_client_streamgRPCspeech/DetectWakeWordservice/speech/wake_word.v1.toml

speak 是“合成并直接播放”的 MCP 入口;其 targetlist_speakers 返回的扬声器 provider_id,留空时使用部署配置的默认扬声器,否则取第一个可用实例。list_speakers 只返回通过 gRPC 暴露扬声器能力的运行实例,因此返回的 ID 可以直接用于 speak.target;仅通过 ROS 2 暴露的扬声器不会出现在该列表中。tts 返回完整音频缓冲区,tts_stream 返回音频分块,两者都由调用方播放。list_speakers 列出的是播放目标,不是 TTS 音色。流式能力约定只能走 gRPC(ROS 2 不原生支持流式 RPC)。

参考实现:Robonix 源码中的 services/speechlocal 后端使用 FunASR 完成客户端连续语音交互所需的流式识别,使用 Edge TTS 完成合成;Edge TTS 仍需要访问 Microsoft 服务。Whisper 只服务于单次识别接口,当前支持不完善且默认权重超过 20 GB,不建议用于快速上手。部署也可选择腾讯云或自定义后端;腾讯云账号、密钥、引擎和清单字段见语音后端配置。某个后端初始化失败时,对应的 ASR、TTS 或唤醒词调用会返回 UNAVAILABLE

实现依据:软件包清单 · gRPC / MCP 注册 · DialogEvent IDL