使用安卓设备运行 vits 语音合成
配置不难就是坑多,而且完全不可用。
PRoot 与 chroot
chroot 和 PRoot的一个主要区别是 chroot 是原生的。
PRoot通过使用 ptrace() 劫持系统调用参数和返回值来伪造文件系统布局和用户/组ID。
chroot不造成额外的开销,在任何设备上都不会出现问题,但是它需要root权限。
所以基于PRoot的 UserLAnd 和 Termux 并不适合。
一开始用 UserLAnd 配置环境倒是没问题,但是执行到 pip install package 的时候就报 Permission Denied 错误。
root
闲置机器是 Nubia Z9,安卓 5.2 版本直接线刷回出厂版本后使用 Kingroot 一键 root。
不得不说这块屏幕和金属边框设计放到 2023 年还是很漂亮,最近新出的 Z50 Ultra 也是类似设计。

可惜的是 骁龙810 + 电池 2900毫安 + 3G 运行内存。810 在日常室温使用只能用烫手来形容,加上扎实的手感,拿起来怕摔加保护壳又没手感+升温,当日常备用机完全不合适。
LinuxDeploy
仓库地址:LinuxDeploy
基本按图里面的配置或者全程科学上网都没有什么问题,BusyBox 实测是不需要的。
架构选 ARM64 即可,系统一定要选 LTS Release,非 LTS 不支持 deadsnakes 源,apt get install python3.7 肯定比源码编译快多了。当然,想尝试花一个小时从源码编译 Python3.7 我也不拦着(
坑1:系统版本
Ubuntu 16.04.7 LTS (Xenial Xerus) 默认 Python3.5 安装 pytorch 会报错。
Ubuntu 22.04.2 LTS (Jammy Jellyfish) 的 Python3.10 则有依赖问题。
坑2:extract/ssh start failed
一开始想自动分配空间,安装类型选了目录而不是镜像文件。
全程科学上网或换国内源安装均会报错,开 debug 提示 /bin/su no such file or directory。

没找到好的解决方法,如果可以目录安装还是建议用目录,镜像分配空间不管大小都不是很合适。
坑3:默认分配的镜像大小是 2G
你可以想象一下编译了一个小时的 Python3.7 + 安装依赖不报错的情况下,突然提示空间分配不足且找不到扩容方法的心情吗。
部署
基本按照图里的设置就能成功部署起来了,填写国内镜像源,勾选 SSH 服务,挂载点、声音、图形都不需要。

从 dash 切换到 bash
启动成功之后 SSH 连进去即可。 运行下面代码 选 no 重新进终端即可。
|
|

|
|
安装 Python3.7 & pip
No module named 'distutils.util 报错是因为没安装 python3.7-distutils。
error: command ‘/usr/bin/aarch64-linux-gnu-gcc’ failed with exit code 1 报错是因为没安装 python3.7-dev。
|
|
坑4:不要使用国内 pip 源
安装 pyopenjtalk 和其他依赖会报 403 错误。
配置虚拟环境
|
|
vits
提供局域网内一个 Clash 的代理,如果直连 pypi 官方源速度很快则不需要。
|
|
修改 requirements.txt,三个 torch 后面的 –extra-index-url 都去掉(使用 CPU 推理)。
只做推理不需要demucs、openai-whisper、gradio,再加上 fastapi、uvicorn、loguru。
|
|
api.py 和 server.py 参考 vits-mandarin-windows 即可。
只能说这个推理速度完全不意外,又是折腾没结果的一天。

2023 年两台手机用蓝牙传图有种时代落幕感
