Plugin: ReadAloud TTS (published as livekit-plugins-readaloud); in-tree PR or external package?
维护者通常 1 天内回复
评估
调研方向
The open question is whether a third-party TTS plugin belongs in the repository or stays external, so the first step is a maintainer answer, not code. If the answer is in-tree, read CONTRIBUTING.md and an existing plugin under livekit-plugins/ for layout, then check the tts.TTS and SynthesizeStream interfaces the plugin implements. Done is a recorded decision on placement, plus a PR only if maintainers accept it.
由索引模型根据 Issue 内容生成。
描述
Feature Type
Nice to have
Feature Description
I maintain ReadAloud (https://readaloudai.org), a streaming text-to-speech API aimed at voice agents and phone calls (Piper voices, 8 kHz output). I wrote a TTS plugin for livekit-agents and published it as a separate package:
- PyPI: https://pypi.org/project/livekit-plugins-readaloud/
- Source: https://github.com/tsushanth/livekit-plugins-readaloud (MIT)
It implements tts.TTS with synthesize() and a sentence-level SynthesizeStream. Closing a stream closes the HTTP connection so generation stops, capacity responses (503/429) surface as a retryable APIStatusError, and output can be 24, 16 or 8 kHz. It has no aligned transcripts, because the API returns no word timestamps.
Question: would you prefer this as an in-tree plugin (a PR adding livekit-plugins/livekit-plugins-readaloud following CONTRIBUTING.md, and I would sign the CLA), or should it stay an external package? If external, is there a place in the docs where community plugins are listed? I'm happy to follow whichever you prefer, and happy to hear that neither fits.
What has and has not been tested: 12 unit tests against a fake of the HTTP protocol, and direct synthesize() and stream() calls against the live API with livekit-agents 1.8.5. I have not yet run it inside a real LiveKit room or agent job, and I would do that before opening any PR.
Workarounds / Alternatives
Install the external package (pip install livekit-plugins-readaloud) and pass readaloud.TTS(...) to AgentSession.
Additional Context
The repo has a single-file example (examples/readaloud_tts_to_wav.py) that needs only a ReadAloud API key, plus a changelog. I work for the company that provides the service, as the README states.
- 主要语言
- Python
- 星标
- 14.6k
- 派生
- 3.9k
- 平均合并
- 3 天
- 30 天内合并 PR
- 262
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
livekit/agents 的其他 Issue
-
enhancement
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 78/100
维护者通常 1 天内回复
-
ci: unit tests pin Python 3.12 while the package advertises 3.14 support可能重新可做 @huong8373tt-beep 于 9 天前认领,目前没有进行中的 PR。 未关闭
难度 2/5 1-3 小时 新手友好度 74/100
维护者通常 1 天内回复
-
Assistant markup is stripped from chat history when expressive mode is off可能已有人在做 @ShivamSharma43 于 30 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
相似的 Issue
-
ChatBedrockConverse changes the keys of JSON tool results to camelCase (`order_id` becomes `orderId`)可能已有人在做 @geyazheng 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
langchain-ai/langchain-aws#1469 ·
维护者通常 1 天内回复
-
GCToggler leaves collection enabled if the body re-enables it可能已有人在做 @Gambit-Checkmate 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 7 天内回复
-
难度 1/5 1 小时以内 新手友好度 88/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
doronz88/pymobiledevice3#2176 ·
维护者通常 1 天内回复
-
b4b usability
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复