解决CosyVoice Linux安装后缺失预训练音色的技术方案与避坑指南
关键词:cosyvoice linux安装后页面没有预训练音色、模型热加载、依赖解析、AI辅助开发
现象速览
“页面能跑,音色全无”——这是不少开发者在 Linux 服务器上第一次pip install cosyvoice后最常见的吐槽。Web UI 正常弹出,下拉框里却空空如也,TTS 接口返回voice not found,日志里偶尔飘着model checksum mismatch或sox missing。
如果直接点“合成”,只能听到一段尴尬的空白音频。
根因拆解
先给结论,再逐层展开:
- 预训练权重未随 PyPI 包分发,官方把 1.2 GB 的
.pt文件托管在 Git LFS,安装脚本默认跳过下载。 - 路径硬编码在
cosyvoice/config/paths.yaml,Linux 下若用--user安装,会在/home/$USER/.local/与系统级/usr/local/lib/之间来回漂移,导致模型热加载失败。 - sox、libsndfile 等动态库缺失,音色解码器初始化直接抛
RuntimeError: sndfile library not found。 - 文件权限掩码问题:手动
wget下来的权重若保留 600,worker 进程以www-data运行时无权读取,日志却只会淡淡地写一句voice load timeout。
分步解决方案
下面给出一条从 0 到 1 的可回滚路径,全部在 Ubuntu 22.04 + Python 3.10 验证通过,其他发行版把apt换成对应包管理即可。
1. 建立隔离环境
# 用 conda 拉起纯净环境,避免与系统 numpy 冲突 conda create -n cosy python=3.10 sox libsndfile -y conda activate cosy2. 安装 CosyVoice 本体(不急于一步到位)
# 先装不含权重的轻量包 pip install cosyvoice-light # 此时 import 会提示 “pre-trained voices not found, skipped”3. 手动拉取预训练权重
官方仓库使用 Git LFS,服务器若无git lfs命令,需先补装:
sudo apt update && sudo apt install git-lfs git lfs install新建一个专门放权重的目录,与代码分离,方便后续做只读挂载或 NFS 共享:
VOICE_ROOT=/data/cosyvoice/voices mkdir -p $VOICE_ROOT && cd $VOICE_ROOT git clone https://huggingface.co/cosyvoice/pretrained-voices . # 目录结构如下: # . # ├── female-medium.tar # ├── male-low.tar # └── checksums.sha256校验完整性:
sha256sum -c checksums.sha256 # 全部 OK 再继续,否则重拉4. 修正路径配置
CosyVoice 在首次import时会按以下优先级读取paths.yaml:
- 环境变量
COSY_VOICE_PATHS - 当前工作目录下的
./cosyvoice/paths.yaml - 包内默认
cosyvoice/config/paths.yaml
我们采用方案 1,最利于 CI/CD:
cat > $VOICE_ROOT/paths.yaml <<'EOF' voices: root: /data/cosyvoice/voices female-medium: female-medium.tar male-low: male-low.tar EOF export COSY_VOICE_PATHS=$VOICE_ROOT/paths.yaml把export写进.bashrc或 systemd service 的Environment=字段,确保 worker 进程能拿到。
5. 权限与依赖二次检查
# 1) 动态库 ldconfig -p | grep sndfile || sudo apt install libsndfile1-dev # 2) 权重目录 chmod -R 644 $VOICE_ROOT find $VOICE_ROOT -type d -exec chmod 755 {} \; # 3) 若用 nginx + gunicorn,确保用户一致 sudo usermod -a -G voice www-data # 把 www-data 加入 voice 组6. 热加载测试脚本
#!/usr/bin/env python3 # test_voice.py import os, sys, logging, time logging.basicConfig(level=logging.INFO) # 强制刷新路径 os.environ["COSY_VOICE_PATHS"] = "/data/cosyvoice/voices/paths.yaml" from cosyvoice import TTS def warm(): t0 = time.time() engine = TTS() # 内部会执行 voice_manager.load_all() print("Voices:", engine.list_voices()) print("Load latency: {:.2f}s".format(time.time() - t0)) if __name__ == "__main__": try: warm() except Exception as e: logging.exception("Load failed") sys.exit(2)运行:
python test_voice.py # 期望输出: # Voices: ['female-medium', 'male-low'] # Load latency: 1.34s若仍为空列表,把日志级别调到DEBUG再跑一次,90% 能定位到Permission denied或tarfile.ReadError。
性能与内存考量
- 模型热加载 vs 预加载
生产环境建议预加载——在 gunicornpost_fork钩子内完成TTS()初始化,子进程复用同一块只读内存(Linux COW),实测 4 worker 常驻服务器常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻常驻