xiaozhi-sdk 0.2.2__py3-none-any.whl → 0.2.4__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.

Potentially problematic release.


This version of xiaozhi-sdk might be problematic. Click here for more details.

xiaozhi_sdk/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
- __version__ = "0.2.2"
1
+ __version__ = "0.2.4"
2
2
 
3
3
  from xiaozhi_sdk.core import XiaoZhiWebsocket # noqa
xiaozhi_sdk/core.py CHANGED
@@ -120,11 +120,20 @@ class XiaoZhiWebsocket(McpTool):
120
120
  await self.websocket.send(opus_data)
121
121
  await self.send_silence_audio()
122
122
 
123
- async def send_wake_word(self, wake_word: str) -> None:
123
+ async def send_wake_word(self, wake_word: str) -> bool:
124
124
  """发送唤醒词"""
125
- await self.websocket.send(
126
- json.dumps({"session_id": self.session_id, "type": "listen", "state": "detect", "text": wake_word})
127
- )
125
+ try:
126
+ await self.websocket.send(
127
+ json.dumps({"session_id": self.session_id, "type": "listen", "state": "detect", "text": wake_word})
128
+ )
129
+ return True
130
+ except websockets.ConnectionClosed:
131
+ if self.message_handler_callback:
132
+ await self.message_handler_callback(
133
+ {"type": "websocket", "state": "close", "source": "sdk.send_wake_word"}
134
+ )
135
+ logger.debug("[websocket] close")
136
+ return False
128
137
 
129
138
  async def send_silence_audio(self, duration_seconds: float = 1.2) -> None:
130
139
  """发送静音音频"""
@@ -186,7 +195,7 @@ class XiaoZhiWebsocket(McpTool):
186
195
  await self.message_handler_callback(
187
196
  {"type": "websocket", "state": "close", "source": "sdk.message_handler"}
188
197
  )
189
- logger.info("[websocket] close")
198
+ logger.debug("[websocket] close")
190
199
 
191
200
  async def set_mcp_tool(self, mcp_tool_list) -> None:
192
201
  """设置MCP工具"""
@@ -246,15 +255,16 @@ class XiaoZhiWebsocket(McpTool):
246
255
  if self.wake_word:
247
256
  await self.send_wake_word(self.wake_word)
248
257
 
249
- async def send_audio(self, pcm: bytes) -> None:
258
+ async def send_audio(self, pcm: bytes) -> bool:
250
259
  """发送音频数据"""
251
260
  if not self.websocket:
252
- return
261
+ return False
253
262
 
254
263
  state = self.websocket.state
255
264
  if state == websockets.protocol.State.OPEN:
256
265
  opus_data = await self.audio_opus.pcm_to_opus(pcm)
257
266
  await self.websocket.send(opus_data)
267
+ return True
258
268
  elif state in [websockets.protocol.State.CLOSED, websockets.protocol.State.CLOSING]:
259
269
  if self.wait_device_activated:
260
270
  logger.debug("[websocket] Server actively disconnected, reconnecting...")
@@ -265,8 +275,10 @@ class XiaoZhiWebsocket(McpTool):
265
275
  logger.debug("[websocket] Server actively disconnected")
266
276
 
267
277
  await asyncio.sleep(0.5)
278
+ return False
268
279
  else:
269
280
  await asyncio.sleep(0.1)
281
+ return False
270
282
 
271
283
  async def close(self) -> None:
