2.8 KiB
2.8 KiB
Local Voice Systemd 服务配置指南
问题解决方案
核心问题
- 直接运行: 使用PulseAudio,自动转换16000Hz采样率 ✅
- systemd运行: 直接访问USB设备,只支持48000/44100Hz ❌
解决策略
通过配置systemd服务访问用户会话的PulseAudio,利用其采样率转换能力。
部署步骤
1. 上传文件到树莓派
scp local-voice.service local-voice-user.service deploy-service.sh test-audio.py zhuchaowe@192.168.101.212:~/Local-Voice/
2. 运行部署脚本
cd ~/Local-Voice
./deploy-service.sh
3. 测试音频访问
python3 test-audio.py
4. 启动服务 (推荐使用用户级服务)
# 用户级服务 (推荐)
systemctl --user start local-voice-user.service
systemctl --user enable local-voice-user.service
# 查看日志
journalctl --user -u local-voice-user.service -f
# 如果用户级服务不工作,尝试系统级服务
sudo systemctl start local-voice.service
sudo systemctl enable local-voice.service
# 查看系统服务日志
sudo journalctl -u local-voice.service -f
服务配置说明
系统级服务 (local-voice.service)
- 适用于传统systemd环境
- 添加了PulseAudio环境变量
- 包含音频设备权限
用户级服务 (local-voice-user.service)
- 推荐方案,更好的音频访问
- 自动继承用户会话环境
- 无需额外环境变量配置
故障排除
音频设备不可用
-
检查pipewire-pulse服务:
systemctl --user status pipewire-pulse systemctl --user start pipewire-pulse -
检查音频设备权限:
groups # 确认在audio组中 -
测试直接运行:
python3 multiprocess_recorder.py --enable-nfc
权限问题
如果遇到权限错误,确保用户在audio组中:
sudo usermod -a -G audio $USER
# 重新登录或重启系统
环境变量问题
如果用户级服务正常但系统级服务有问题,可能需要:
- 检查环境变量是否正确设置
- 确认pipewire-pulse服务在系统启动时运行
- 考虑使用用户级服务作为主要方案
验证步骤
- 环境测试:
python3 test-audio.py - 服务启动:
systemctl --user start local-voice-user.service - 日志监控:
journalctl --user -u local-voice-user.service -f - 功能测试: 使用NFC卡片触发录音功能
备用方案
如果上述方案不工作,可以考虑:
方案A: 使用screen会话
screen -dmS local-voice python3 ~/Local-Voice/multiprocess_recorder.py --enable-nfc
screen -r local-voice # 查看输出
方案B: 使用cron启动
在crontab中添加:
@reboot cd ~/Local-Voice && python3 multiprocess_recorder.py --enable-nfc
方案C: 修改代码支持多种采样率
如果需要修改代码支持48000Hz采样率,请告知。