RVC Termux Android
Last update: March 17, 2026
Last Tested on Honor 90 Lite — Termux v0.118.3 — proot-distro v4.38.0 — Ubuntu 25.10 (Questing)
Introduction
This guide allows you to run RVC Locally on your Android phone via Termux, a Linux Terminal Emulator.
After setup, it can work without the Internet. Setup time depends on your internet speed.
Performance depends on your phone's CPU speed. It's recommended to only do inference. Long audios can cause the app to crash, it's best to split audios, especially on 6 GB RAM phones.
TTS Offline is not available, as Applio uses the Microsoft Edge API.
Warning
DO IT AT YOUR OWN RISK. There is a possibility of overheat or damage to your device, especially when Training or on older devices. This guide is more for experimenting rather than for actual heavy usage.
Requirements
CPU Architecture
Most modern phones use aarch64 (also known as arm64). You can verify yours by running uname -m after downloading Termux.
Download Termux
Download Termux from its GitHub Installation Page. The F-Droid method is recommended.
Setup Environment
Run each command in order inside Termux:
1. Install packages and set up Ubuntu in Termux. Allow storage access if prompted.
pkg update && pkg upgrade -y && termux-setup-storage && pkg install git proot proot-distro -y && proot-distro install ubuntu && proot-distro login ubuntu
What to expect
On a fresh Termux install, pkg update will first test all available mirrors and automatically pick the best one. This is normal and can take up to a minute. The rest of the command will then download and install Ubuntu inside Termux, which may take a few minutes depending on your connection speed.
If you have used Termux before, you may see a prompt like this during pkg upgrade:
Configuration file '/data/data/com.termux/files/usr/etc/bash.bashrc'
==> File on system created by you or by a script.
==> File also in package provided by package maintainer.
What would you like to do about it ?
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
*** bash.bashrc (Y/I/N/O/D/Z) [default=N] ?
This can appear for multiple config files. In most cases it is safe to type Y and press Enter to accept the maintainer's version.
2. Update package lists and the distribution:
apt update -y && apt dist-upgrade -y
3. Install required packages:
apt install git libportaudio2 -y
Python
Python does not need to be installed manually. The Applio installer downloads and manages its own Python 3.12 environment via UV.
Realtime tab
The Realtime tab requires selecting audio input/output devices. On Android, proot has no access to the device audio layer, so no devices will appear and the Realtime tab cannot function. There is also no Virtual Audio Cable available on Android without root.
libportaudio2 is still required above to prevent Applio from crashing on startup when it loads the tab.
4. Set the maximum HTTP/HTTPS push buffer size to 2 GB:
git config --global http.postBuffer 2097152000 && git config --global https.postBuffer 2097152000
5. Force HTTP/1.1 to prevent framing layer errors:
git config --global http.version HTTP/1.1
6. Ensure localhost is properly defined:
echo "127.0.0.1 127.0.0.0 localhost" >> /etc/hosts
Applio Setup
1. Clone the Applio repository (uses the latest main branch by default):
git clone https://github.com/IAHispano/Applio && cd Applio
Specific Release
To pin to a specific release, append --branch <your_branch_name> --single-branch after the URL. For example:
git clone https://github.com/IAHispano/Applio --branch 3.6.2 --single-branch && cd Applio
2. Patch the installer and requirements before running them.
proot-distro has several limitations that break UV's default behaviour. The following patches address all of them:
run-install.shneedssudoremoved (not available in proot),UV_LINK_MODE=copyandUV_NO_CACHE=1exported so UV installs directly into the venv without cross-filesystem hardlinks or cache references (both of which proot breaks),--python-platform aarch64-unknown-linux-gnuadded so UV resolves aarch64 wheels instead of defaulting to x86_64, and its CUDA PyTorch index changed to the CPU one while keeping it as--extra-index-urlso PyPI stays available for all other packages.requirements.txthardcodes+cu128builds of torch/torchaudio/torchvision for Linux (no aarch64 wheels exist for these).
Run all patches in one go:
sed -i 's/sudo //g' run-install.sh \
&& sed -i '/^set -e/a export UV_LINK_MODE=copy\nexport UV_NO_CACHE=1' run-install.sh \
&& sed -i 's|uv pip install|uv pip install --python-platform aarch64-unknown-linux-gnu|g' run-install.sh \
&& sed -i 's|--extra-index-url https://download.pytorch.org/whl/cu[0-9]*|--extra-index-url https://download.pytorch.org/whl/cpu|g' run-install.sh \
&& sed -i 's|torch==\([^+;]*\)+cu[0-9]*|torch==\1|g' requirements.txt \
&& sed -i 's|torchaudio==\([^+;]*\)+cu[0-9]*|torchaudio==\1|g' requirements.txt \
&& sed -i 's|torchvision==\([^+;]*\)+cu[0-9]*|torchvision==\1|g' requirements.txt
Why this is future-proof
UV_LINK_MODE=copyandUV_NO_CACHE=1fix proot filesystem limitations globally for the entire install, regardless of which proot distro or Ubuntu version is used.--python-platform aarch64-unknown-linux-gnuexplicitly tells UV to resolve aarch64 wheels. Without this, UV defaults to x86_64 inside proot, installing binaries that cannot run on ARM.- Keeping
--extra-index-urlmeans PyPI stays as the primary index. Torch and friends, which have no aarch64 wheels on PyPI, are pulled from the pytorch CPU index. cu[0-9]*matches any CUDA suffix (cu128, cu126, cu130, etc.), so the torch patches do not need updating when Applio bumps the CUDA version.
3. Install Applio:
chmod +x run-install.sh && ./run-install.sh
UV not found on first run
The installer downloads UV to ~/.local/bin, but that path is not in the current shell's PATH yet, so the first run will stop after installing uv saying it's needed to add it to PATH via restarting the shell (which is bash in our case).
This is expected. Run the following command to add UV to PATH and re-run the installer:
source $HOME/.local/bin/env && ./run-install.sh
chmod +x does not need to be run again.
4. Launch Applio:
chmod +x run-applio.sh && ./run-applio.sh
5. Wait until the terminal shows Running on local URL: http://127.0.0.1:6969. Then open your browser (in multitasking or window mode) and navigate to:
localhost:6969
First launch
The first launch downloads required model files from HuggingFace, it's normal that it may take some time. You may notice the download speed drop significantly partway through as this is HuggingFace throttling the connection on certain files and recovers on its own.
6. To exit: press Ctrl + C, close the app, and fully stop it from the Termux notification by pressing EXIT.
7. To resume later:
proot-distro login ubuntu
cd Applio && ./run-applio.sh
8. To update:
proot-distro login ubuntu
rm -rf Applio
Then restart from Step 1 of the Applio Setup section.
Applio Usage
Now that you have the web interface running, the rest of the process is almost identical to using a Local Applio PC Installation.
For all subsequent steps please continue by following the Local Applio PC Guide.
Continue with the Local Applio PC Guide
Performance Examples
NOTE: Those benchmarks are based on the First Inference of a model on startup, which may contain a warmup time and future inferences might take less time.
Applio v3.2.7 on Ubuntu 24.04 (Noble)
Applio v3.6.2 on Ubuntu 25.10 (Questing) on Termux v0.118.3 with proot-distro v4.38.0
FAQ / Troubleshooting
Termux is Android only. iPhone alternatives include:
Termux is not associated with either app above, and this guide may have issues with them.
Applio is the easiest to use: it automatically creates the venv and allows direct file uploads via the WebUI, unlike Mainline. Moving files from phone storage to Termux Ubuntu is otherwise difficult. There was previously also easyGUI but it's no longer maintained now.
Applio only:
proot-distro login ubuntu
rm -rf Applio
Everything: Delete the entire Termux app.
1. Open Termux and log into Ubuntu:
proot-distro login ubuntu
2. Find your local IP address:
apt install net-tools -y && ifconfig
Look for an IP in one of these ranges:
192.168.x.x10.x.x.x172.16.x.xto172.31.x.x
3. Set the server name and launch:
- Applio:
export GRADIO_SERVER_NAME="0.0.0.0"
cd Applio && ./run-applio.sh
Then on the other device open http://<your-phone-ip>:6969.
4. To revert:
- Applio: Restart the Termux session, or run
unset GRADIO_SERVER_NAME.
Sharing publicly exposes your phone and consumes more resources. This is not recommended.
1. Log into Ubuntu:
proot-distro login ubuntu
2. Patch run-applio.sh to forward arguments to Python. Without this, --share is consumed by the shell script and never reaches app.py:
sed -i 's|python app.py --open|python app.py --open "$@"|' ~/Applio/run-applio.sh
3. Build or download the frpc binary needed for public tunnelling:
For aarch64 (pre-built, recommended):
- Applio:
apt update && apt install wget -y && wget -O frpc_linux_aarch64_v0.2 "https://huggingface.co/Nick088/termux-built-arm64-files/resolve/main/pre-built-binaries/frpc_linux_aarch64_v0.2?download=true" && mv frpc_linux_aarch64_v0.2 ~/Applio/.venv/lib/python3.12/site-packages/gradio/frpc_linux_aarch64_v0.2For other architectures (manually build): check your arch with
uname -mand replaceaarch64in the destination path accordingly.- Applio:
apt install golang-go -y && git clone https://github.com/huggingface/frp && cd frp && make frpc && mv bin/frpc ~/Applio/.venv/lib/python3.12/site-packages/gradio/frpc_linux_aarch64_v0.2 && cd ..
4. Launch with sharing enabled:
cd Applio && ./run-applio.sh --share
Wait for Running on Public url and share that link.
5. To revert (press Ctrl+C first), simply launch normally without --share:
./run-applio.sh
To fully restore all changes:
sed -i 's|python app.py --open "$@"|python app.py --open|' ~/Applio/run-applio.sh
rm -rf ~/frp && rm -rf ~/Applio/.venv/lib/python3.12/site-packages/gradio/frpc_linux_aarch64_v0.2 && apt purge golang-go -y
Ensure your phone has at least 6 GB of RAM and try using a shorter audio clip.
This means your connection is too slow and uv pip is hitting its default timeout. Make sure you are still inside the Applio folder and try the following:
- Use a better internet connection, or
- Increase the UV HTTP timeout:
- Applio:
export UV_HTTP_TIMEOUT=200 && ./run-install.sh
- Applio:
If it still fails, increase the value beyond 200 and try again.
Training may have issues. You need a very powerful phone with more than 8 GB of RAM. This is not recommended.
Train normally in Applio, check the Local PC Guide for reference. If clicking Start Training produces an error like:
RuntimeError: [enforce fail at .../gloo/transport/tcp/device.cc:184] rv != -1. -1 vs -1. Permission denied
Press Ctrl+C and apply the fix:
- Applio:
cd ~/Applio
sed -i '/dist\.init_process_group(/,/)/s/^/#/' rvc/train/train.py
./run-applio.sh
Select your project, and click Start Training. Use very short datasets and a low batch size (2, 4, or 6) to reduce crash risk.
Example (Honor 90 Lite with Applio v3.6.2, default settings):
- Dataset: 1:58 min | Sample Rate: 40k | Architecture: V2
- Preprocess time: 15.25s
- Pitch extraction (rmvpe, CPU): 194.91s
- Embedding extraction (8 cores, CPU): 88.39s
- Index generated successfully
- ⚠️ Crashed shortly after the first training epoch began (shortly after the third step)
Example (Honor 90 Lite with Applio v3.2.7):
- Dataset: 1:58 min | Sample Rate: 40k | Architecture: V2
- Preprocess time: 21.29s
- Pitch extraction (rmvpe, 8 CPU cores): ~319.96s
- Embed extraction (contentvec): ~62.69s
- Index generated successfully
- ⚠️ Crashed while training the first epoch
This was a requirement in an older Applio version (before 3.2.8-bugfix) and in easyGUI (now removed as no longer maintained). Kept here for reference and possible future usage.
Context
This was done on Ubuntu 24.04 (Noble) via proot-distro, using Python 3.10 via the deadsnakes PPA, since that was the Python version required at the time.
- In Termux (not Ubuntu), create a symlink to make files accessible:
ln -rs $PREFIX/var/lib/proot-distro/installed-rootfs $HOME/proot-distro-rootfs
- Log into Ubuntu:
proot-distro login ubuntu - Install build dependencies (required to compile praat-parselmouth from source):
apt install build-essential python3.10-dev libx11-dev -y
- Run
pip3.10 install praat-parselmouth. This builds from source and takes 30-40 minutes as no official pre-built wheel exists (see this issue). - Package it as a wheel:
python3.10 -m venv my_praat_env && source my_praat_env/bin/activate && pip install wheel && pip install praat-parselmouth && pip wheel --wheel-dir dist/ praat-parselmouth
- Output:
./dist/praat_parselmouth-0.4.4-cp310-cp310-linux_aarch64.whl - Access the file via Material Files (by Hai Zhang): grant full file access → Add Storage → External → Termux → proot-distro-rootfs → ubuntu → root → dist. Copy the
.whlfile to storage and upload to HuggingFace.
- Report your issue here.