KWS 喚醒音效卡 - 產品介紹

Language

巨犀KWS喚醒音效卡是一款專為嵌入式系統、機器人及物聯網應用設計的高性能離線語音辨識模組。它支援本機處理,不依賴雲端,提供快速、可靠且低延遲的語音控制,非常適合需要快速響應和資料隱私的場景。

主要功能

  • ✅ 100% 離線處理:所有語音辨識均在本機模組上運行,無需網路連接,確保資料隱私和低延遲
  • 🎤 高辨識準確率:支援中英文語音指令,在正常環境下辨識準確率超過95%
  • ⚡ 超低延遲:語音指令輸入後300毫秒內響應,提供即時控制體驗
  • 🔧 高度客製化:透過官方韌體配置工具支援客製化喚醒詞和指令詞
  • 🖥️ 多平台支援:相容樹莓派、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. 說出喚醒詞(「Hello Xiaoxi」)以啟動模組
  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麥克風

韌體客製化

該模組支援完全客製化的喚醒詞和指令集:

  1. 造訪啟英泰倫語音AI平台
  2. 建立一個新專案,配置CI1302晶片組
  3. 添加您的客製化喚醒詞和指令詞
  4. 配置回應音效和廣播內容
  5. 編譯並下載客製化韌體
  6. 使用官方程式設計工具將韌體刷寫到模組

資源與支援

 

這篇文章是摘要。請在維基上閱讀完整的技術文件。

在維基百科上閱讀全文 →

在飛書知識庫中開啟