@@ -232,13 +232,16 @@ def stream_websocket(
232232 config: TTS configuration (audio settings, voice, model parameters)
233233 model: TTS model to use
234234 max_workers: ThreadPoolExecutor workers for concurrent sender
235+ ws_options: WebSocket connection options for configuring timeouts, message size limits, etc.
236+ Useful for long-running generations that may exceed default timeout values.
237+ See WebSocketOptions class for available parameters.
235238
236239 Returns:
237240 Iterator of audio bytes
238241
239242 Example:
240243 ```python
241- from fishaudio import FishAudio, TTSConfig, ReferenceAudio
244+ from fishaudio import FishAudio, TTSConfig, ReferenceAudio, WebSocketOptions
242245
243246 client = FishAudio(api_key="...")
244247
@@ -274,6 +277,16 @@ def text_generator():
274277 ):
275278 f.write(audio_chunk)
276279
280+ # With WebSocket options for long-running generations
281+ # Useful if you're generating very long responses that may take >20 seconds
282+ ws_options = WebSocketOptions(keepalive_ping_timeout_seconds=60.0)
283+ with open("output.mp3", "wb") as f:
284+ for audio_chunk in client.tts.stream_websocket(
285+ text_generator(),
286+ ws_options=ws_options
287+ ):
288+ f.write(audio_chunk)
289+
277290 # Parameters override config values
278291 config = TTSConfig(format="mp3", latency="balanced")
279292 with open("output.wav", "wb") as f:
@@ -523,13 +536,16 @@ async def stream_websocket(
523536 speed: Speech speed multiplier, e.g. 1.5 for 1.5x speed (overrides config.prosody.speed if provided)
524537 config: TTS configuration (audio settings, voice, model parameters)
525538 model: TTS model to use
539+ ws_options: WebSocket connection options for configuring timeouts, message size limits, etc.
540+ Useful for long-running generations that may exceed default timeout values.
541+ See WebSocketOptions class for available parameters.
526542
527543 Returns:
528544 Async iterator of audio bytes
529545
530546 Example:
531547 ```python
532- from fishaudio import AsyncFishAudio, TTSConfig, ReferenceAudio
548+ from fishaudio import AsyncFishAudio, TTSConfig, ReferenceAudio, WebSocketOptions
533549
534550 client = AsyncFishAudio(api_key="...")
535551
@@ -565,6 +581,16 @@ async def text_generator():
565581 ):
566582 await f.write(audio_chunk)
567583
584+ # With WebSocket options for long-running generations
585+ # Useful if you're generating very long responses that may take >20 seconds
586+ ws_options = WebSocketOptions(keepalive_ping_timeout_seconds=60.0)
587+ async with aiofiles.open("output.mp3", "wb") as f:
588+ async for audio_chunk in client.tts.stream_websocket(
589+ text_generator(),
590+ ws_options=ws_options
591+ ):
592+ await f.write(audio_chunk)
593+
568594 # Parameters override config values
569595 config = TTSConfig(format="mp3", latency="balanced")
570596 async with aiofiles.open("output.wav", "wb") as f:
0 commit comments