This repo contains a full voice assistant pipeline optimized for Qualcomm NPU.
+---------------+ +---------------------+ +---------------+ | STT | | LLM | | TTS | | (whisper) | ---> | (llama3.2-3B) | ---> | (kokoro) | +---------------+ +---------------------+ +---------------+
- Download 
.apk - Push 
.apkto device:adb push ChatApp.apk /data/local/tmp
 - Open ADB Shell on android device:
Then install
adb shell
ChatApp.apk:pm install -r /data/local/tmp/ChatApp.apk
 
📱 Devices
| Device | OS | 
|---|---|
| Samsung Galaxy S25 Ultra | One UI 6.1 (Android 15) | 
🧠 Models
| Component | Model/Device | Context Length | 
|---|---|---|
| LLM | Llama 3.2 3B | 2048 | 
| STT | Whisper Tiny | – | 
| TTS | Kokoro int8 Multi-lang v1.1 | – | 
Requirements
- Snapdragon® Gen 3 or Snapdragon® 8 Elite
 - QNN SDK version 2.31.0 or newer
 - Compiled QNN context binaries for the above QNN SDK version
 local.propertiesfile with validsdk.dirproperty in root directory:sdk.dir=<path to android sdk>
Important Paths
- 🔧 
/opt/qcom/aistack/qairt/2.31.0: Example QNN-SDK location - 📚 
/opt/qcom/aitstack/qairt/2.31.0/lib/external: WhisperKit Android.sofiles - 📋 
app/src/main/assets/configs/models.json: List of available models - 🗣️ 
app/src/main/assets/kokoro-int8-multi-lang-v1_1: Assets for TTS support, Download from HERE - 🗂️ 
app/src/main/assets/: Whisper models location - 📊 
app/src/main/assets/models: LLM models location - ⚙️ 
app/src/main/assets/htp_config: HTP config files location 
WhisperKit Android
- 
Clone repository:
git clone https://github.com/argmaxinc/WhisperKitAndroid.git cd WhisperKitAndroid - 
Update
jni/NativeWhisperKit.cppfunction names to match this projectJava_com_edgeai_chatappv2_WhisperKitNative_<function_name>
 - 
Update
Whipserkit/src/TranscribeTask.cppto support the correctlib,cacheandfilespath when building forjni.#if (JNI_BUILD) #define TRANSCRIBE_TASK_TFLITE_ROOT_PATH "/data/user/0/com.edgeai.chatappv2/files" #define TRANSCRIBE_TASK_DEFAULT_LIB_DIR "/data/user/0/com.edgeai.chatappv2/lib" #define TRANSCRIBE_TASK_DEFAULT_CACHE_DIR "/data/user/0/com.edgeai.chatappv2/cache" #elif (QNN_DELEGATE || GPU_DELEGATE) ...
 - 
Update versions in
scripts/dev_env.shandscripts/Dockerfilewith correct QNN SDK version e.g.2.31.0- Example 
scripts/dev_env.sh 
aria2c $ARIA_OPTIONS -d $BUILD_DIR https://repo1.maven.org/maven2/com/qualcomm/qti/qnn-runtime/2.31.0/qnn-runtime-2.31.0.aar aria2c $ARIA_OPTIONS -d $BUILD_DIR https://repo1.maven.org/maven2/com/qualcomm/qti/qnn-litert-delegate/2.31.0/qnn-litert-delegate-2.31.0.aar
- Example 
scripts/Dockerfile 
ARG QNN_RUNTIME=qnn-runtime-2.31.0.aar ARG QNN_TFLITE_DELEGATE=qnn-litert-delegate-2.31.0.aar
 - Example 
 - 
Build dev environment
make env - 
Build
.sofiles inside of dev environment:make build jni
 - 
Copy
.sofiles to/opt/qcom/aitstack/qairt/2.31.0/lib/external, files to transfer:From
external/libs/android/:libavcodec.solibavformat.solibavutil.solibqnn_delegate_jni.solibSDL3.solibswresample.solibtensorflowlite.solibtensorflowlite_gpu_delegate.so
From
build/android/:libwhisperkit.solibnative-whisperkit.so
 
Sherpa-ONNX with QNN Support
This guide walks you through building Sherpa-ONNX with Qualcomm Neural Network (QNN) support for enhanced performance on Snapdragon devices.
- Git installed
 - Android NDK (recommended version r25c or later)
 - Qualcomm AI Stack installed (v2.31.0 or compatible version)
 - CMake 3.18 or newer
 - Java Development Kit (JDK) 11 or newer
 
Ensure the following environment variables are set:
# Set QNN SDK path
export QNN_SDK_PATH=/opt/qcom/aitstack/qairt/2.31.0
# Set Android NDK Path
export ANDROID_NDK=/Users/fangjun/software/my-android/ndk/28.x.x
# Verify your environment variables
echo $QNN_SDK_PATH
echo $ANDROID_NDK# Clone the QNN-enabled fork of Sherpa-ONNX
git clone https://github.com/mjnong/sherpa-onnx-qnn.git
cd sherpa-onnx-qnn# Make the build directory in advance such that we can place Sherpa ONNX with QNN support in that directory by running the script
./scripts/qairt/download_onnx_qnn.shln -s <sherpa-onnx-qnn>/sherpa-onnx/kotlin-api/Tts.kt <android-project-path>/app/src/main/java/com/edgeai/chatappv2/Tts.ktln -s <sherpa-onnx-qnn>/sherpa-onnx/kotlin-api/Qnn.kt <android-project-path>/app/src/main/java/com/edgeai/chatappv2/Qnn.kt# Run the build script (uses NDK and builds for arm64-v8a)
./build-android-arm64-v8a.shDuring the build process:
- The script will compile both Sherpa-ONNX and ONNX Runtime with QNN support
 - Build artifacts will be placed in 
build-android-arm64-v8a/install/lib/ - The process may take several minutes depending on your hardware
 
# Create the external directory if it doesn't exist
sudo mkdir -p /opt/qcom/aitstack/qairt/2.31.0/lib/external
# Copy the ONNX Runtime library with QNN support
sudo cp build-android-arm64-v8a/install/lib/libonnxruntime.so /opt/qcom/aitstack/qairt/2.31.0/lib/external/
# Copy the Sherpa-ONNX JNI library
sudo cp build-android-arm64-v8a/install/lib/libsherpa-onnx-jni.so /opt/qcom/aitstack/qairt/2.31.0/lib/external/# Check that the libraries exist in the target directory
ls -la /opt/qcom/aitstack/qairt/2.31.0/lib/external/- Build errors related to QNN SDK: Ensure 
QNN_SDK_PATHpoints to a valid QNN SDK installation - Permission issues when copying libraries: Make sure you have write permissions to the target directory
 - Missing dependencies: Run 
ldd build-android-arm64-v8a/install/lib/libonnxruntime.soto check for missing dependencies 
For more information, refer to the Sherpa-ONNX documentation
This repository is built on-top of:
This app is released under the AGPL-3.0 License.