KWS唤醒声卡 - 产品介绍

语言

钜犀KWS唤醒声卡是一款高性能离线语音识别模块,专为嵌入式系统、机器人和物联网应用设计。它支持本地处理,不依赖云端,提供快速、可靠的语音控制,延迟极低,非常适用于需要快速响应和数据隐私的场景。

主要特点

  • ✅ 100%离线处理:所有语音识别都在模块本地运行,无需互联网连接,确保数据隐私和低延迟
  • 🎤 高识别准确率:支持中英文语音指令,在正常环境下识别准确率>95%
  • ⚡ 超低延迟:语音指令输入后300ms内响应,提供实时控制体验
  • 🔧 高度可定制:通过官方固件配置工具支持自定义唤醒词和命令短语
  • 🖥️ 多平台支持:兼容树莓派、Jetson Nano、x86 PC以及ROS/ROS2机器人系统
  • 🔌 即插即用:标准USB HID接口,无需额外硬件即可操作
  • 🎛️ 集成音频输出:内置扬声器驱动,可提供语音反馈响应
  • 💡 低功耗:平均工作电流< 50mA,适用于电池供电设备

基本功能

默认唤醒词

模块预设了出厂默认唤醒词:

  • 中文:“你好小犀”、“小犀小犀”、“钜犀”
  • 英文:“Hello Xiaoxi”、“Juxi Technology”

支持的指令类别

模块支持多达100个自定义语音指令,包括:

  • 运动控制:前进、后退、左转、右转、停止
  • 灯光控制:开灯/关灯、改变灯光颜色(红、绿、蓝、黄)
  • 系统控制:休眠模式、唤醒、返回原点
  • 执行器控制:夹具打开/关闭、电机速度调节
  • 自定义指令:针对特定应用完全可定制的指令集

通信协议

模块使用简单可靠的串口协议:

  • 波特率:115200
  • 数据位:8
  • 停止位:1
  • 奇偶校验:无
  • 帧格式:0xAA 0x55 [Command Type] [Command ID] 0xFB

快速开始

基本串口通信示例 (Python)

以下是一个从模块读取语音指令的最小工作示例:

#!/usr/bin/env python3
import serial
import time

# Configure serial port (adjust port name for your system)
# Windows: "COM3", "COM4", etc.
# Linux: "/dev/ttyUSB0", "/dev/ttyACM0", etc.
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.01)

# Command mapping dictionary
COMMANDS = {
    (0x00, 0x01): "Stop",
    (0x00, 0x04): "Move forward",
    (0x00, 0x05): "Move backward",
    (0x00, 0x06): "Turn left",
    (0x00, 0x07): "Turn right",
    (0x00, 0x0A): "Turn off light",
    (0x00, 0x0B): "Turn on red light",
    (0x00, 0x0C): "Turn on green light",
    (0x00, 0x0D): "Turn on blue light",
    (0x00, 0x0E): "Turn on yellow light",
    (0x00, 0x21): "Return to origin",
    (0x00, 0x27): "Move up",
    (0x00, 0x28): "Move down",
    (0x00, 0x2B): "Grip close",
    (0x00, 0x2C): "Grip open",
    (0x00, 0x03): "System sleep"
}

WAKE_WORDS = {
    0x01: "Hello Xiaoxi",
    0x02: "Xiaoxi Xiaoxi",
    0x03: "Juxi Technology"
}

def read_voice_command():
    """Read and parse voice command frames from serial port"""
    if ser.in_waiting >= 5:
        frame = ser.read(5)
        # Verify frame header and footer
        if frame[0] == 0xAA and frame[1] == 0x55 and frame[4] == 0xFB:
            # Wake word detected
            if frame[3] == 0x00:
                return f"[WAKE] {WAKE_WORDS.get(frame[2], 'Unknown wake word')}"
            # Command received
            else:
                cmd = COMMANDS.get((frame[2], frame[3]), f"Unknown command: {frame[2]}:{frame[3]}")
                return f"[COMMAND] {cmd}"
    return None

# Main execution loop
if __name__ == "__main__":
    try:
        print("KWS Wake-up Sound Card Test")
        print("Listening for voice commands... (Press Ctrl+C to exit)")
        print("-" * 50)
        
        while True:
            result = read_voice_command()
            if result:
                print(result)
            time.sleep(0.01)
            
    except KeyboardInterrupt:
        ser.close()
        print("\n" + "-" * 50)
        print("Program terminated")

