跳转至

Voice Recorder 语音录音器*

概述*

Voice Recorder是一款基于国芯微Apus 8302b系列芯片的高性能语音录音应用,支持实时音频采集、OPUS-OGG编码压缩、SD卡存储以及USB设备功能。

功能特点*

核心录音功能*

  • 音频格式: 16kHz 16bit
  • 多种麦克风支持:
  • 模拟单麦克风(AMIC)
  • 数字单麦克风(DMIC)
  • 数字双麦克风(2DMIC)
  • 音频编码: 支持OPUS-OGG格式压缩,显著减少存储空间。也可以支持直接写入pcm数据
  • 按键控制: 通过硬件按键一键开始/停止录音,终端输入命令,开始/结束录音,可配置

存储与传输*

  • SD卡存储: 支持FAT文件系统,自动格式化
  • 文件管理: 自动创建录音文件,支持PCM和OPUS格式

音频处理算法*

  • 降噪算法: 可配置的音频降噪处理

扩展功能*

  • 蓝牙连接: 可选的BLE功能支持
  • 串口音频转储: 支持通过UART输出音频数据用于调试
  • 低功耗管理: 集成电源管理功能
  • LED状态指示: 录音状态可视化反馈
  • USB设备功能: 用于调试
  • USB Audio Class(UAC): 作为USB音频设备
  • Mass Storage: 作为U盘访问SD卡文件

技术规格*

功能 规格
音频数据 16kHz 16bit
支持通道 1-2通道(可配置)
编码格式 OPUS-OGG / PCM
存储介质 SD卡(FAT文件系统)
USB功能 UAC + Mass Storage
控制方式 硬件按键/串口终端命令
处理器 国芯微Apus 8302b

硬件要求*

必需组件*

  • 国芯微Apus 8302b开发板
  • 麦克风(模拟或数字)
  • SD卡,或者sdnand flash
  • 录音控制按键(连接到P0_7) alt text

可选组件*

  • USB连接线(用于USB设备功能)
  • LED指示灯
  • 蓝牙天线(如启用BLE功能)

软件架构*

主要模块*

Voice Recorder App
├── 音频输入模块 (Audio Input)
│   ├── 麦克风配置
│   ├── ADC/DMIC驱动
│   └── 音频缓冲管理
├── 音频处理模块 (VPA)
│   ├── 实时音频处理
│   └── 降噪算法
├── 编码模块 (OPUS-OGG)
│   ├── OPUS编码器
│   ├── OGG封装
│   └── 文件写入
├── 存储模块 (Storage)
│   ├── SD卡驱动
│   ├── FAT文件系统
│   └── 文件管理
├── USB设备模块 (USB Device)
│   ├── UAC功能
│   └── Mass Storage
└── 控制模块 (Control)
    ├── 按键处理
    ├── LED控制
    └── 状态管理

线程架构*

  • 主线程: 应用逻辑控制和文件操作
  • 语音处理线程: 实时音频算法处理
  • 音频输入中断: 音频数据采集
  • USB任务: USB设备功能处理

配置说明*

应用配置 (app_config.h)*

功能模块开关*

#define CONFIG_APP_USING_UART_AUDIO_DUMP   (0)  // 串口音频转储
#define CONFIG_APP_USING_8002_OTA          (0)  // 8002 OTA升级
#define CONFIG_APP_USING_BLE               (0)  // 蓝牙功能
#define CONFIG_APP_USING_FUNC_UAC          (1)  // USB音频设备
#define CONFIG_APP_USING_FUNC_MASS_STORAGE (0)  // USB大容量存储
#define CONFIG_APP_USING_RECORD_OPUS_OGG   (1)  // OPUS-OGG编码
#define CONFIG_APP_USING_VPA_BEE           (1)  // 降噪算法

音频输入配置*

#define CONFIG_APP_AUDIO_IN_TYPE  (0)  // 0:模拟单mic, 1:数字单mic, 2:数字双mic
#define CONFIG_ADC_GAIN          (30)  // ADC增益 0-32dB,步进2dB
#define CONFIG_BOARD_AMIC_TYPE    (0)  // 0:MEMS硅麦, 1:ECM驻极体麦

音频处理参数*

#define CONFIG_AUDIO_IO_SAMPLE_RATE                     (16000) // 采样率
#define CONFIG_ADUIO_IO_FRAME_LENGTH_MS                 (16)    // 帧长度
#define CONFIG_ADUIO_IO_PCM_FRAME_NUM_PER_CONTEXT       (5)     // 上下文帧数
#define CONFIG_VOICE_PROCESS_STACK_SIZE                 (2048)  // 处理线程栈大小

