Skip to content

Commit 2d99be2

Browse files
authored
Merge pull request #27 from tuya/feat-support-kws-vad-echo
feat: support kws vad echo
2 parents 3e13177 + 791d0fb commit 2d99be2

5 files changed

Lines changed: 101 additions & 2 deletions

File tree

tyutool/ai_debug/ser_debug.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ def __init__(self, port, baud, save,
3333
'1': {'name': 'dump_ref.pcm',
3434
'file': None, 'active': False, 'length': 0},
3535
'2': {'name': 'dump_aec.pcm',
36+
'file': None, 'active': False, 'length': 0},
37+
'3': {'name': 'dump_kws.pcm',
38+
'file': None, 'active': False, 'length': 0},
39+
'4': {'name': 'dump_vad.pcm',
3640
'file': None, 'active': False, 'length': 0}
3741
}
3842
self.current_dump_channel = None
@@ -133,6 +137,13 @@ def send_command(self, cmd):
133137
return False
134138
return True
135139

140+
def send_echo(self, message):
141+
if not message:
142+
self.logger.warning(f"Invalid message")
143+
return
144+
145+
self.send_command(f"echo {message}")
146+
136147
def start_dump(self, channel, prefix=""):
137148
if channel not in self.dump_files:
138149
self.logger.warning(f"Invalid channel: {channel}")
@@ -195,6 +206,8 @@ def show_help(self):
195206
print("dump 0 - Dump microphone channel")
196207
print("dump 1 - Dump reference channel")
197208
print("dump 2 - Dump AEC channel")
209+
print("dump 3 - Dump KWS channel")
210+
print("dump 4 - Dump VAD channel")
198211
print("bg 0 - white noise")
199212
print("bg 1 - 1K-0dB (bg 1 1000)")
200213
print("bg 2 - sweep frequency constantly")
@@ -210,6 +223,7 @@ def show_help(self):
210223
print("alg get <para> \
211224
- Get audio algorithm parameters (e.g.: alg get aec_ec_depth)")
212225
print("alg dump - Dump audio algorithm parameters")
226+
print("echo <info> - Send message")
213227
print("quit - Exit the program")
214228
pass
215229

@@ -224,11 +238,16 @@ def process_input_cmd(self, cmd):
224238
return True
225239

226240
# Dump
227-
if cmd in ['dump 0', 'dump 1', 'dump 2']:
241+
if cmd in ['dump 0', 'dump 1', 'dump 2', 'dump 3', 'dump 4']:
228242
channel = cmd.split()[1]
229243
self.start_dump(channel)
230244
return True
231245

246+
elif cmd.startswith('echo'):
247+
message = cmd.split()[1]
248+
self.send_echo(message)
249+
return True
250+
232251
# Check [alg set] params
233252
elif cmd.startswith('alg set '):
234253
parts = cmd.split()

tyutool/cli/cli_ai_debug.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# -*- coding: utf-8 -*-
33

44
import sys
5+
import time
56
import click
67
import threading
78

@@ -134,9 +135,52 @@ def ser_auto_cli(port, baud, save):
134135
pass
135136

136137

138+
@click.command()
139+
@click.option('-p', '--port',
140+
type=str, required=False,
141+
help="Target port")
142+
@click.option('-b', '--baud',
143+
type=int, default=460800,
144+
help="Uart baud rate")
145+
@click.option('-w', '--wait',
146+
type=int, default=5,
147+
help="wait for recvice uart dump.")
148+
@click.option('-s', '--save',
149+
type=str, default="ser_ai_debug",
150+
help="Save assets to catalog.")
151+
@click.argument('cmd_args', nargs=-1, required=True)
152+
153+
def ser_cli_cmd(port, baud, save, wait, cmd_args):
154+
logger = get_logger()
155+
logger.debug(f"port: {port}")
156+
logger.debug(f"baud: {baud}")
157+
logger.debug(f"save: {save}")
158+
logger.debug(f"wait: {wait}")
159+
logger.debug(f"cmd: {cmd_args}")
160+
161+
monitor = SerAIDebugMonitor(port, baud, save, logger, gui_mode=False)
162+
163+
if not monitor.open_port():
164+
return
165+
166+
# 启动读取线程
167+
monitor.start_reading()
168+
169+
# 输入命令,
170+
cmd = " ".join(cmd_args)
171+
print(cmd)
172+
monitor.process_input_cmd("".join(cmd))
173+
if cmd in ['dump 0', 'dump 1', 'dump 2', 'dump 3', 'dump 4']:
174+
time.sleep(wait)
175+
monitor.stop_reading()
176+
monitor.close_port()
177+
pass
178+
179+
137180
CLIS = {
138181
"web": web_cli,
139182
"ser": ser_cli,
183+
"ser_cmd": ser_cli_cmd,
140184
"ser_auto": ser_auto_cli,
141185
}
142186

tyutool/gui/ser_debug/ser_debug_ui.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,12 @@ def serDebugUiSetup(self):
115115
self.ui.pushButtonSDDump2.clicked.connect(
116116
lambda: self.pushButtonSDCmdClicked("dump 2")
117117
)
118+
self.ui.pushButtonSDDump3.clicked.connect(
119+
lambda: self.pushButtonSDCmdClicked("dump 3")
120+
)
121+
self.ui.pushButtonSDDump4.clicked.connect(
122+
lambda: self.pushButtonSDCmdClicked("dump 4")
123+
)
118124
self.ui.pushButtonSDBg0.clicked.connect(
119125
lambda: self.pushButtonSDCmdClicked("bg 0")
120126
)

tyutool/gui/ui_main.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,34 @@ def setupUi(self, MainWindow):
560560

561561
self.verticalLayout_11.addLayout(self.horizontalLayout_17)
562562

563+
self.horizontalLayout_50 = QHBoxLayout()
564+
self.horizontalLayout_50.setObjectName(u"horizontalLayout_50")
565+
self.pushButtonSDDump3 = QPushButton(self.scrollAreaWidgetContents)
566+
self.pushButtonSDDump3.setObjectName(u"pushButtonSDDump3")
567+
self.pushButtonSDDump3.setStyleSheet(u"text-align: left;\n"
568+
"padding-left: 10px;\n"
569+
"padding-top: 4px;\n"
570+
"padding-bottom: 4px;")
571+
572+
self.horizontalLayout_50.addWidget(self.pushButtonSDDump3)
573+
574+
575+
self.verticalLayout_11.addLayout(self.horizontalLayout_50)
576+
577+
self.horizontalLayout_51 = QHBoxLayout()
578+
self.horizontalLayout_51.setObjectName(u"horizontalLayout_51")
579+
self.pushButtonSDDump4 = QPushButton(self.scrollAreaWidgetContents)
580+
self.pushButtonSDDump4.setObjectName(u"pushButtonSDDump4")
581+
self.pushButtonSDDump4.setStyleSheet(u"text-align: left;\n"
582+
"padding-left: 10px;\n"
583+
"padding-top: 4px;\n"
584+
"padding-bottom: 4px;")
585+
586+
self.horizontalLayout_51.addWidget(self.pushButtonSDDump4)
587+
588+
589+
self.verticalLayout_11.addLayout(self.horizontalLayout_51)
590+
563591
self.horizontalLayout_18 = QHBoxLayout()
564592
self.horizontalLayout_18.setObjectName(u"horizontalLayout_18")
565593
self.pushButtonSDBg0 = QPushButton(self.scrollAreaWidgetContents)
@@ -1187,6 +1215,8 @@ def retranslateUi(self, MainWindow):
11871215
self.pushButtonSDDump0.setText(QCoreApplication.translate("MainWindow", u"dump: microphone channel", None))
11881216
self.pushButtonSDDump1.setText(QCoreApplication.translate("MainWindow", u"dump: reference channel", None))
11891217
self.pushButtonSDDump2.setText(QCoreApplication.translate("MainWindow", u"dump: AEC channel", None))
1218+
self.pushButtonSDDump3.setText(QCoreApplication.translate("MainWindow", u"dump: KWS channel", None))
1219+
self.pushButtonSDDump4.setText(QCoreApplication.translate("MainWindow", u"dump: VAD channel", None))
11901220
self.pushButtonSDBg0.setText(QCoreApplication.translate("MainWindow", u"play: white noise", None))
11911221
self.pushButtonSDBg1.setText(QCoreApplication.translate("MainWindow", u"play: 1K-0dB", None))
11921222
self.pushButtonSDBg2.setText(QCoreApplication.translate("MainWindow", u"play: sweep frequency constantly", None))

tyutool/util/util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import socket
1212

1313
TYUTOOL_ROOT = os.path.dirname(os.path.abspath(sys.argv[0]))
14-
TYUTOOL_VERSION = "2.1.0"
14+
TYUTOOL_VERSION = "2.2.0"
1515

1616

1717
def tyutool_env():

0 commit comments

Comments
 (0)