272
284
  """关闭连接"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xiaozhi-sdk
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: 一个用于连接和控制小智智能设备的Python SDK,支持实时音频通信、MCP工具集成和设备管理功能。
5
5
  Author-email: dairoot <623815825@qq.com>
6
6
  License-Expression: MIT
@@ -8,19 +8,19 @@ file/opus/linux-x64-libopus.so,sha256=FmXJqkxLpDzNFOHYkmOzmsp1hP0eIS5b6x_XfOs-IQ
8
8
  file/opus/macos-arm64-libopus.dylib,sha256=H7wXwkrGwb-hesMMZGFxWb0Ri1Y4m5GWiKsd8CfOhE8,357584
9
9
  file/opus/macos-x64-libopus.dylib,sha256=MqyL_OjwSACF4Xs_-KrGbcScy4IEprr5Rlkk3ddZye8,550856
10
10
  file/opus/windows-opus.dll,sha256=kLfhioMvbJhOgNMAldpWk3DCZqC5Xd70LRbHnACvAnw,463360
11
- xiaozhi_sdk/__init__.py,sha256=vnorG8iuWFOKelF22ZlRtQ154kXla-XOnvzebaHa5j8,77
11
+ xiaozhi_sdk/__init__.py,sha256=Id2mMKG5QTHZk_W2nXnzQG1BpuG4QwUaMpinb6kS4T0,77
12
12
  xiaozhi_sdk/__main__.py,sha256=i0ZJdHUqAKg9vwZrK_w0TJkzdotTYTK8aUeSPcJc1ks,210
13
13
  xiaozhi_sdk/cli.py,sha256=CEpjXW-vnT8DieaK1MV0AYCG4bmK2_vpIz-9zhWHVgE,7001
14
14
  xiaozhi_sdk/config.py,sha256=h4mpMeBf2vT9qYAqCCbGVGmMemkgk98pcXP2Rh4TEFc,89
15
- xiaozhi_sdk/core.py,sha256=_HT4zWdAkzvQKrgnlyL5b6fIg9PXULnkuE2LReoZOZM,10265
15
+ xiaozhi_sdk/core.py,sha256=JfYH7dyKxb1ikVkam74V_SMvn07MTdBfY7u3X6OdUxk,10723
16
16
  xiaozhi_sdk/iot.py,sha256=VVAheynp1iV4GCaoPywQWpKtlyoACDLswH8yfV_JZgI,2699
17
17
  xiaozhi_sdk/mcp.py,sha256=TVSHrWIy7qDy8DQOjQ9EAzVZ1SFtXkSgTDYysL-dRhk,6559
18
18
  xiaozhi_sdk/opus.py,sha256=r3nnYg0ZKAJTreb_3nKgfHJh06MJiMvnNMPO1SWdoMM,2224
19
19
  xiaozhi_sdk/utils/__init__.py,sha256=XKSHWoFmuSkpwaIr308HybRzfFIXoT1Fd-eUKo_im6Y,1705
20
20
  xiaozhi_sdk/utils/mcp_tool.py,sha256=T6OIrSqcyAHQ85sduz5Klx646SoEnGD5ROBTKoX6NhE,4207
21
21
  xiaozhi_sdk/utils/tool_func.py,sha256=imwehfUlENjelYmGbGYgb6C82-ijs53XCxrtCpqrJps,3152
22
- xiaozhi_sdk-0.2.2.dist-info/licenses/LICENSE,sha256=Vwgps1iODKl43cAtME_0dawTjAzNW-O2BWiN5BHggww,1085
23
- xiaozhi_sdk-0.2.2.dist-info/METADATA,sha256=azrkbi4i84qSDRxSBTDUC4CQg5mGbvbz_f_3__TRKHk,2121
24
- xiaozhi_sdk-0.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
25
- xiaozhi_sdk-0.2.2.dist-info/top_level.txt,sha256=nBpue4hU5Ykm5CtYPsAdxSa_yqbtZsIT_gF_EkBaJPM,12
26
- xiaozhi_sdk-0.2.2.dist-info/RECORD,,
22
+ xiaozhi_sdk-0.2.4.dist-info/licenses/LICENSE,sha256=Vwgps1iODKl43cAtME_0dawTjAzNW-O2BWiN5BHggww,1085
23
+ xiaozhi_sdk-0.2.4.dist-info/METADATA,sha256=Z9KG9zhvIfBFNA5G95hFRIrEfw-dNVkEUN0fWmmDpaA,2121
24
+ xiaozhi_sdk-0.2.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
25
+ xiaozhi_sdk-0.2.4.dist-info/top_level.txt,sha256=nBpue4hU5Ykm5CtYPsAdxSa_yqbtZsIT_gF_EkBaJPM,12
26
+ xiaozhi_sdk-0.2.4.dist-info/RECORD,,