Skip to content

feat(channels): wire TTS voice reply into web adapter (#1347)#1351

Open
crrow wants to merge 1 commit intomainfrom
issue-1347-web-tts
Open

feat(channels): wire TTS voice reply into web adapter (#1347)#1351
crrow wants to merge 1 commit intomainfrom
issue-1347-web-tts

Conversation

@crrow
Copy link
Copy Markdown
Collaborator

@crrow crrow commented Apr 13, 2026

Summary

  • Mirror the Telegram adapter's TTS voice reply flow into the Web adapter
  • Add AudioDelta and AudioDone WebSocket event types for streaming audio to clients
  • Track voice session preference via voice_reply field in inbound WebSocket payload
  • Buffer text deltas at sentence boundaries, synthesize via TTS, broadcast base64-encoded audio chunks
  • Graceful degradation: TTS failure logs a warning, text stream continues unaffected
  • Derive Clone on TtsService (symmetric with SttService) to simplify sharing across adapters

Type of change

Type Label
New feature enhancement

Component

backend

Closes

Closes #1347

Test plan

  • cargo check -p rara-channels -p rara-app passes
  • cargo clippy -p rara-channels -p rara-app -p rara-tts --all-targets --no-deps -- -D warnings clean
  • cargo test -p rara-channels -p rara-tts all pass
  • All pre-commit hooks pass (check, fmt, clippy, doc, AGENT.md)
  • Manual test: send {"content": "hello", "voice_reply": true} via WebSocket, verify audio_delta and audio_done events received

🤖 Generated with Claude Code

Mirrors the Telegram adapter's voice flow: track voice sessions,
buffer text by sentence, synthesize via TTS, send audio_delta events.

- Add `AudioDelta` and `AudioDone` WebSocket event types
- Add `voice_reply` field to inbound WebSocket payload
- Add `tts_service` and `voice_session_keys` to WebAdapter
- Buffer text deltas at sentence boundaries, synthesize via TTS
- Broadcast base64-encoded audio chunks as `audio_delta` events
- Graceful degradation: TTS failure logs warning, text stream unaffected
- Derive `Clone` on `TtsService` (symmetric with `SttService`)
- Wire `tts_service` to WebAdapter in app startup

Closes #1347

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@crrow crrow added enhancement New feature or request backend Backend/API changes labels Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend Backend/API changes enhancement New feature or request

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

feat(web): wire TTS into web adapter for voice reply (#1345)

1 participant