feat(rime): add coda model support; default RimeTTSService model to coda#4511
feat(rime): add coda model support; default RimeTTSService model to coda#4511MaCaki wants to merge 5 commits into
Conversation
Codecov Report❌ Patch coverage is
... and 36 files with indirect coverage changes 🚀 New features to boost your workflow:
|
markbackman
left a comment
There was a problem hiding this comment.
The implementation for RimeTTSService looks good. Should the RimeHttpTTSService be updated similarly?
In testing, I notice that the word-timestamps lag the spoken audio by a similar margin to the arcana model on the /ws3 endpoint. I'm assuming that this is a known issue. For example, in the screenshot, the white text shows the word-timestamps outputted by the time the audio finishes playing:

You can see that this gap can be sizable for longer outputs. This isn't blocking since the issue exists for the /ws3 endpoint already and your team is aware.
I'm not approving for now, awaiting on your response regarding RimeHttpTTSService.
Yes! Updating this class now. Regarding WLTs for On the other side of this launch however we're going to re-prioritize dialing in the WLT estimates as well as extracting and delivering model-native WLT's from |
…for RimeTTSService from arcana to coda.
|
|
Co-authored-by: Mark Backman <m.backman@gmail.com>
|
@MaCaki sorry for all of the "one more things". Can you lint the code? |
yea I'll re-run that, ha I keep rushing through this, but now that we've completed all the release work I'll dot all the i's on this. I also need to add support for a new model parameter in this PR, so yet another detail on my end to address. |
| repetition_penalty: Token repetition penalty (1.0-2.0). | ||
| temperature: Sampling temperature (0.0-1.0). | ||
| top_p: Cumulative probability threshold (0.0-1.0). | ||
| repetition_penalty: Token repetition penalty (arcana only, 1.0-2.0). |
There was a problem hiding this comment.
RimeNonJsonTTSService is deprecated and we traditionally don't update these classes. Perhaps we should leave out the update for this one?
markbackman
left a comment
There was a problem hiding this comment.
Looks good! Just one question about RimeNonJsonTTSService.
Summary
Adds support for Rime's
codaTTS model across all three Rime services insrc/pipecat/services/rime/tts.py:RimeTTSService(WebSocket JSON)RimeHttpTTSService(HTTP chunked)RimeNonJsonTTSService(deprecated raw WS — included for parity)Coda mirrors Arcana on the wire but intentionally does not accept
temperature,top_p, orrepetition_penalty. The implementations skip those params for coda even when they're set on the settings object.Official Coda Docs
Default model change for
RimeTTSServiceThis PR also changes the default model for
RimeTTSServicefromarcanatocoda. This is a behavior change for callers that relied on the implicit default. To preserve previous behavior, passmodel="arcana"explicitly (or viasettings=RimeTTSService.Settings(model="arcana", ...)).RimeHttpTTSService(defaultmistv2) andRimeNonJsonTTSService(deprecated, defaultarcana) are unchanged.Changes
RimeTTSService._build_ws_params(): add acodabranch that contributes no model-specific WS query params.RimeHttpTTSService.run_tts(): no code change — the existingif modelId == "arcana"WAV-format gate already correctly excludes coda, which usesaudio/pcm.RimeNonJsonTTSService._connect_websocket(): gaterepetition_penalty/temperature/top_ponmodel == "arcana"so coda doesn't receive them.RimeNonJsonTTSSettings/RimeNonJsonTTSService.InputParamsto label those three params asarcana only(matchingRimeTTSSettingsstyle).RimeTTSServiceflipped fromarcanatocoda.timescalefactorparameterTest plan
ruff checkandruff format --checkpass on the modified file.RimeTTSServiceiscodamodel="coda"excludetemperature/top_p/repetition_penalty/ Mist-only paramsreduceLatency/pauseBetweenBracketsaudio/pcm(only arcana strips WAV header)model == "arcana"livekit-plugins-rime(livekit/agents#5748) which confirmed Rime's/v1/rime-ttsand/ws3endpoints acceptmodelId=codaand returnaudio/pcmon both transports.