语音控制
本模块提供机器人语音相关的所有功能,包括语音识别、语音合成、语音控制等。
voice 高层接口(推荐)
底层 ROS2 接口 — voice.say
组合调用,依次触达以下 ROS2 通道(均经 Speech 单例转发):
经
Speech.enable_tts转发 — Servicestd_srvs/srv/SetBool,名称/speech/enable_tts_engine(自动启用 TTS 引擎,request.data = True)。volume非 None 时经Speech.set_volume转发 — Servicespeech_interface/srv/SetVolume,名称/speech/set_volume。经
Speech.generate_audio转发 — Actionspeech_interface/action/GenerateAudio,名称/speech/generate_audio。
参数映射:
封装参数 |
原生字段 |
|---|---|
|
|
|
|
|
|
|
|
|
客户端行为,不下发 |
底层 ROS2 接口 — voice.wait_for_say
经 Speech.wait_for_generate_audio 转发 — 客户端行为,不下发:仅等待最近一次非阻塞 generate_audio(Action speech_interface/action/GenerateAudio,名称 /speech/generate_audio)在客户端缓存的结果 future,不发起新的 ROS2 请求。
底层 ROS2 接口 — voice.stop_say
经 Speech.stop_playing_tts 转发。
类型: Service
std_srvs/srv/SetBool名称:
/speech/stop_playing_tts参数映射:
封装参数 |
原生字段(Request) |
|---|---|
(固定 |
|
|
客户端行为,不下发 |
底层 ROS2 接口 — voice.listen
组合调用(经 Speech 单例转发):
经
Speech.enable_asr转发 — Servicestd_srvs/srv/SetBool,名称/speech/enable_asr_engine(自动启用 ASR 引擎,request.data = True)。经
Speech.register_asr_callback转发 — Topic 订阅/speech/asr_result(speech_interface/msg/AsrResult),仅注册进程内回调。
callback / hints / block / timeout / hint_callbacks 均为客户端行为,不下发。
底层 ROS2 接口 — voice.stop_listen
经 Speech.register_asr_callback(None) 转发 — 客户端行为,不下发:仅注销进程内 ASR 回调,不发起 ROS2 通信(/speech/asr_result 的 Topic 订阅本身保持存在)。
底层 ROS2 接口 — voice.wait_for_awaken
组合调用(经 Speech 单例转发):
经
Speech.enable_hexaware转发 — Servicestd_srvs/srv/SetBool,名称/speech/enable_hexaware(自动启用唤醒引擎,request.data = True)。经
Speech.register_hexaware_callback转发 — Topic 订阅/speech/hexaware_awaken(std_msgs/msg/String),仅注册进程内回调。
callback / block / timeout 均为客户端行为,不下发。
底层 ROS2 接口 — voice.set_volume
经 Speech.set_volume 转发。
类型: Service
speech_interface/srv/SetVolume名称:
/speech/set_volume参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
底层 ROS2 接口 — ListenHandle
ListenHandle 的各方法/属性均为客户端行为,不发起 ROS2 通信;其中 handle.stop() 会经 Speech.register_asr_callback(None) 注销进程内 ASR 回调(Topic 订阅本身保持存在)。
底层接口(精细控制)
单例与基础
- static Speech.get_instance()
Get the singleton instance of Speech.
- Returns:
Singleton instance.
- Return type:
Speech
Examples:
speech = Speech.get_instance()
底层 ROS2 接口
无 ROS2 通道:进程内获取 Speech 单例,客户端行为,不下发。
AFE (音频前处理)
- Speech.enable_afe_engine(enable, block=True, timeout=5)
Enable or disable Audio Front End (AFE) engine.
- Parameters:
- Return type:
EnableServiceResponse- Returns:
EnableAfeEngineResponse.
Examples:
# Enable AFE enable_afe_engine(True) # Disable AFE with custom timeout enable_afe_engine(False, timeout=10)
- Parameters:
block (
bool) –
底层 ROS2 接口
类型: Service
std_srvs/srv/SetBool名称:
/speech/enable_afe_engine参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
- Speech.enable_aec(enable, block=True, timeout=5)
Enable or disable Acoustic Echo Cancellation (AEC).
- Parameters:
- Return type:
EnableServiceResponse- Returns:
EnableAecResponse.
Examples:
enable_aec(True) enable_aec(False, timeout=8)
- Parameters:
block (
bool) –
底层 ROS2 接口
类型: Service
std_srvs/srv/SetBool名称:
/speech/enable_aec参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
- Speech.enable_speech_enhance(enable, block=True, timeout=5)
Enable or disable speech enhancement.
- Parameters:
- Return type:
EnableServiceResponse- Returns:
EnableSpeechEnhanceResponse.
Examples:
enable_speech_enhance(True) enable_speech_enhance(False)
- Parameters:
block (
bool) –
底层 ROS2 接口
类型: Service
std_srvs/srv/SetBool名称:
/speech/enable_speech_enhance参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
- Speech.set_bypass(bypass, block=True, timeout=5)
Set AFE bypass mode.
- Parameters:
- Return type:
EnableServiceResponse- Returns:
SetBypassResponse.
Examples:
set_bypass(True) set_bypass(False, timeout=10)
- Parameters:
block (
bool) –
底层 ROS2 接口
类型: Service
std_srvs/srv/SetBool名称:
/speech/set_bypass参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
- Speech.mute_clean_mic(mute, block=True, timeout=5)
Mute or unmute clean microphone.
- Parameters:
- Return type:
EnableServiceResponse- Returns:
MuteCleanMicResponse.
Examples:
mute_clean_mic(True) mute_clean_mic(False, timeout=6)
- Parameters:
block (
bool) –
底层 ROS2 接口
类型: Service
std_srvs/srv/SetBool名称:
/speech/mute_clean_mic参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
ASR (语音识别)
- Speech.enable_asr(enable, block=True, timeout=30)
Enable or disable Automatic Speech Recognition (ASR).
- Parameters:
- Return type:
EnableServiceResponse- Returns:
EnableAsrResponse.
Examples:
enable_asr(True) enable_asr(False, timeout=8)
- Parameters:
block (
bool) –
底层 ROS2 接口
类型: Service
std_srvs/srv/SetBool名称:
/speech/enable_asr_engine参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
- Speech.switch_asr_device(device_name, timeout=5)
Switch ASR input device.
- Parameters:
- Return type:
EnableServiceResponse- Returns:
SwitchAsrDeviceResponse.
Examples:
switch_asr_device("default") switch_asr_device("mic_array", timeout=10)
底层 ROS2 接口
类型: Service
speech_interface/srv/SwitchAsrDevice名称:
/speech/switch_asr_device参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
KWS (关键词唤醒)
- Speech.enable_hexaware(enable, block=True, timeout=5)
Enable or disable Hexaware wake word detection.
- Parameters:
- Return type:
EnableServiceResponse- Returns:
EnableHexawareResponse.
Examples:
enable_hexaware(True) enable_hexaware(False, timeout=8)
- Parameters:
block (
bool) –
底层 ROS2 接口
类型: Service
std_srvs/srv/SetBool名称:
/speech/enable_hexaware参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
- Speech.enable_kws(enable, block=True, timeout=5)
Enable or disable keyword spotting (KWS).
- Parameters:
- Return type:
EnableServiceResponse- Returns:
EnableKwsResponse.
Examples:
enable_kws(True) enable_kws(False, timeout=8)
- Parameters:
block (
bool) –
底层 ROS2 接口
类型: Service
std_srvs/srv/SetBool名称:
/speech/enable_kws参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
TTS (语音合成)
- Speech.enable_tts(enable, block=True, timeout=30)
Enable or disable Text-to-Speech (TTS) engine.
- Parameters:
- Return type:
EnableServiceResponse- Returns:
EnableTtsResponse.
Examples:
enable_tts(True) enable_tts(False, timeout=8)
- Parameters:
block (
bool) –
底层 ROS2 接口
类型: Service
std_srvs/srv/SetBool名称:
/speech/enable_tts_engine参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
- Speech.stop_playing_tts(enable, block=True, timeout=5)
Stop playing current TTS audio.
- Parameters:
- Return type:
EnableServiceResponse- Returns:
StopPlayingTtsResponse.
Examples:
stop_playing_tts(True) stop_playing_tts(True, timeout=8)
- Parameters:
block (
bool) –
底层 ROS2 接口
类型: Service
std_srvs/srv/SetBool名称:
/speech/stop_playing_tts参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
- Speech.switch_tts_device(device_name, timeout=5)
Switch TTS output device.
- Parameters:
- Return type:
EnableServiceResponse- Returns:
SwitchTtsDeviceResponse.
Examples:
switch_tts_device("default") switch_tts_device("speaker", timeout=10)
底层 ROS2 接口
类型: Service
speech_interface/srv/SwitchTtsDevice名称:
/speech/switch_tts_device参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
- Speech.set_volume(volume, timeout=5)
Set TTS playback volume.
- Parameters:
- Return type:
EnableServiceResponse- Returns:
SetVolumeResponse.
Examples:
set_volume(0.5) set_volume(1.0, timeout=10)
底层 ROS2 接口
类型: Service
speech_interface/srv/SetVolume名称:
/speech/set_volume参数映射:
封装参数 |
原生字段(Request) |
|---|---|
|
|
|
客户端行为,不下发 |
- Speech.generate_audio(text, sid=0, speed=1.0, block=True, timeout=60, complete_cb=None, feedback_cb=None)
Generate and play audio from text.
- Parameters:
text (
str) – Text to convert to speech.sid (
int) – Speaker ID (default: 0).speed (
float) – Speech speed (default: 1.0).block (
bool) – Whether to block until completion (default: True).timeout (
int) – Timeout in seconds (default: 60).complete_cb (
callable) – Callback for completion (default: None).feedback_cb (
callable) – Callback for progress updates (default: None).
- Return type:
GenerateAudioResponse- Returns:
GenerateAudioResponse.
Examples:
# Simple usage generate_audio("Hello, world!") # Customize speaker and speed generate_audio("Hello", sid=1, speed=1.2) # Non-blocking generate_audio(text="Hello", block=False) # With callbacks def on_complete(response): print(f"Done: {response.result.message}") def on_progress(event): print(f"Progress: {event.progress * 100:.1f}%") generate_audio("Hello", complete_cb=on_complete, feedback_cb=on_progress)
底层 ROS2 接口
类型: Action
speech_interface/action/GenerateAudio名称:
/speech/generate_audio参数映射:
封装参数 |
原生字段(Goal) |
|---|---|
|
|
|
|
|
|
|
客户端行为,不下发 |
|
客户端行为,不下发(分别消费该 Action 的 Result / Feedback,仅当次调用生效) |
- Speech.wait_for_generate_audio(timeout=30)
Wait for the most recent non-blocking generate_audio call to complete.
Speech internally caches the last GenerateAudioResponse, so no resp argument is needed. Equivalent to the manual pattern:
if resp.has_future(): if resp.future.wait_for(timeout=30): result = resp.future.get() else: # timeout / canceled
- Parameters:
timeout (
int) – Seconds to wait (default: 30). 0 means wait indefinitely.- Return type:
GenerateAudioResult- Returns:
GenerateAudioResult with success=True on completion, or success=False and message=”Timeout or canceled” on failure.
Examples:
speech.generate_audio("Hello", block=False) # do other work ... result = speech.wait_for_generate_audio(timeout=30) if result.success: print("Done:", result.message) else: print("Failed:", result.message)
底层 ROS2 接口
无独立 ROS2 通道:纯客户端行为——等待最近一次非阻塞 generate_audio(Action
speech_interface/action/GenerateAudio,名称 /speech/generate_audio)在客户端
缓存的 result future,不发起任何新的 ROS2 请求;timeout 为客户端等待时长
(0 = 无限等待)。
- Speech.cancel_generate_audio(timeout=5)
Cancel ongoing audio generation.
- Parameters:
timeout (
int) – Timeout in seconds (default: 5).- Return type:
EnableServiceResponse- Returns:
CancelGenerateAudioResponse.
Examples:
# Cancel current audio generation cancel_generate_audio() # Cancel with custom timeout cancel_generate_audio(timeout=8)
底层 ROS2 接口
类型: Action 取消请求(rclcpp_action 内置取消通道
action_msgs/srv/CancelGoal)名称:
/speech/generate_audio(对当前活动 goal 调async_cancel_goal)参数映射:
封装参数 |
原生字段 |
|---|---|
|
客户端行为,不下发 |
事件回调
- Speech.register_asr_callback(callback=None)
Register callback for ASR (speech recognition) results.
- Parameters:
callback (
callable) – Callback function that receives AsrResultEvent. Pass None to unregister.- Return type:
- Returns:
None.
Examples:
def on_asr(event): print(f"Recognized: {event.text}") register_asr_callback(on_asr) # Unregister register_asr_callback(None)
底层 ROS2 接口
类型: Topic 订阅
speech_interface/msg/AsrResult名称:
/speech/asr_result说明: 订阅在
Speech初始化时已创建;本方法仅注册/注销进程内回调(客户端行为,不下发)。
- Speech.register_hexaware_callback(callback=None)
Register callback for wake word detection.
- Parameters:
callback (
callable) – Callback function that receives HexawareAwakenEvent. Pass None to unregister.- Return type:
- Returns:
None.
Examples:
def on_wake_word(event): print(f"Wake word detected: {event.keyword}") register_hexaware_callback(on_wake_word) register_hexaware_callback(None)
底层 ROS2 接口
类型: Topic 订阅
std_msgs/msg/String名称:
/speech/hexaware_awaken说明: 订阅在
Speech初始化时已创建;本方法仅注册/注销进程内回调(客户端行为,不下发)。
- Speech.register_kws_message_callback(callback=None)
Register callback for keyword spotting messages.
- Parameters:
callback (
callable) – Callback function that receives KwsMessageEvent. Pass None to unregister.- Return type:
- Returns:
None.
Examples:
def on_kws_message(event): print(f"KWS message: {event.message}") register_kws_message_callback(on_kws_message) register_kws_message_callback(None)
底层 ROS2 接口
类型: Topic 订阅
std_msgs/msg/String名称:
/speech/kws_message说明: 订阅在
Speech初始化时已创建;本方法仅注册/注销进程内回调(客户端行为,不下发)。
- Speech.register_nlu_format_callback(callback=None)
Register callback for NLU format messages.
- Parameters:
callback (
callable) – Callback function that receives NluFormatEvent. Pass None to unregister.- Return type:
- Returns:
None.
Examples:
def on_nlu_format(event): print(f"Input: {event.input_text}, Format: {event.format_text}") register_nlu_format_callback(on_nlu_format) register_nlu_format_callback(None)
底层 ROS2 接口
类型: Topic 订阅
speech_interface/msg/NluFormat名称:
/speech/nlu_format说明: 订阅在
Speech初始化时已创建;本方法仅注册/注销进程内回调(客户端行为,不下发)。
- Speech.register_generate_audio_callbacks(complete_cb, feedback_cb)
Register callbacks for audio generation progress and completion.
- Parameters:
complete_cb (
callable) – Callback for completion, receives GenerateAudioResponse.feedback_cb (
callable) – Callback for progress updates, receives GenerateAudioProgressEvent.
- Return type:
- Returns:
None.
Examples:
def on_complete(response): print(f"Audio generation complete: {response.result.message}") def on_progress(event): print(f"Progress: {event.progress * 100:.1f}%") register_generate_audio_callbacks(on_complete, on_progress)
底层 ROS2 接口
无独立 ROS2 通道:进程内注册 Action speech_interface/action/GenerateAudio(名称 /speech/generate_audio)的 Result / Feedback 回调,客户端行为,不下发。