Language
Juxi KWS 웨이크업 사운드 카드는 임베디드 시스템, 로보틱스, IoT 애플리케이션을 위해 설계된 고성능 오프라인 음성 인식 모듈입니다. 클라우드 의존 없이 로컬에서 처리되므로 낮은 지연 시간으로 빠르고 안정적인 음성 제어를 제공하며, 빠른 응답과 데이터 프라이버시가 필요한 시나리오에 적합합니다.
주요 기능
- ✅ 100% 오프라인 처리: 모든 음성 인식이 모듈에서 로컬로 실행되며 인터넷 연결이 필요 없어 데이터 프라이버시와 낮은 지연 시간을 보장합니다
- 🎤 높은 인식 정확도: 중국어와 영어 음성 명령을 지원하며 일반 환경에서 >95%의 인식 정확도를 제공합니다
- ⚡ 초저지연: 음성 명령 입력 후 300ms 이내에 응답하여 실시간 제어 경험을 제공합니다
- 🔧 높은 맞춤성: 공식 펌웨어 설정 도구를 통해 커스텀 웨이크워드와 명령어 구문을 지원합니다
- 🖥️ 멀티 플랫폼 지원: Raspberry Pi, 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(Robot Operating System 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()
대표적인 응용 시나리오
- 🤖 로보틱스: 이동 로봇, 로봇 팔, UAV, 서비스 로봇의 음성 제어
- 🏠 스마트 홈: 조명, 가전제품, 커튼, 보안 시스템의 음성 제어
- 🏭 산업 제어: 산업 장비, 생산 라인, 작업장 제어의 핸즈프리 조작
- 🚗 자동차: 인포테인먼트, 공조, 차량 기능을 위한 차량 내 음성 제어 시스템
- 🎮 IoT 기기: 스마트 스피커, 스마트 디스플레이 및 기타 연결 기기의 음성 상호작용
- 🎓 교육 & 연구: 음성 상호작용 프로젝트와 로보틱스 연구를 위한 개발 플랫폼
기술 사양
| 파라미터 | 사양 |
|---|---|
| 칩셋 | 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 마이크 내장 |
펌웨어 맞춤 설정
모듈은 완전히 맞춤 설정 가능한 웨이크워드와 명령 세트를 지원합니다:
- 다음을 방문하세요: Qiying Tairen Voice AI Platform
- CI1302 칩셋 구성으로 새 프로젝트를 만드세요
- 커스텀 웨이크워드와 명령어 구문을 추가하세요
- 응답 톤과 방송 콘텐츠를 구성하세요
- 맞춤 설정한 펌웨어를 컴파일하고 다운로드하세요
- 공식 프로그래밍 도구를 사용해 모듈에 펌웨어를 플래시하세요
리소스 & 지원
- JuxiTechnology github: 공식 오픈소스 코드, 예제, 개발 리소스
- Lark Wiki: 완전한 문서, 사용자 가이드, 기술 지원

