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")
使用說明
- 透過USB埠將KWS音效卡連接到您的裝置
- 如有需要,請安裝CH341序列驅動程式(可從以下網址下載:https://www.wch.cn/downloads/CH341SER_EXE.html)
- 修改程式碼中的序列埠名稱以符合您的系統
- 執行Python指令碼
- 說出喚醒詞(「Hello Xiaoxi」)以啟動模組
- 在確認音效後5秒內說出您的指令
- 模組將辨識並透過序列埠輸出指令
進階應用: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晶片組
- 添加您的客製化喚醒詞和指令詞
- 配置回應音效和廣播內容
- 編譯並下載客製化韌體
- 使用官方程式設計工具將韌體刷寫到模組
資源與支援
- 巨犀科技GitHub:官方開源程式碼、範例和開發資源
- 飛書知識庫:完整的說明文件、使用者指南和技術支援