使用说明

  1. 通过USB端口将KWS声卡连接到您的设备
  2. 如果需要,安装CH341串口驱动(可在以下链接获取:https://www.wch.cn/downloads/CH341SER_EXE.html
  3. 修改代码中的串口名称以匹配您的系统
  4. 运行Python脚本
  5. 说出唤醒词(“你好小犀”)以激活模块
  6. 在确认音后5秒内说出您的指令
  7. 模块将识别并通过串口输出指令

高级应用:ROS2集成

该模块与ROS2(机器人操作系统2)无缝集成,可用于机器人应用。以下是一个简化的语音控制节点示例:

#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
import serial

class KWSVoiceControlNode(Node):
    def __init__(self):
        super().__init__('kws_voice_control_node')
        
        # Create publisher for voice commands
        self.cmd_publisher = self.create_publisher(String, '/kws/voice_command', 10)
        
        # Initialize serial port
        self.ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.01)
        
        # Create timer for serial reading
        self.timer = self.create_timer(0.01, self.serial_read_callback)
        
        self.get_logger().info("KWS Voice Control Node started successfully")
        self.get_logger().info("Listening for wake words and commands...")

    def serial_read_callback(self):
        """Read and process serial data"""
        if self.ser.in_waiting >= 5:
            frame = self.ser.read(5)
            if frame[0] == 0xAA and frame[1] == 0x55 and frame[4] == 0xFB:
                msg = String()
                
                # Process wake event
                if frame[3] == 0x00:
                    wake_word = {0x01: "hello_xiaoxi", 0x02: "xiaoxi_xiaoxi", 0x03: "juxi"}.get(frame[2], "unknown")
                    msg.data = f"wake:{wake_word}"
                    self.get_logger().info(f"Wake up detected: {wake_word}")
                
                # Process command event
                else:
                    cmd_data = f"{frame[2]}:{frame[3]}"
                    msg.data = f"command:{cmd_data}"
                    self.get_logger().info(f"Command received: {cmd_data}")
                
                # Publish message
                self.cmd_publisher.publish(msg)

def main(args=None):
    rclpy.init(args=args)
    node = KWSVoiceControlNode()
    
    try:
        rclpy.spin(node)
    except KeyboardInterrupt:
        node.get_logger().info("Node interrupted by user")
    finally:
        node.destroy_node()
        rclpy.shutdown()

if __name__ == '__main__':
    main()

典型应用场景

  • 🤖 机器人:用于移动机器人、机械臂、无人机和服务机器人的语音控制
  • 🏠 智能家居:用于灯光系统、家电、窗帘控制和安防系统的语音控制
  • 🏭 工业控制:用于工业设备、生产线和车间控制的免提操作
  • 🚗 汽车:用于车载信息娱乐、气候控制和车辆功能的语音控制系统
  • 🎮 物联网设备:用于智能音箱、智能显示器和其他互联设备的语音交互
  • 🎓 教育与研究:用于语音交互项目和机器人研究的开发平台

技术规格

参数 规格
芯片组 CI1302高性能语音识别SoC
识别距离 0.5m ~ 5m(可调)
响应时间 < 300ms
识别准确率 > 95%(安静环境,背景噪音< 60dB)
支持语言 中文,英文(可定制其他语言)
通信接口 USB串口 (CDC-ACM),115200波特率
工作电压 5V DC(USB供电)
工作电流 < 50mA(激活模式),< 10mA(空闲模式)
工作温度 -10°C ~ 60°C
存储温度 -20°C ~ 85°C
尺寸 40mm x 30mm x 10mm
音频输出 1W扬声器驱动输出
麦克风 内置高灵敏度MEMS麦克风

固件定制

模块支持完全自定义唤醒词和指令集:

  • 访问启英泰伦语音AI平台
  • 创建新项目,配置CI1302芯片
  • 添加您的自定义唤醒词和指令短语
  • 配置响应提示音和播报内容
  • 编译并下载定制固件
  • 使用官方烧录工具将固件烧录到模块中

资源与支持

 

本文为概述。请阅读维基上的完整技术文档。

阅读维基百科上的完整文章 →

在飞书知识库中打开