Skip to content

lsm1103/android-wekws-demo

Repository files navigation

集成语音技术的Android应用平台

本项目是一个功能丰富的Android应用平台,集成了多种先进语音技术,为用户提供全方位的语音交互解决方案。主要功能包括关键词唤醒、声纹识别、语音识别等,适用于智能家居、车载系统以及需要语音交互的各类场景。

核心功能模块

1. 关键词唤醒(WeKWS)

  • 基于ONNX模型的高效率关键词检测
  • 低资源占用,适合移动设备长时间运行
  • 实时音频处理与关键词识别
  • 自定义唤醒词阈值和灵敏度设置

2. 声纹识别与身份验证

  • 用户声纹注册与管理
  • 实时声纹比对与用户识别
  • 基于声纹的安全认证机制
  • 支持多人声纹区分

3. 语音识别(ASR)

  • 实时语音转文字功能
  • WebSocket通信的云端ASR服务集成
  • 智能降噪和静音检测
  • 连续语音识别和断句优化

4. 用户管理系统

  • 用户登录和身份验证
  • 个人声纹信息管理
  • 权限控制和安全保障

音频采集与处理

本系统采用统一的音频采集流程,并针对不同功能模块进行特定处理:

音频采集参数

  • 采样率:16kHz(16000Hz)
  • 位深度:16位(PCM_16BIT)
  • 通道数:单通道(CHANNEL_IN_MONO)
  • 音频源:MediaRecorder.AudioSource.DEFAULT

各模块音频处理

  1. 关键词唤醒(WeKWS)

    • 帧长:40ms(640字节)
    • 采集方式:Android AudioRecord实时采集
    • 处理流程:实时将音频送入特征提取管道(FeaturePipeline)
    • 特征提取:40维MFCC特征,通过C++层处理
    • 送入模型:以短时帧方式(80帧一批)送入ONNX模型
  2. 声纹识别

    • 音频长度:按需采集,注册时通常为5-10秒
    • 采集缓冲区:16000样本(约1秒)
    • 处理方式:提取声纹特征向量
    • 发送格式:注册时以Base64编码的PCM数据发送到服务器
    • 识别时:可在本地进行实时比对或发送到服务端验证
  3. 语音识别(ASR)

    • 帧长:100ms(1600字节)
    • 发送方式:WebSocket实时流式传输
    • 音频格式:可选原始PCM或带WAV头格式(ASR_USE_WAV_FORMAT参数控制)
    • 静音检测:基于音频能量的静音检测,避免发送无效音频
    • 发送策略:实时发送,支持VAD(语音活动检测)

音频流转发

  • 多线程并行处理:同一音频流同时分发给不同处理模块
  • 队列缓冲区:使用BlockingQueue进行线程间音频数据传递
  • 最大队列容量:MAX_QUEUE_SIZE = 2500(约100秒音频)

技术特点

  • 采用ONNX Runtime优化的模型推理
  • 高性能C++核心处理引擎
  • 低延迟实时音频处理
  • 多线程并行处理架构
  • 优化的移动端资源占用

部署流程

1. 模型准备

首先需要准备您的语音模型:

  1. 训练或获取预训练的模型
  2. 将模型导出为ONNX格式
  3. 使用ONNX Runtime工具优化模型:
python -m onnxruntime.tools.convert_onnx_models_to_ort your-model.onnx

完成后您将获得优化后的模型文件。

2. 应用构建

使用Android Studio

  1. 安装Android Studio
  2. 打开项目路径
  3. 根据需求配置应用参数
  4. 构建应用

使用命令行(Linux)

bash ./gradlew build

3. 配置说明

可根据需求调整以下配置:

  • 关键词检测参数:./app/src/main/cpp/wekws.cc中修改特征维度和阈值
  • ASR服务端点:修改MainActivity.java中的ASR_WS_URL常量
  • 声纹识别参数:调整VoiceIdentifyService.java中的阈值参数
  • 音频采集参数:可在MainActivity.java中修改采样率和缓冲区大小
// 修改特征维度示例
feature_config = std::make_shared<wenet::FeaturePipelineConfig>(40, 16000);  // 修改第一个参数

4. 安装与使用

构建完成后,将APK文件安装到Android设备上: app/build/outputs/apk/debug/app-debug.apk

性能指标

  • 关键词检测延迟:通常<10ms(取决于设备性能)
  • 声纹识别准确率:>95%(在合适阈值设置下)
  • ASR实时响应:平均延迟<300ms
  • 内存占用:<100MB

开发与贡献

欢迎开发者对本项目进行扩展和改进。主要开发方向:

  • 支持更多类型的语音模型
  • 优化算法性能
  • 扩展UI界面
  • 增强安全特性

许可证

本项目遵循Apache 2.0许可证。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published