pipecat-respeecher 0.1.1__tar.gz → 0.1.3__tar.gz

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 (19) hide show
  1. pipecat_respeecher-0.1.3/CHANGELOG.md +30 -0
  2. {pipecat_respeecher-0.1.1/src/pipecat_respeecher.egg-info → pipecat_respeecher-0.1.3}/PKG-INFO +6 -2
  3. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/README.md +4 -1
  4. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/example-ukrainian.py +1 -0
  5. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/example.py +1 -0
  6. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/pyproject.toml +2 -1
  7. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/src/pipecat_respeecher/tts.py +23 -1
  8. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3/src/pipecat_respeecher.egg-info}/PKG-INFO +6 -2
  9. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/src/pipecat_respeecher.egg-info/SOURCES.txt +1 -0
  10. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/uv.lock +2 -2
  11. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/.gitignore +0 -0
  12. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/.python-version +0 -0
  13. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/LICENSE +0 -0
  14. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/env.example +0 -0
  15. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/setup.cfg +0 -0
  16. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/src/pipecat_respeecher/__init__.py +0 -0
  17. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/src/pipecat_respeecher.egg-info/dependency_links.txt +0 -0
  18. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/src/pipecat_respeecher.egg-info/requires.txt +0 -0
  19. {pipecat_respeecher-0.1.1 → pipecat_respeecher-0.1.3}/src/pipecat_respeecher.egg-info/top_level.txt +0 -0
@@ -0,0 +1,30 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.3] - 2026-02-06
9
+
10
+ ### Changed
11
+
12
+ - Increased timeout for audio contexts.
13
+
14
+ ## [0.1.2] - 2026-01-26
15
+
16
+ ### Changed
17
+
18
+ - Made the reconnection logic more robust.
19
+
20
+ ## [0.1.1] - 2026-01-16
21
+
22
+ ### Changed
23
+
24
+ - Adjusted the README and the publishing metadata.
25
+
26
+ ## [0.1.0] - 2026-01-16
27
+
28
+ ### Added
29
+
30
+ - Initial release.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipecat-respeecher
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Respeecher real-time TTS plugin for Pipecat
5
5
  Author-email: Respeecher <nv@respeecher.com>
6
6
  Maintainer-email: Respeecher <nv@respeecher.com>
@@ -8,6 +8,7 @@ License-Expression: BSD-2-Clause
8
8
  Project-URL: Homepage, https://www.respeecher.com/real-time-tts-api
9
9
  Project-URL: Documentation, https://space.respeecher.com/docs
10
10
  Project-URL: Source, https://github.com/respeecher/pipecat-respeecher
11
+ Project-URL: Changelog, https://github.com/respeecher/pipecat-respeecher/blob/main/CHANGELOG.md
11
12
  Keywords: tts,pipecat-ai,pipecat
12
13
  Classifier: Intended Audience :: Developers
13
14
  Classifier: Operating System :: OS Independent
@@ -25,7 +26,7 @@ Dynamic: license-file
25
26
 
26
27
  # Pipecat Respeecher Real-Time TTS Integration
27
28
 
