# waketnet **Repository Path**: amonhuang/waketnet ## Basic Information - **Project Name**: waketnet - **Description**: 把训练的语音唤醒模型在android中实现。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-20 - **Last Updated**: 2026-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WakeNet WakeNet 是一个基于 ONNX Runtime 的 Android 离线唤醒词检测引擎,支持 CPU 和 Vulkan GPU 加速。 ## 功能特点 - **双引擎推理**:支持 CPU (armeabi-v7a, arm64-v8a) 和 Vulkan GPU 加速。 - **高效音频处理**:利用 Vulkan 计算着色器进行音频特征提取。 - **跨平台支持**:针对 Android 平台优化,支持多种 Android 设备。 - **易于集成**:提供完整的 Java API 和 JNI 接口。 ## 系统要求 - Android 5.0 (API Level 21) 及以上版本 - Android NDK (用于构建 Native 库) - Android Studio 4.0 及以上版本 - 对于 Vulkan 加速,需设备支持 Vulkan 1.0 ## 快速开始 1. **克隆项目**: ```bash git clone https://gitee.com/amonhuang/waketnet.git ``` 2. **导入项目**: 使用 Android Studio 打开项目,等待 Gradle 同步完成。 3. **构建 APK**: 执行 `Build -> Make Project` 或运行 Gradle 任务: ```bash ./gradlew assembleDebug ``` 4. **安装运行**: 将生成的 APK 安装到 Android 设备上。 ## 项目结构 - `app/src/main/java/com/tpv/app/vulkan/wakenet/`:Java 核心代码 - `WakeupManager.java`:管理推理引擎初始化 - `WakeupInference.java`:ONNX 推理封装 - `CPUAudioProcessor.java`:CPU 音频处理器 - `VulkanAudioProcessor.java`:Vulkan 音频处理器 - `MFCCUtils.java`:MFCC 特征提取工具 - `app/src/main/cpp/`:Native 代码 (C++) - `WakeNetJni.cpp`:JNI 接口实现 - `WakeupInference.cpp`:推理逻辑 - `CpuAudioProcessor.cpp`:CPU 音频处理 - `VulkanAudioProcessor.cpp`:Vulkan 音频处理 - `ComputePipeline.cpp`:Vulkan 计算管线 - `app/src/main/assets/`:资源文件 - `wakeup_model.onnx`:唤醒词检测模型 - `wakeup_008.wav`:唤醒词音频样例 - `app/src/main/shaders/`:Vulkan 计算着色器 - `STFT.comp`:短时傅里叶变换计算着色器 ## API 使用说明 ### 1. 初始化 ```java // 初始化推理引擎 WakeupManager wakeupManager = new WakeupManager(context); wakeupManager.init(context); long inferenceHandle = wakeupManager.getInference(); // 初始化音频处理器 (CPU 或 GPU) Processor processor; if (useGPU) { processor = new VulkanAudioProcessor(context); processor.initVulkanProcessor(getAssets()); } else { processor = new CPUAudioProcessor(SAMPLE_RATE); } ``` ### 2. 处理音频流 ```java // 从 AudioRecord 获取音频数据 short[] audioBuffer = new short[BUFFER_SIZE]; audioRecord.read(audioBuffer, 0, BUFFER_SIZE); // 送入处理器 processor.process(audioBuffer, audioBuffer.length); ``` ### 3. 释放资源 ```java @Override protected void onDestroy() { super.onDestroy(); processor.cleanup(); wakeupManager.release(); } ``` ## 许可证 本项目基于 [Apache License 2.0](LICENSE) 协议开源。