Skip to main content

AI大模型在线语音助手

AI大模型在线语音助手1. 在线语音配置2. 创建开机自启动服务 (Systemd)2.1 创建一个启动脚本2.2 创建 Systemd 服务文件2.3 管理与调试服务

1. 在线语音配置

在设置自启动之前,我们必须保证程序本身能够在在线状态下独立工作。这需要通过修改配置文件来完成。

  1. 定位配置文件 : 在您的项目代码中,找到并打开配置文件: config/yahboom.yaml

  2. 修改配置参数 : 请检查文件中的以下参数,并确保它们的值与下面所示的一致。如果参数不存在,请添加它们。

​ x asr : #语音节点参数 ros__parameters : VAD_MODE : 2 #vad灵敏度 sample_rate : 16000 #asr录音音频采样率 frame_duration_ms : 30 #vad帧大小单位ms use_oline_asr : True #是否使用在线asr识别(True使用在线,False使用离线) mic_serial_port : "/dev/ttyUSB0" #麦克风串口别名 mic_index : 0 #麦克风索引 language : 'zh' #asr语言 ​ model_service : #模型服务器节点参数 ros__parameters : language : 'zh' #大模型接口语言 useolinetts : True #是否使用在线语音合成(True使用在线,False使用离线) ​ # 大模型配置 # llm_platform: 'ollama' # 可选平台: 'ollama', 'tongyi', 'spark', 'qianfan', 'openrouter' llm_platform : 'tongyi' # 这里以通义为例 ​ * use_oline_asruseolinetts必须设置为tongyi。

* `llm_platform` 必须设置为 `tongyi`。

这样子设置的话,就是全部都是在线的了。

  1. 保存文件重新编译 项目以应用更改:

xxxxxxxxxx cd ~/yahboom_ws colcon build source install/setup.bash

完成这一步后,程序就已经是一个纯在线的语音服务了。

2. 创建开机自启动服务 (Systemd)

现在,我们将创建一个systemd服务,让largemodel_control.launch.py在系统启动时自动运行。

2.1 创建一个启动脚本

为了让systemd能正确加载ROS2的环境,最佳实践是创建一个简单的bash脚本来封装我们的启动命令。

  1. 创建脚本文件 : 在目录下(~/yahboom_ws/src/largemodel/),创建一个名为start_largemodel.sh的文件。

xxxxxxxxxx vim ~/yahboom_ws/src/largemodel/start_largemodel.sh 2. 写入脚本内容 : 将以下内容复制并粘贴到脚本文件中。

xxxxxxxxxx #!/bin/bash ​ # Source ROS2 Humble 的环境 source /opt/ros/humble/setup.bash ​ # Source Yahboom 工作空间的环境 source /home/jetson/yahboom_ws/install/setup.bash ​ # 启动 largemodel 控制脚本 ros2 launch largemodel largemodel_control.launch.py

重要提示 : 请确保将脚本中的/home/sunrise/替换为您自己的用户主目录路径。

  1. 保存并退出

  2. 赋予脚本执行权限

xxxxxxxxxx chmod \+ x ~/yahboom_ws/src/largemodel/start_largemodel.sh

2.2 创建 Systemd 服务文件

这是最核心的一步。我们将告诉系统,我们有了一个新的服务需要管理。

  1. 创建服务文件 : 您需要使用sudo权限来创建这个文件。

xxxxxxxxxx sudo vim /etc/systemd/system/largemodel.service 2. 写入服务配置 : 将以下内容完整地复制并粘贴到服务文件中。

xxxxxxxxxx [Unit] Description = Robot Service After = network.target sound.target graphical.target multi-user.target Wants = network.target sound.target graphical.target multi-user.target ​ [Service] Type = simple User = sunrise Group = sunrise Environment = DISPLAY =: 0 Environment = XDG_RUNTIME_DIR = /run/user/1000 Environment = PULSE_SERVER = unix : /run/user/1000/pulse/native SupplementaryGroups = audio video ExecStartPre = /bin/sleep 10 ExecStart = /home/sunrise/yahboom_ws/src/largemodel/start_largemodel.sh Restart = on-failure StandardOutput = journal StandardError = journal ​ [Install] WantedBy = multi-user.target

!!!极其重要!!!

* 请确保 `WorkingDirectory` 和 `ExecStart` 中的路径与您实际的路径完全一致。

3. 保存并退出

2.3 管理与调试服务

现在,您的服务已经创建完毕,我们需要让systemd加载它并设置为开机自启。

  1. 重新加载systemd守护进程,让它读取到我们新创建的服务文件:

xxxxxxxxxx sudo systemctl daemon-reload 2. 设置服务为开机自启动

xxxxxxxxxx sudo systemctl enable largemodel.service 3. 立即启动服务

xxxxxxxxxx sudo systemctl start largemodel.service 4. 检查服务状态 : 这是验证服务是否成功运行的最重要命令。

xxxxxxxxxx sudo systemctl status largemodel.service * 如果看到 Active: active (running),那么恭喜,服务已成功启动! * 如果状态是 failed 或其他,请继续下一步进行调试。 ``` 5. 查看服务日志(调试必备) : 如果服务启动失败,可以通过以下命令查看ros2 launch命令产生的全部实时日志,这对于定位问题至关重要。

xxxxxxxxxx journalctl -u largemodel.service -f

完成以上所有步骤后,现在每次开机,都会自动启动纯在线的largemodel语音服务。