本项目是一个功能丰富的Android应用平台,集成了多种先进语音技术,为用户提供全方位的语音交互解决方案。主要功能包括关键词唤醒、声纹识别、语音识别等,适用于智能家居、车载系统以及需要语音交互的各类场景。
- 基于ONNX模型的高效率关键词检测
- 低资源占用,适合移动设备长时间运行
- 实时音频处理与关键词识别
- 自定义唤醒词阈值和灵敏度设置
- 用户声纹注册与管理
- 实时声纹比对与用户识别
- 基于声纹的安全认证机制
- 支持多人声纹区分
- 实时语音转文字功能
- WebSocket通信的云端ASR服务集成
- 智能降噪和静音检测
- 连续语音识别和断句优化
- 用户登录和身份验证
- 个人声纹信息管理
- 权限控制和安全保障
本系统采用统一的音频采集流程,并针对不同功能模块进行特定处理:
- 采样率:16kHz(16000Hz)
- 位深度:16位(PCM_16BIT)
- 通道数:单通道(CHANNEL_IN_MONO)
- 音频源:MediaRecorder.AudioSource.DEFAULT
-
关键词唤醒(WeKWS)
- 帧长:40ms(640字节)
- 采集方式:Android AudioRecord实时采集
- 处理流程:实时将音频送入特征提取管道(FeaturePipeline)
- 特征提取:40维MFCC特征,通过C++层处理
- 送入模型:以短时帧方式(80帧一批)送入ONNX模型
-
声纹识别
- 音频长度:按需采集,注册时通常为5-10秒
- 采集缓冲区:16000样本(约1秒)
- 处理方式:提取声纹特征向量
- 发送格式:注册时以Base64编码的PCM数据发送到服务器
- 识别时:可在本地进行实时比对或发送到服务端验证
-
语音识别(ASR)
- 帧长:100ms(1600字节)
- 发送方式:WebSocket实时流式传输
- 音频格式:可选原始PCM或带WAV头格式(ASR_USE_WAV_FORMAT参数控制)
- 静音检测:基于音频能量的静音检测,避免发送无效音频
- 发送策略:实时发送,支持VAD(语音活动检测)
- 多线程并行处理:同一音频流同时分发给不同处理模块
- 队列缓冲区:使用BlockingQueue进行线程间音频数据传递
- 最大队列容量:MAX_QUEUE_SIZE = 2500(约100秒音频)
- 采用ONNX Runtime优化的模型推理
- 高性能C++核心处理引擎
- 低延迟实时音频处理
- 多线程并行处理架构
- 优化的移动端资源占用
首先需要准备您的语音模型:
- 训练或获取预训练的模型
- 将模型导出为ONNX格式
- 使用ONNX Runtime工具优化模型:
python -m onnxruntime.tools.convert_onnx_models_to_ort your-model.onnx完成后您将获得优化后的模型文件。
- 安装Android Studio
- 打开项目路径
- 根据需求配置应用参数
- 构建应用
bash ./gradlew build可根据需求调整以下配置:
- 关键词检测参数:
./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); // 修改第一个参数构建完成后,将APK文件安装到Android设备上:
app/build/outputs/apk/debug/app-debug.apk
- 关键词检测延迟:通常<10ms(取决于设备性能)
- 声纹识别准确率:>95%(在合适阈值设置下)
- ASR实时响应:平均延迟<300ms
- 内存占用:<100MB
欢迎开发者对本项目进行扩展和改进。主要开发方向:
- 支持更多类型的语音模型
- 优化算法性能
- 扩展UI界面
- 增强安全特性
本项目遵循Apache 2.0许可证。