fix run issues

This commit is contained in:
NuoDaJia02
2026-01-30 10:53:07 +08:00
parent aaa17c10f2
commit ed861a9fb1
8 changed files with 14 additions and 43 deletions

View File

@@ -7,7 +7,7 @@ endif()
find_package(ament_cmake REQUIRED)
find_package(ament_cmake_python REQUIRED)
find_package(rosidl_default_generators REQUIRED)
find_package(interfaces REQUIRED)
# 确保使用系统 Python而不是 conda/miniconda 的 Python
find_program(PYTHON3_CMD python3 PATHS /usr/bin /usr/local/bin NO_DEFAULT_PATH)
@@ -19,13 +19,6 @@ if(PYTHON3_CMD)
set(PYTHON_EXECUTABLE ${PYTHON3_CMD} CACHE FILEPATH "Python executable" FORCE)
endif()
rosidl_generate_interfaces(${PROJECT_NAME}
"srv/ASRRecognize.srv"
"srv/TTSSynthesize.srv"
"srv/VADEvent.srv"
"srv/AudioData.srv"
)
install(CODE "
execute_process(
COMMAND ${PYTHON3_CMD} -m pip install --prefix=${CMAKE_INSTALL_PREFIX} --no-deps ${CMAKE_CURRENT_SOURCE_DIR}
@@ -77,25 +70,6 @@ if robot_speaker_src:
print(f'Copied robot_speaker from {robot_speaker_src} to {ros2_site_packages}')
else:
print(f'robot_speaker already in correct location')
# 复制 ROS2 生成的 srv 模块rosidl_generate_interfaces 生成的)
rosidl_py_src = os.path.join(build_dir, 'rosidl_generator_py', 'robot_speaker')
if os.path.exists(rosidl_py_src):
# 复制 srv 目录
srv_src = os.path.join(rosidl_py_src, 'srv')
srv_dest = os.path.join(robot_speaker_dest, 'srv')
if os.path.exists(srv_src):
if os.path.exists(srv_dest):
shutil.rmtree(srv_dest)
shutil.copytree(srv_src, srv_dest)
print(f'Copied srv module to {srv_dest}')
# 复制生成的接口文件(.so 和 .c 文件)
for pattern in ['robot_speaker_s__rosidl_typesupport*.so', '_robot_speaker_s*.c']:
for file in glob.glob(os.path.join(rosidl_py_src, pattern)):
dest_file = os.path.join(robot_speaker_dest, os.path.basename(file))
shutil.copy2(file, dest_file)
print(f'Copied {os.path.basename(file)} to {robot_speaker_dest}')
# 处理 entry_points 脚本
lib_dir = os.path.join(install_prefix, 'lib', 'robot_speaker')

View File

@@ -55,12 +55,12 @@ system:
session_timeout: 3.0 # 会话超时时间(秒)
shutup_keywords: "bi zui" # 闭嘴指令关键词(拼音,逗号分隔)
interrupt_command_queue_depth: 10 # 中断命令订阅的队列深度QoS
sv_enabled: true # 是否启用声纹识别
# sv_model_path: "~/hivecore_robot_os1/voice_model" # 声纹模型路径
sv_model_path: "~/ros_learn/speech_campplus_sv_zh-cn_16k-common" # 声纹模型路径
sv_enabled: false # 是否启用声纹识别
sv_model_path: "~/hivecore_robot_os1/voice_model" # 声纹模型路径
# sv_model_path: "~/ros_learn/speech_campplus_sv_zh-cn_16k-common" # 声纹模型路径
sv_threshold: 0.65 # 声纹识别阈值0.0-1.0,值越小越宽松,值越大越严格)
# sv_speaker_db_path: "~/hivecore_robot_os1/config/speakers.json" # 声纹数据库保存路径JSON格式相对于ROS2包share目录
sv_speaker_db_path: "~/ros_learn/hivecore_robot_voice/config/speakers.json" # 声纹数据库保存路径JSON格式相对于ROS2包share目录
sv_speaker_db_path: "~/hivecore_robot_os1/config/speakers.json" # 声纹数据库保存路径JSON格式相对于ROS2包share目录
# sv_speaker_db_path: "~/ros_learn/hivecore_robot_voice/config/speakers.json" # 声纹数据库保存路径JSON格式相对于ROS2包share目录
sv_buffer_size: 96000 # 声纹验证录音缓冲区大小样本数48kHz下2秒=96000
continue_without_image: true # 多模态意图skill_sequence/chat_camera未获取到图片时是否继续推理
@@ -69,5 +69,5 @@ camera:
jpeg_quality: 85 # JPEG压缩质量0-10085是质量和大小平衡点
interfaces:
# root_path: "~/hivecore_robot_os1/hivecore_robot_interfaces/src" # 接口文件根目录,支持 ~ 展开和相对路径
root_path: "~/ros_learn/hivecore_robot_interfaces/src" # 接口文件根目录,支持 ~ 展开和相对路径
root_path: "~/hivecore_robot_os1/hivecore_robot_interfaces/src" # 接口文件根目录,支持 ~ 展开和相对路径
# root_path: "~/ros_learn/hivecore_robot_interfaces/src" # 接口文件根目录,支持 ~ 展开和相对路径

View File

@@ -15,9 +15,6 @@
<depend>interfaces</depend>
<buildtool_depend>ament_cmake</buildtool_depend>
<buildtool_depend>ament_cmake_python</buildtool_depend>
<buildtool_depend>rosidl_default_generators</buildtool_depend>
<exec_depend>rosidl_default_runtime</exec_depend>
<member_of_group>rosidl_interface_packages</member_of_group>
<exec_depend>python3-pyaudio</exec_depend>
<exec_depend>python3-requests</exec_depend>

View File

@@ -9,7 +9,7 @@ import queue
import rclpy
from rclpy.node import Node
from ament_index_python.packages import get_package_share_directory
from robot_speaker.srv import ASRRecognize, AudioData, VADEvent
from interfaces.srv import ASRRecognize, AudioData, VADEvent
from robot_speaker.core.speaker_verifier import SpeakerVerificationClient
from pypinyin import pinyin, Style

View File

@@ -15,7 +15,7 @@ import os
import yaml
from typing import Optional
from ament_index_python.packages import get_package_share_directory
from robot_speaker.srv import VADEvent, ASRRecognize, TTSSynthesize, AudioData
from interfaces.srv import VADEvent, ASRRecognize, TTSSynthesize, AudioData
from openai import OpenAI
from robot_speaker.core.context_manager import ConversationHistory
from robot_speaker.core.speaker_verifier import SpeakerVerificationClient, SpeakerState

View File

@@ -29,8 +29,8 @@ class SpeakerVerificationClient:
self._lock = threading.Lock()
# # 优化CPU性能限制Torch使用的线程数防止多线程竞争导致性能骤降
# import torch
# torch.set_num_threads(1)
import torch
torch.set_num_threads(1)
from funasr import AutoModel
model_path = os.path.expanduser(self.model_path)

View File

@@ -1,6 +1,6 @@
import rclpy
from rclpy.node import Node
from robot_speaker.srv import ASRRecognize, AudioData, VADEvent
from interfaces.srv import ASRRecognize, AudioData, VADEvent
import threading
import queue
import time

View File

@@ -1,7 +1,7 @@
import rclpy
from rclpy.node import Node
from rclpy.callback_groups import ReentrantCallbackGroup
from robot_speaker.srv import TTSSynthesize
from interfaces.srv import TTSSynthesize
import threading
import yaml
import os