28
- [![PyPI - Version](https://img.shields.io/pypi/v/pipecat-respeecher)](https://pypi.python.org/pypi/respeecher)
29
+ [![PyPI - Version](https://img.shields.io/pypi/v/pipecat-respeecher)](https://pypi.python.org/pypi/pipecat-respeecher)
29
30
 
30
31
  This is an official Respeecher integration for [Pipecat](https://pipecat.ai).
31
32
 
@@ -70,6 +71,9 @@ other [supported Pipecat service](https://docs.pipecat.ai/server/services/suppor
70
71
 
71
72
  ## Example Snippets
72
73
 
74
+ **Note:** we recommend setting `audio_out_sample_rate=22050` in `PipelineParams`
75
+ like in [`example.py`](./example.py) for best results.
76
+
73
77
  ### Minimal Example
74
78
 
75
79
  ```python
@@ -1,6 +1,6 @@
1
1
  # Pipecat Respeecher Real-Time TTS Integration
2
2
 
3
- [![PyPI - Version](https://img.shields.io/pypi/v/pipecat-respeecher)](https://pypi.python.org/pypi/respeecher)
3
+ [![PyPI - Version](https://img.shields.io/pypi/v/pipecat-respeecher)](https://pypi.python.org/pypi/pipecat-respeecher)
4
4
 
5
5
  This is an official Respeecher integration for [Pipecat](https://pipecat.ai).
6
6
 
@@ -45,6 +45,9 @@ other [supported Pipecat service](https://docs.pipecat.ai/server/services/suppor
45
45
 
46
46
  ## Example Snippets
47
47
 
48
+ **Note:** we recommend setting `audio_out_sample_rate=22050` in `PipelineParams`
49
+ like in [`example.py`](./example.py) for best results.
50
+
48
51
  ### Minimal Example
49
52
 
50
53
  ```python
@@ -148,6 +148,7 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments):
148
148
  params=PipelineParams(
149
149
  enable_metrics=True,
150
150
  enable_usage_metrics=True,
151
+ audio_out_sample_rate=22050,
151
152
  ),
152
153
  idle_timeout_secs=runner_args.pipeline_idle_timeout_secs,
153
154
  observers=[RTVIObserver(rtvi), whisker],
@@ -143,6 +143,7 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments):
143
143
  params=PipelineParams(
144
144
  enable_metrics=True,
145
145
  enable_usage_metrics=True,
146
+ audio_out_sample_rate=22050,
146
147
  ),
147
148
  idle_timeout_secs=runner_args.pipeline_idle_timeout_secs,
148
149
  observers=[RTVIObserver(rtvi), whisker],
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pipecat-respeecher"
3
- version = "0.1.1"
3
+ version = "0.1.3"
4
4
  description = "Respeecher real-time TTS plugin for Pipecat"
5
5
  license = "BSD-2-Clause"
6
6
  license-files = ["LICENSE"]
@@ -38,6 +38,7 @@ dev = [
38
38
  Homepage = "https://www.respeecher.com/real-time-tts-api"
39
39
  Documentation = "https://space.respeecher.com/docs"
40
40
  Source = "https://github.com/respeecher/pipecat-respeecher"
41
+ Changelog = "https://github.com/respeecher/pipecat-respeecher/blob/main/CHANGELOG.md"
41
42
 
42
43
  [tool.ruff.lint]
43
44
  ignore = ["E402"]
@@ -11,6 +11,7 @@ import base64
11
11
  import json
12
12
  import uuid
13
13
  from typing import AsyncGenerator, Optional
14
+ import asyncio
14
15
 
15
16
  from loguru import logger
16
17
  from pydantic import BaseModel, TypeAdapter, ValidationError
@@ -198,7 +199,14 @@ class RespeecherTTSService(AudioContextTTSService, TTSService):
198
199
 
199
200
  url += f"/tts/websocket?api_key={self._api_key}"
200
201
 
201
- self._websocket = await websocket_connect(url)
202
+ self._websocket = await websocket_connect(
203
+ url,
204
+ compression=None,
205
+ ping_interval=2.5,
206
+ ping_timeout=2.5,
207
+ close_timeout=2,
208
+ )
209
+
202
210
  await self._call_event_handler("on_connected")
203
211
  except Exception as e:
204
212
  logger.error(f"{self} initialization error: {e}")
@@ -302,6 +310,7 @@ class RespeecherTTSService(AudioContextTTSService, TTSService):
302
310
  while True:
303
311
  await self._receive_messages_until_closed()
304
312
  logger.info(f"{self} Respeecher disconnected, reconnecting")
313
+ await self._disconnect_websocket()
305
314
  await self._connect_websocket()
306
315
 
307
316
  @traced_tts
@@ -341,3 +350,16 @@ class RespeecherTTSService(AudioContextTTSService, TTSService):
341
350
  yield None
342
351
  except Exception as e:
343
352
  yield ErrorFrame(error=f"{self} exception: {e}")
353
+
354
+ async def _handle_audio_context(self, context_id: str):
355
+ queue = self._contexts[context_id]
356
+ running = True
357
+ while running:
358
+ try:
359
+ frame = await asyncio.wait_for(queue.get(), timeout=10)
360
+ if frame:
361
+ await self.push_frame(frame)
362
+ running = frame is not None
363
+ except asyncio.TimeoutError:
364
+ logger.trace(f"{self} time out on audio context {context_id}")
365
+ break
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipecat-respeecher
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Respeecher real-time TTS plugin for Pipecat
5
5
  Author-email: Respeecher <nv@respeecher.com>
6
6
  Maintainer-email: Respeecher <nv@respeecher.com>
@@ -8,6 +8,7 @@ License-Expression: BSD-2-Clause
8
8
  Project-URL: Homepage, https://www.respeecher.com/real-time-tts-api
9
9
  Project-URL: Documentation, https://space.respeecher.com/docs
10
10
  Project-URL: Source, https://github.com/respeecher/pipecat-respeecher
11
+ Project-URL: Changelog, https://github.com/respeecher/pipecat-respeecher/blob/main/CHANGELOG.md
11
12
  Keywords: tts,pipecat-ai,pipecat
12
13
  Classifier: Intended Audience :: Developers
13
14
  Classifier: Operating System :: OS Independent
@@ -25,7 +26,7 @@ Dynamic: license-file
25
26
 
26
27
  # Pipecat Respeecher Real-Time TTS Integration
27
28
 
28
- [![PyPI - Version](https://img.shields.io/pypi/v/pipecat-respeecher)](https://pypi.python.org/pypi/respeecher)
29
+ [![PyPI - Version](https://img.shields.io/pypi/v/pipecat-respeecher)](https://pypi.python.org/pypi/pipecat-respeecher)
29
30
 
30
31
  This is an official Respeecher integration for [Pipecat](https://pipecat.ai).
31
32
 
@@ -70,6 +71,9 @@ other [supported Pipecat service](https://docs.pipecat.ai/server/services/suppor
70
71
 
71
72
  ## Example Snippets
72
73
 
74
+ **Note:** we recommend setting `audio_out_sample_rate=22050` in `PipelineParams`
75
+ like in [`example.py`](./example.py) for best results.
76
+
73
77
  ### Minimal Example
74
78
 
75
79
  ```python
@@ -1,5 +1,6 @@
1
1
  .gitignore
2
2
  .python-version
3
+ CHANGELOG.md
3
4
  LICENSE
4
5
  README.md
5
6
  env.example
@@ -740,7 +740,7 @@ name = "exceptiongroup"
740
740
  version = "1.3.1"
741
741
  source = { registry = "https://pypi.org/simple" }
742
742
  dependencies = [
743
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
743
+ { name = "typing-extensions", marker = "python_full_version < '3.11'" },
744
744
  ]
745
745
  sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
746
746
  wheels = [
@@ -2444,7 +2444,7 @@ wheels = [
2444
2444
 
2445
2445
  [[package]]
2446
2446
  name = "pipecat-respeecher"
2447
- version = "0.1.0"
2447
+ version = "0.1.2"
2448
2448
  source = { editable = "." }
2449
2449
  dependencies = [
2450
2450
  { name = "pipecat-ai" },