smartpi 0.1.40__py3-none-any.whl → 0.1.41__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. smartpi/__init__.py +1 -1
  2. smartpi/ai_asr.py +1036 -0
  3. smartpi/ai_llm.py +934 -0
  4. smartpi/ai_tts.py +938 -0
  5. smartpi/ai_vad.py +199 -0
  6. smartpi/base_driver.py +265 -11
  7. smartpi/local_model.py +432 -0
  8. smartpi/mcp_client.py +100 -0
  9. smartpi/mcp_fastmcp.py +322 -0
  10. smartpi/mcp_intent_recognizer.py +408 -0
  11. smartpi/models/__init__.py +0 -0
  12. smartpi/models/snakers4_silero-vad/__init__.py +0 -0
  13. smartpi/models/snakers4_silero-vad/hubconf.py +56 -0
  14. smartpi/models/snakers4_silero-vad/src/silero_vad/data/silero_vad.jit +0 -0
  15. smartpi/models/snakers4_silero-vad/src/silero_vad/data/silero_vad.onnx +0 -0
  16. smartpi/models/snakers4_silero-vad/src/silero_vad/data/silero_vad_16k_op15.onnx +0 -0
  17. smartpi/models/snakers4_silero-vad/src/silero_vad/data/silero_vad_half.onnx +0 -0
  18. smartpi/tencentcloud-speech-sdk-python/__init__.py +1 -0
  19. smartpi/tencentcloud-speech-sdk-python/asr/__init__.py +0 -0
  20. smartpi/tencentcloud-speech-sdk-python/asr/flash_recognizer.py +178 -0
  21. smartpi/tencentcloud-speech-sdk-python/asr/speech_recognizer.py +311 -0
  22. smartpi/tencentcloud-speech-sdk-python/common/__init__.py +1 -0
  23. smartpi/tencentcloud-speech-sdk-python/common/credential.py +6 -0
  24. smartpi/tencentcloud-speech-sdk-python/common/log.py +16 -0
  25. smartpi/tencentcloud-speech-sdk-python/common/utils.py +7 -0
  26. smartpi/tencentcloud-speech-sdk-python/examples/tts/tts_text.txt +60 -0
  27. smartpi/tencentcloud-speech-sdk-python/soe/__init__.py +0 -0
  28. smartpi/tencentcloud-speech-sdk-python/soe/speaking_assessment.py +276 -0
  29. smartpi/tencentcloud-speech-sdk-python/tts/__init__.py +0 -0
  30. smartpi/tencentcloud-speech-sdk-python/tts/flowing_speech_synthesizer.py +294 -0
  31. smartpi/tencentcloud-speech-sdk-python/tts/speech_synthesizer.py +144 -0
  32. smartpi/tencentcloud-speech-sdk-python/tts/speech_synthesizer_ws.py +234 -0
  33. smartpi/tencentcloud-speech-sdk-python/vc/__init__.py +0 -0
  34. smartpi/tencentcloud-speech-sdk-python/vc/speech_convertor_ws.py +237 -0
  35. {smartpi-0.1.40.dist-info → smartpi-0.1.41.dist-info}/METADATA +1 -1
  36. smartpi-0.1.41.dist-info/RECORD +76 -0
  37. smartpi-0.1.40.dist-info/RECORD +0 -44
  38. {smartpi-0.1.40.dist-info → smartpi-0.1.41.dist-info}/WHEEL +0 -0
  39. {smartpi-0.1.40.dist-info → smartpi-0.1.41.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,237 @@
1
+ # -*- coding: utf-8 -*-
2
+ import sys
3
+ import hmac
4
+ import hashlib
5
+ import base64
6
+ import time
7
+ import json
8
+ import threading
9
+ from websocket import ABNF, WebSocketApp
10
+ import uuid
11
+ import urllib
12
+ from common.log import logger
13
+
14
+
15
+ _PROTOCOL = "wss://"
16
+ _HOST = "tts.cloud.tencent.com"
17
+ _PATH = "/vc_stream"
18
+
19
+
20
+ class SpeechConvertListener(object):
21
+ '''
22
+ '''
23
+ def on_convert_start(self, voice_id):
24
+ logger.info("on_convert_start: voice_id={}".format(voice_id))
25
+
26
+ def on_convert_end(self):
27
+ logger.info("on_convert_end: -")
28
+
29
+ def on_audio_result(self, audio_bytes):
30
+ logger.info("on_audio_result: recv audio bytes, len={}".format(len(audio_bytes)))
31
+
32
+ def on_convert_fail(self, response):
33
+ logger.error("on_convert_fail: code={} msg={}".format(
34
+ response['Code'], response['Message']
35
+ ))
36
+
37
+
38
+ NOTOPEN = 0
39
+ STARTED = 1
40
+ OPENED = 2
41
+ FINAL = 3
42
+ ERROR = 4
43
+ CLOSED = 5
44
+
45
+ class SpeechConvertor:
46
+
47
+ def __init__(self, appid, credential, listener):
48
+ self.appid = appid
49
+ self.credential = credential
50
+ self.status = NOTOPEN
51
+ self.ws = None
52
+ self.wst = None
53
+ self.listener = listener
54
+
55
+ self.voice_id = ""
56
+ self.voice_type = 301005
57
+ self.codec = "pcm"
58
+ self.sample_rate = 16000
59
+ self.volume = 0
60
+ self.speed = 0
61
+
62
+ def set_voice_type(self, voice_type):
63
+ self.voice_type = voice_type
64
+
65
+ def set_codec(self, codec):
66
+ self.codec = codec
67
+
68
+ def set_sample_rate(self, sample_rate):
69
+ self.sample_rate = sample_rate
70
+
71
+ def set_volume(self, volume):
72
+ self.volume = volume
73
+
74
+ def __gen_signature(self, params):
75
+ sort_dict = sorted(params.keys())
76
+ sign_str = _HOST + _PATH + '/' + str(self.appid) + "?"
77
+ for key in sort_dict:
78
+ sign_str = sign_str + key + "=" + str(params[key]) + '&'
79
+ sign_str = sign_str[:-1]
80
+ logger.info("sign_url={}".format(sign_str))
81
+ secret_key = self.credential.secret_key.encode('utf-8')
82
+ sign_str = sign_str.encode('utf-8')
83
+ hmacstr = hmac.new(secret_key, sign_str, hashlib.sha1).digest()
84
+ s = base64.b64encode(hmacstr)
85
+ s = s.decode('utf-8')
86
+ return s
87
+
88
+ def __gen_params(self, voice_id):
89
+ self.voice_id = voice_id
90
+
91
+ params = dict()
92
+ params['SecretId'] = self.credential.secret_id
93
+ params['VoiceType'] = self.voice_type
94
+ params['Codec'] = self.codec
95
+ params['SampleRate'] = self.sample_rate
96
+ params['Volume'] = self.volume
97
+ params['VoiceId'] = self.voice_id
98
+ params['End'] = 0
99
+
100
+ timestamp = int(time.time())
101
+ params['Timestamp'] = timestamp
102
+ params['Expired'] = timestamp + 24 * 60 * 60
103
+ return params
104
+
105
+ def __create_query_string(self, param):
106
+ param = sorted(param.items(), key=lambda d: d[0])
107
+
108
+ url = _PROTOCOL + _HOST + _PATH + '/' + str(self.appid)
109
+
110
+ signstr = url + "?"
111
+ for x in param:
112
+ tmp = x
113
+ for t in tmp:
114
+ signstr += str(t)
115
+ signstr += "="
116
+ signstr = signstr[:-1]
117
+ signstr += "&"
118
+ signstr = signstr[:-1]
119
+ return signstr
120
+
121
+ def start(self):
122
+ logger.info("convertor start: begin")
123
+
124
+ def _close_conn(reason):
125
+ ta = time.time()
126
+ self.ws.close()
127
+ tb = time.time()
128
+ logger.info("client has closed connection ({}), cost {} ms".format(reason, int((tb-ta)*1000)))
129
+
130
+ def _on_data(ws, data, opcode, flag):
131
+ # NOTE print all message that client received
132
+ #logger.info("data={} opcode={} flag={}".format(data, opcode, flag))
133
+
134
+ if opcode == ABNF.OPCODE_BINARY:
135
+ length = int.from_bytes(data[:4], byteorder='big', signed=False)
136
+ json_str = bytes.decode(data[4: length + 4])
137
+ audio_data = data[4 + length:]
138
+ logger.info("recv raw json: {}".format(json_str))
139
+
140
+ resp = json.loads(json_str)
141
+ if resp['Code'] != 0:
142
+ logger.error("server convert fail voice_id={} code={} msg_id={} msg={}".format(
143
+ resp['VoiceId'], resp['Code'], resp['MessageId'], resp['Message']
144
+ ))
145
+ self.listener.on_convert_fail(resp)
146
+ return
147
+
148
+ # normal recv converted data
149
+ self.listener.on_audio_result(audio_data) # <class 'bytes'>
150
+ if "Final" in resp and resp['Final'] == 1:
151
+ logger.info("recv FINAL frame")
152
+ self.status = FINAL
153
+ _close_conn("after recv final")
154
+ self.listener.on_convert_end()
155
+ elif opcode == ABNF.OPCODE_TEXT:
156
+ pass
157
+ else:
158
+ logger.error("invalid on_data code, opcode=".format(opcode))
159
+
160
+ def _on_error(ws, error):
161
+ if self.status == FINAL or self.status == CLOSED:
162
+ return
163
+ self.status = ERROR
164
+ logger.error("error={}, voice_id={}".format(error, self.voice_id))
165
+ _close_conn("after recv error")
166
+
167
+ def _on_close(ws, close_status_code, close_msg):
168
+ logger.info("conn closed, close_status_code={} close_msg={}".format(close_status_code, close_msg))
169
+ self.status = CLOSED
170
+
171
+ def _on_open(ws):
172
+ logger.info("conn opened")
173
+ self.status = OPENED
174
+
175
+ voice_id = str(uuid.uuid1())
176
+ params = self.__gen_params(voice_id)
177
+ signature = self.__gen_signature(params)
178
+ requrl = self.__create_query_string(params)
179
+
180
+ autho = urllib.parse.quote(signature)
181
+ requrl += "&Signature=%s" % autho
182
+ logger.info("req_url={}".format(requrl))
183
+
184
+ self.ws = WebSocketApp(requrl, None,
185
+ on_error=_on_error, on_close=_on_close,
186
+ on_data=_on_data)
187
+ self.ws.on_open = _on_open
188
+
189
+ self.wst = threading.Thread(target=self.ws.run_forever)
190
+ self.wst.daemon = True
191
+ self.wst.start()
192
+ self.status = STARTED
193
+ self.listener.on_convert_start(voice_id)
194
+
195
+ logger.info("convertor start: end")
196
+
197
+ def wait(self):
198
+ logger.info("convertor wait: begin")
199
+ if self.ws:
200
+ if self.wst and self.wst.is_alive():
201
+ self.wst.join()
202
+ logger.info("convertor wait: end")
203
+
204
+ def send(self, audio_data, is_end=False):
205
+ logger.info("convertor send: begin")
206
+ if not self.ws:
207
+ logger.error("convertor send: ws is None")
208
+ return False
209
+ if self.status != OPENED:
210
+ logger.error("ws not opened, status={}".format(self.status))
211
+ return False
212
+
213
+ # message format: HEAD + JSON + AUDIO
214
+ # refer to https://cloud.tencent.com/document/product/1664/85973#edac94f7-2e9d-4e59-aac3-fd1bea693be0
215
+ json_body = json.dumps({
216
+ "End": 1 if is_end else 0,
217
+ })
218
+ json_body_bytes = bytes(json_body, encoding='utf-8')
219
+ json_body_len = len(json_body_bytes)
220
+
221
+ head = json_body_len.to_bytes(4, byteorder='big')
222
+ message = head + json_body_bytes + audio_data
223
+ logger.info("send json_body_len={} json_body={} audio_len={}".format(
224
+ json_body_len, json_body, len(audio_data)))
225
+
226
+ self.ws.send(message, ABNF.OPCODE_BINARY)
227
+ logger.info("convertor send: end")
228
+ return True
229
+
230
+ def wait_to_send(self):
231
+ while True:
232
+ if self.status < OPENED:
233
+ time.sleep(0.01)
234
+ else:
235
+ break
236
+ logger.info("wait_to_send: status={}".format(self.status))
237
+ return self.status == OPENED
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: smartpi
3
- Version: 0.1.40
3
+ Version: 0.1.41
4
4
  Summary: A library use for H2-RCU
5
5
  Author: ZMROBO
6
6
  Classifier: Programming Language :: Python :: 3
@@ -0,0 +1,76 @@
1
+ smartpi/__init__.py,sha256=ioz08SpgjM2Df14M57OTfaAqxYbI-A6h2BeKEQ--8GI,356
2
+ smartpi/_gui.py,sha256=ij-6HZAEIwdy_hvU7f0NkyQjx_-eephijlKbGUhf8Uo,2177
3
+ smartpi/ai_asr.py,sha256=eoF5z4oRJWpSk13tqO2M2N7ZBCkNWHPhQDt4-uUo_ko,40079
4
+ smartpi/ai_llm.py,sha256=-khBK2PMwbYUDvbaCTRCktE4dFloqfai4mHI-V8GEXM,36751
5
+ smartpi/ai_tts.py,sha256=OjAJs3XOykiufXuEDiaD0coKsWjknPdhwRpRzGLDZKU,36061
6
+ smartpi/ai_vad.py,sha256=RJBieDmH5A0FITfULhpcn6Vpy_NhVXK5s416D-Lm2nU,8983
7
+ smartpi/base_driver.py,sha256=nGkGp7cAgeNo7BijHMJKHfdVZKIKuZNTx9GqLFPP5TI,31486
8
+ smartpi/camera.py,sha256=AVpZsMpW-24CP3BOfarjmRawMJdTOZY7Crq7FeLOqb4,3292
9
+ smartpi/color_sensor.py,sha256=ckIXD81YnqPo6nENAnipNp3gY12FJ235QKj0e8Cul9E,521
10
+ smartpi/cw2015.py,sha256=1lAF-pi_ye_ya1AZQS1sjbgsDf7MThO5IAskKsNGBzA,5695
11
+ smartpi/flash.py,sha256=-pUqg6FSVoBiLFKqrG9B4dFqn8lICnQsSPJr_MtZLIU,4132
12
+ smartpi/humidity.py,sha256=uoSFt5mAKr-dHz125uznHXAPeTN61ZR92_2nQmytQ5M,522
13
+ smartpi/led.py,sha256=6-y5MFGk0tN5N_WHclXbSRyP-anhCHhgXI3MdAQCKWM,617
14
+ smartpi/light_sensor.py,sha256=-ICMwQcWIZ6LGOz_A2WL5h5CL1v4opmlfacN35veMSE,2398
15
+ smartpi/local_model.py,sha256=3LB93ZhR4ANIv57EF5PWeVN_LNoAMKLUGmQnQSrMe5Q,18961
16
+ smartpi/mcp_client.py,sha256=tPgivztxbENEUBaBEnFHfTuCqicTsXIObEBlbrrXPE4,3332
17
+ smartpi/mcp_fastmcp.py,sha256=2MRIShc7snk99MGIpWnQflToyIUfKziLOhZhSNZifzE,13316
18
+ smartpi/mcp_intent_recognizer.py,sha256=FGPHDu1DiPJoWTGEIN_vlFEHEBKyCGNLZegjxFyUcEk,18846
19
+ smartpi/motor.py,sha256=DvFzREEzyRafGmSCagU6ASeoE8fnAsKYI4oYMrkXXJc,5351
20
+ smartpi/move.py,sha256=s1ZnkFtp6SCBnxhBxp6qQjGbifdsY5hjVCwlarTsZto,6688
21
+ smartpi/onnx_hand_workflow.py,sha256=ZCoaWC6GygZSrhM6jhsuB6qmQ6GiAFFrso6rKAGmue8,8157
22
+ smartpi/onnx_image_workflow.py,sha256=-saM_NxR6yDz06xlWZOvHf6cq3zmtOCFhCyZTGqvuOk,6188
23
+ smartpi/onnx_pose_workflow.py,sha256=7hoZ31XfZRAbgmdQbgfK-xePniMa5mDEggV12F-Uq5c,20970
24
+ smartpi/onnx_text_workflow.py,sha256=6l9MTT2T1-rNye3_dSHLI2U749Z94aoRdkSe6CNXfHw,7191
25
+ smartpi/onnx_voice_workflow.py,sha256=jkMFzy3RUnLo8LZAuCUfsS3YCJWSZzZuiE4RFoQ2HZw,17440
26
+ smartpi/posenet_utils.py,sha256=o3scK41Eqvftav4y4vp6_6HinQWNCLeLpArXAzqQ-7s,8983
27
+ smartpi/rknn_hand_workflow.py,sha256=wsVN_PYP9M-1AFaN4yqrGksUBoamYfujW0nQq4nv3kU,10160
28
+ smartpi/rknn_image_workflow.py,sha256=4lTtcdmQ9KN5WiEnHayvqAd-dA0tiap5YXIqAMn5SoI,18444
29
+ smartpi/rknn_pose_workflow.py,sha256=LA6tXOI81R1IQhQvgBWLGV_I8Qa-ROUgXqj3kTEMfmc,27840
30
+ smartpi/rknn_text_workflow.py,sha256=KNBSetj3tmlLxdZOm0yzbiDnjH8S5191fuxh5Mi-uCY,9632
31
+ smartpi/rknn_voice_workflow.py,sha256=T8iRQWPtJYXqoHIZH2FiT1WLxwN3HQg4D-mg-5KvYdA,16326
32
+ smartpi/servo.py,sha256=0p09Jk-IVk5nLXz2AqFvytiYSSe4sMxdy1FaNMQijoY,5770
33
+ smartpi/temperature.py,sha256=xfM9V5dvJ9M-3rqnE2AjaYXEH9jP5s1_Myo4GEwH3NY,485
34
+ smartpi/touch_sensor.py,sha256=Zp7z0qnaZ99cuamakqDwI2tFd2a3CnjQ1rngdn_mZlM,463
35
+ smartpi/trace.py,sha256=EZhhWspxv6FsjKkWvSNnqXR2XKrfjntvAqQm2vn9bbE,4798
36
+ smartpi/ultrasonic.py,sha256=qrGge3G9_1s3ZdKYZRJ_FP8l_VhbpYEe-anlShooMwA,647
37
+ smartpi/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ smartpi/models/snakers4_silero-vad/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ smartpi/models/snakers4_silero-vad/hubconf.py,sha256=lD99cUdVPWatwB6V4RNMayD2BWZcBPaTtcgmywqjTLs,1992
40
+ smartpi/models/snakers4_silero-vad/src/silero_vad/data/silero_vad.jit,sha256=hcSOHw7LYE5dKiaPPM-5EtT36TWs3IavWj_FsK6nspo,2269612
41
+ smartpi/models/snakers4_silero-vad/src/silero_vad/data/silero_vad.onnx,sha256=JiOilT9v89LB5hdAxs23FoEzR5smff7xFKSjzFvdeI8,2327524
42
+ smartpi/models/snakers4_silero-vad/src/silero_vad/data/silero_vad_16k_op15.onnx,sha256=todaSbrPbVeCan4KVJ1aBddp7jRAXK3Mn_i0RCVEsfk,1289603
43
+ smartpi/models/snakers4_silero-vad/src/silero_vad/data/silero_vad_half.onnx,sha256=HgsZWtSAZZXvRGb0GdFvyn5K_PxmabjAtfduqHVHx2k,1280395
44
+ smartpi/posemodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
+ smartpi/posemodel/posenet.tflite,sha256=KFcCnk1X5KvJrVC_c_PhL76pdvwL0hZvBdNqhzZ7J2I,1303152
46
+ smartpi/tencentcloud-speech-sdk-python/__init__.py,sha256=-yYBDkgMDSHYf_F_uX23wZsDSjrudhppJvm34su8_I4,23
47
+ smartpi/tencentcloud-speech-sdk-python/asr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ smartpi/tencentcloud-speech-sdk-python/asr/flash_recognizer.py,sha256=FWJcVxkN6_KyeXmAhhlueoVvexs-dGnfzw3N7jPBPa8,5752
49
+ smartpi/tencentcloud-speech-sdk-python/asr/speech_recognizer.py,sha256=1X_5eSUEJGBDzffvKvIKFbwRgviXNGb7sTZqS7szyOc,9568
50
+ smartpi/tencentcloud-speech-sdk-python/common/__init__.py,sha256=CCIy8VClDV-BJWH-I2ntU0gcfShap6HEMWpdjSYGPKc,23
51
+ smartpi/tencentcloud-speech-sdk-python/common/credential.py,sha256=Igqg4FexZXidjj0W8MfqRJc-2gPrhIbm3w2re3QVBL0,198
52
+ smartpi/tencentcloud-speech-sdk-python/common/log.py,sha256=ekZVwv6USLyShxLTB-Mhog0g8w-qGkklOJjuAUtvQsk,536
53
+ smartpi/tencentcloud-speech-sdk-python/common/utils.py,sha256=baodAxaEpbGJQPmtvLQyyuav5K3ht_UBVq8s1yNH5Ww,116
54
+ smartpi/tencentcloud-speech-sdk-python/examples/tts/tts_text.txt,sha256=ufooughGwSPBnLxulH1BNwTFqsDSoLlvjRa2o-PJy1g,2669
55
+ smartpi/tencentcloud-speech-sdk-python/soe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
+ smartpi/tencentcloud-speech-sdk-python/soe/speaking_assessment.py,sha256=J4C2uAqRCVh9qICe6Ug-nJmnvmsJCfa2uylOXo6V-y8,8289
57
+ smartpi/tencentcloud-speech-sdk-python/tts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ smartpi/tencentcloud-speech-sdk-python/tts/flowing_speech_synthesizer.py,sha256=X20uhp-yfqtRBnwzpxnt6hBtTkvAGgzh4OzjnAgLGQs,9908
59
+ smartpi/tencentcloud-speech-sdk-python/tts/speech_synthesizer.py,sha256=8UltVigufuvIN_tYzUwsLsI4882MB7ZjAjelgyKDHjA,4216
60
+ smartpi/tencentcloud-speech-sdk-python/tts/speech_synthesizer_ws.py,sha256=G8Jc8S74Gekgsp_qFmgYN3IBRfeQWD8AtbwAl6NdMGE,7648
61
+ smartpi/tencentcloud-speech-sdk-python/vc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
+ smartpi/tencentcloud-speech-sdk-python/vc/speech_convertor_ws.py,sha256=JKZhJlFy4RTDVrg9Vqyr3cenNgHkK-NtJoTboVeX-dU,7799
63
+ smartpi/text_gte_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ smartpi/text_gte_model/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
+ smartpi/text_gte_model/config/config.json,sha256=dkFw_GRLSEkp6VT2U92alaGUfCRRJBQysJYSbJYznLc,818
66
+ smartpi/text_gte_model/config/quantize_config.json,sha256=snZbw5kBj_FupAbcYazm_11wNRCbX2m468VBjl6svd4,703
67
+ smartpi/text_gte_model/config/special_tokens_map.json,sha256=PDUH823_V7zkNyI9s7MIHR4rUuw-Vu5VQ4GT7LLJTdY,132
68
+ smartpi/text_gte_model/config/tokenizer.json,sha256=BC58aSuzfzE-tNG0UDwcFfNT_mJOYFaLoVoOs_JBEjQ,312882
69
+ smartpi/text_gte_model/config/tokenizer_config.json,sha256=w5RiDifbeIYy6vyGX5v94vFmcko1TMItqnY0RfcBO1Q,639
70
+ smartpi/text_gte_model/config/vocab.txt,sha256=oi9hP3uz_8h8XoHNh6rgLnVdJbIEm75zKoSKM8HzsC8,84758
71
+ smartpi/text_gte_model/gte/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
+ smartpi/text_gte_model/gte/gte_model.onnx,sha256=XXYg6TUhzOx1SqAhp6ePDU0QgeK6DQEqHATMuQQJCNE,30468366
73
+ smartpi-0.1.41.dist-info/METADATA,sha256=446DzYjpDU_MxEdwmQyiyx7pf6K-OAQIOW3sek2gnZU,614
74
+ smartpi-0.1.41.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
75
+ smartpi-0.1.41.dist-info/top_level.txt,sha256=PoLhUCmWAiQUg5UeN2fS-Y1iQyBbF2rdUlizXtpHGRQ,8
76
+ smartpi-0.1.41.dist-info/RECORD,,
@@ -1,44 +0,0 @@
1
- smartpi/__init__.py,sha256=lgvWM6XngdHhfhur-HqA9I6w80369Bds413J-z9-M00,356
2
- smartpi/_gui.py,sha256=ij-6HZAEIwdy_hvU7f0NkyQjx_-eephijlKbGUhf8Uo,2177
3
- smartpi/base_driver.py,sha256=3auYdDiVA_VUQTmf9P7Q3pKbQYoqSCGnlGVNm6fIJZA,22709
4
- smartpi/camera.py,sha256=AVpZsMpW-24CP3BOfarjmRawMJdTOZY7Crq7FeLOqb4,3292
5
- smartpi/color_sensor.py,sha256=ckIXD81YnqPo6nENAnipNp3gY12FJ235QKj0e8Cul9E,521
6
- smartpi/cw2015.py,sha256=1lAF-pi_ye_ya1AZQS1sjbgsDf7MThO5IAskKsNGBzA,5695
7
- smartpi/flash.py,sha256=-pUqg6FSVoBiLFKqrG9B4dFqn8lICnQsSPJr_MtZLIU,4132
8
- smartpi/humidity.py,sha256=uoSFt5mAKr-dHz125uznHXAPeTN61ZR92_2nQmytQ5M,522
9
- smartpi/led.py,sha256=6-y5MFGk0tN5N_WHclXbSRyP-anhCHhgXI3MdAQCKWM,617
10
- smartpi/light_sensor.py,sha256=-ICMwQcWIZ6LGOz_A2WL5h5CL1v4opmlfacN35veMSE,2398
11
- smartpi/motor.py,sha256=DvFzREEzyRafGmSCagU6ASeoE8fnAsKYI4oYMrkXXJc,5351
12
- smartpi/move.py,sha256=s1ZnkFtp6SCBnxhBxp6qQjGbifdsY5hjVCwlarTsZto,6688
13
- smartpi/onnx_hand_workflow.py,sha256=ZCoaWC6GygZSrhM6jhsuB6qmQ6GiAFFrso6rKAGmue8,8157
14
- smartpi/onnx_image_workflow.py,sha256=-saM_NxR6yDz06xlWZOvHf6cq3zmtOCFhCyZTGqvuOk,6188
15
- smartpi/onnx_pose_workflow.py,sha256=7hoZ31XfZRAbgmdQbgfK-xePniMa5mDEggV12F-Uq5c,20970
16
- smartpi/onnx_text_workflow.py,sha256=6l9MTT2T1-rNye3_dSHLI2U749Z94aoRdkSe6CNXfHw,7191
17
- smartpi/onnx_voice_workflow.py,sha256=jkMFzy3RUnLo8LZAuCUfsS3YCJWSZzZuiE4RFoQ2HZw,17440
18
- smartpi/posenet_utils.py,sha256=o3scK41Eqvftav4y4vp6_6HinQWNCLeLpArXAzqQ-7s,8983
19
- smartpi/rknn_hand_workflow.py,sha256=wsVN_PYP9M-1AFaN4yqrGksUBoamYfujW0nQq4nv3kU,10160
20
- smartpi/rknn_image_workflow.py,sha256=4lTtcdmQ9KN5WiEnHayvqAd-dA0tiap5YXIqAMn5SoI,18444
21
- smartpi/rknn_pose_workflow.py,sha256=LA6tXOI81R1IQhQvgBWLGV_I8Qa-ROUgXqj3kTEMfmc,27840
22
- smartpi/rknn_text_workflow.py,sha256=KNBSetj3tmlLxdZOm0yzbiDnjH8S5191fuxh5Mi-uCY,9632
23
- smartpi/rknn_voice_workflow.py,sha256=T8iRQWPtJYXqoHIZH2FiT1WLxwN3HQg4D-mg-5KvYdA,16326
24
- smartpi/servo.py,sha256=0p09Jk-IVk5nLXz2AqFvytiYSSe4sMxdy1FaNMQijoY,5770
25
- smartpi/temperature.py,sha256=xfM9V5dvJ9M-3rqnE2AjaYXEH9jP5s1_Myo4GEwH3NY,485
26
- smartpi/touch_sensor.py,sha256=Zp7z0qnaZ99cuamakqDwI2tFd2a3CnjQ1rngdn_mZlM,463
27
- smartpi/trace.py,sha256=EZhhWspxv6FsjKkWvSNnqXR2XKrfjntvAqQm2vn9bbE,4798
28
- smartpi/ultrasonic.py,sha256=qrGge3G9_1s3ZdKYZRJ_FP8l_VhbpYEe-anlShooMwA,647
29
- smartpi/posemodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- smartpi/posemodel/posenet.tflite,sha256=KFcCnk1X5KvJrVC_c_PhL76pdvwL0hZvBdNqhzZ7J2I,1303152
31
- smartpi/text_gte_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- smartpi/text_gte_model/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- smartpi/text_gte_model/config/config.json,sha256=dkFw_GRLSEkp6VT2U92alaGUfCRRJBQysJYSbJYznLc,818
34
- smartpi/text_gte_model/config/quantize_config.json,sha256=snZbw5kBj_FupAbcYazm_11wNRCbX2m468VBjl6svd4,703
35
- smartpi/text_gte_model/config/special_tokens_map.json,sha256=PDUH823_V7zkNyI9s7MIHR4rUuw-Vu5VQ4GT7LLJTdY,132
36
- smartpi/text_gte_model/config/tokenizer.json,sha256=BC58aSuzfzE-tNG0UDwcFfNT_mJOYFaLoVoOs_JBEjQ,312882
37
- smartpi/text_gte_model/config/tokenizer_config.json,sha256=w5RiDifbeIYy6vyGX5v94vFmcko1TMItqnY0RfcBO1Q,639
38
- smartpi/text_gte_model/config/vocab.txt,sha256=oi9hP3uz_8h8XoHNh6rgLnVdJbIEm75zKoSKM8HzsC8,84758
39
- smartpi/text_gte_model/gte/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- smartpi/text_gte_model/gte/gte_model.onnx,sha256=XXYg6TUhzOx1SqAhp6ePDU0QgeK6DQEqHATMuQQJCNE,30468366
41
- smartpi-0.1.40.dist-info/METADATA,sha256=aIRCVI2rKjrkyntUYSJek9NYPebmnwHuNwa2FhYubFw,614
42
- smartpi-0.1.40.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
43
- smartpi-0.1.40.dist-info/top_level.txt,sha256=PoLhUCmWAiQUg5UeN2fS-Y1iQyBbF2rdUlizXtpHGRQ,8
44
- smartpi-0.1.40.dist-info/RECORD,,