硬件配置*

#define RECORD_KEY_GPIO    (P0_7)  // 录音按键GPIO

使用说明*

基本操作*

1. 开始录音*

  • 按下录音按键(P0_7)
  • LED指示灯闪烁3次表示开始录音
  • 系统自动创建录音文件

2. 停止录音*

  • 再次按下录音按键
  • LED指示灯闪烁3次表示停止录音
  • 录音文件自动保存到SD卡

3. 文件访问*

  • 通过USB连接电脑
  • 设备识别为USB音频设备或U盘(根据配置)
  • 直接访问SD卡中的录音文件

录音文件格式*

OPUS-OGG格式 (推荐)*

  • 文件名: record.opus
  • 编码: OPUS音频编码 + OGG容器
  • 比特率: 单声道16kbps,双声道32kbps
  • 压缩比: 16:1

PCM格式 (原始音频)*

  • 文件名: record.pcm
  • 格式: 16位PCM,16kHz采样率
  • 文件大小: 32KB/秒(单声道)

编译与部署*

编译命令*

# Linux环境
make app=voice_recorder board=gx8302b_dev

# 或修改Makefile中的默认配置
app ?= voice_recorder
board ?= gx8302b_dev
make

固件下载*

# 使用bootx工具下载
sudo ./tools/bootx/bootx -m auto -t s -d /dev/ttyUSB0 -r 1000000 -c "download 0 output/apus.bin"

调试与测试*

串口调试打印*

  • 波特率: 115200
  • 数据位: 8
  • 停止位: 1
  • 校验位: 无

调试信息*

Hello Apus: v1.2.5-1750400705, App Bank: 0x2000
Chip Label: GX8302B-66c6362bc31ca5b1
Build Target: voice_recorder-rtthread-gx8302b_dev
[VOICE RECORDER]Src:1, Cpu Fre  : 144000000 Hz
[VOICE RECORDER]Src:1, Flash Fre: 144000000 Hz
[VOICE RECORDER]Src:1, Psram Fre: 144000000 Hz
[VOICE RECORDER][System Heap] total:104304, use:0, max_used:0
ADC:32000000, PDM:1023998, Ain:32000000, I2S:32000000, Aout:32000000
[VPA_Bypass] [vpa_init]
fatfs: sd block num=30883840, block size=512
msh >[VOICE RECORDER]mount fatfs ok! # 文件系统挂载成功
opus tmp_malloc size: 28160
SD卡容量: 15812526080 字节
SD卡块大小: 512 字节
SD卡块数量: 30883840 30883840
usb init done
saddr0: 0x21005060 , size = 0x5000
saddr1: 0x2100a060 , size = 0x5000
[VOICE RECORDER]-----------------------[376]-----------------------------
[VOICE RECORDER][tmp Heap] total:104304, use:58576, max_used:58576
[VOICE RECORDER][System Heap] total:104304, use:58576, max_used:58576
[VOICE RECORDER][PSRAM Heap] total:2097072, use:151880, max_used:151880
[VOICE RECORDER]Voice Recorder App started!
[VOICE RECORDER]Jun 20 2025 14:24:56
[VOICE RECORDER]2DMIC APP Channels Num:2
[VOICE RECORDER]ctx_id:0, vad:0
[VOICE RECORDER]ctx_id:30, vad:0
[VOICE RECORDER]ctx_id:60, vad:0
[VOICE RECORDER]ctx_id:90, vad:0
[VOICE RECORDER]key start record!  # 按键按下开始录音
res: 80 1280
res: 80 1280
res: 80 1280
res: 80 1280
47 ms # 编码耗时
res: 80 1280
res: 80 1280
res: 80 1280
res: 80 1280
48 ms
res: 80 1280
res: 80 1280
res: 80 1280
res: 80 1280
48 ms
res: 80 1280
res: 80 1280
res: 80 1280
res: 80 1280
47 ms
res: 80 1280
res: 80 1280
res: 80 1280
res: 80 1280
48 ms
res: 80 1280
res: 80 1280
res: 80 1280
res: 80 1280
48 ms
res: 80 1280
res: 80 1280
res: 80 1280
res: 80 1280
48 ms
[VOICE RECORDER]key stop record! # 按键按下停止录音
res: 80 1280
[VOICE RECORDER]close file~
23 ms
[VOICE RECORDER]ctx_id:120, vad:0
[VOICE RECORDER]ctx_id:150, vad:0