走进离线语音:安信可 VC‑01 智能模块全面拆解与 MCU 实战

今天带大家认识一款性价比极高的中文语音识别模块------安可信VC-01智能语音识别模块。不仅适合AI初学者入门,也是嵌入式开发人员做语音控制项目的利器!本文将结合VC-01的官方规格书内容、功能特点,并结合MUC主控芯片(如STM32、ESP32)进行项目实战讲解。

一、什么是VC-01语音模块?

VC-01 是安可信(Acontech)推出的一款高性能、低功耗的离线语音识别模块,适合嵌入式语音交互应用。它最大的优势是:

  • 支持离线关键词识别
  • 无需联网即可实现语音控制
  • 支持多种命令词组定制
  • 语音识别响应时间快,抗干扰强
  • 支持UART串口通信,适配各种主控芯片

二、核心参数

参数 描述
主芯片 US516P6(32-bit RISC 内核,240 MHz,DSP 指令 & FPU + FFT 加速器)
存储 2 MB Flash,242 KB SRAM
识别能力 支持 150 条本地指令,唤醒距离达 5 m,识别率 ≥ 98%,响应时间 < 100 ms
音频性能 单 MIC 输入,双通道 DAC 输出,内置 AEC 及降噪算法
接口 UART、I²C、PWM、GPIO、SPI、DAC
工作电压 3.6--5 V,电流 > 500 mA,温度范围 --40~85 ℃
外形尺寸 模块体积约 25.5 × 24 × 3.2 mm,开发板约 42.2 × 35.6 mm

三、VC-01模块引脚定义

引脚 功能说明
VCC 电源(3.3V 或 5V)
GND
RXD 接收串口数据(接主控TX)
TXD 发送串口数据(接主控RX)
EN 模块使能(低电平有效)
K1/K2/K3 用户自定义按键输入(可触发语音识别)

安信可语音开发平台的使用

首先进入http://voice.ai-thinker.com

该网址进行注册后,显示该页面

之后点击左上角的创建产品,然后进入到下面页面

然后我们在选择产品类别,选择**其他,**接着进入下面该页面

我们选择纯离线方案,

然后选择VC-01模组,

之后写入我们产品名称,与语言,下面是我们写好的

点击保存

然后就来到语音配置界面

注意这里,我们应该选择为串口烧录,应该一般该模组没有ST-Link SWD烧录,所以选择为串口

接着下滑,我们就可以配置唤醒词自定义

到了这里,就是可以设置我们想要配置自己主控上的设备,下面给你们举个例子。

案例展示

我们首先先添加一条基础信息,

添加完这个基础信息后还要进行一个控制详情,就是以下图

基本就这样了,挺简单的,网上学习资料有很多,大家多多交流一下

四、STM32 控制代码(标准外设库实现)

1️⃣ 串口初始化代码(USART1)

复制代码
void USART1_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
    // PA9 = TX, PA10 = RX
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
    GPIO_Init(GPIOA, &GPIO_InitStructure); 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
    GPIO_Init(GPIOA, &GPIO_InitStructure); 
    USART_InitTypeDef USART_InitStructure;
    USART_InitStructure.USART_BaudRate = 115200;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
    USART_Init(USART1, &USART_InitStructure);
    USART_Cmd(USART1, ENABLE);
}

2️⃣ 串口接收数据解析

复制代码
uint8_t VC01_ReceiveBuffer[64];
uint8_t index = 0;
void USART1_IRQHandler(void)
{
    if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    {
        uint8_t data = USART_ReceiveData(USART1);
        VC01_ReceiveBuffer[index++] = data;
        // 示例协议格式:0xAA 0x55 CMD_ID
        if (index >= 3)
        {
            if (VC01_ReceiveBuffer[0] == 0xAA && VC01_ReceiveBuffer[1] == 0x55)
            {
                uint8_t cmd = VC01_ReceiveBuffer[2];
                VC01_ExecuteCommand(cmd);
            }
            index = 0;
        }
    }
}

3️⃣ 控制灯光或继电器(GPIO 控制)

复制代码
void VC01_ExecuteCommand(uint8_t cmd)
{
    switch (cmd)
    {
        case 0x01:  // 语音命令:"打开灯"
            GPIO_SetBits(GPIOC, GPIO_Pin_13);  // 点亮LED
            break;
        case 0x02:  // "关闭灯"
            GPIO_ResetBits(GPIOC, GPIO_Pin_13);  // 熄灭LED
            break;
        default:
            break;
    }
}
相关推荐
DIY机器人工房1 小时前
【科普】STM32CubeMX是配置工具,STM32CubeIDE是集成开发环境,二者互补但定位不同,前者负责初始化配置,后者专注代码开发调试。
单片机·嵌入式硬件·嵌入式·diy机器人工房
努力做小白2 小时前
Linux驱动20 --- FFMPEG视频API
linux·驱动开发·单片机·嵌入式硬件·ffmpeg·lvgl
得单片机的运10 小时前
STM32的蓝牙通讯(HAL库)
stm32·单片机·嵌入式硬件·蓝牙
国科安芯11 小时前
抗辐照芯片在低轨卫星星座CAN总线通讯及供电系统的应用探讨
运维·网络·人工智能·单片机·自动化
weixin_4526006912 小时前
GC8872刷式直流电机驱动器详解:3.6A驱动能力与PWM控制
stm32·单片机·嵌入式硬件·智能家居·音响·电动工具
Despacito0o15 小时前
STM32 I2C通信完整教程:从协议原理到硬件实现
stm32·单片机·嵌入式硬件
你好,奋斗者!16 小时前
小电流驱动大电流:原理、实现方式与应用前景
stm32·单片机·嵌入式硬件·电路设计
XINVRY-FPGA19 小时前
XCZU4EV-1FBVB900E Xilinx FPGA AMD Zynq UltraScale+ MPSoC EV(Embedded Vision)
arm开发·嵌入式硬件·计算机视觉·fpga开发·硬件架构·硬件工程·fpga
猫猫的小茶馆19 小时前
【STM32】FreeRTOS 任务的删除(三)
java·linux·stm32·单片机·嵌入式硬件·mcu·51单片机
学不动CV了19 小时前
单片机ADC采集机理层面详细分析(二)
c语言·arm开发·stm32·单片机·嵌入式硬件·开源·51单片机