Skip to content

Add Reson8 turns STT service + median-of-N WER scoring - #21

Open
ThomasKluiters wants to merge 1 commit into
pipecat-ai:mainfrom
ThomasKluiters:main
Open

Add Reson8 turns STT service + median-of-N WER scoring#21
ThomasKluiters wants to merge 1 commit into
pipecat-ai:mainfrom
ThomasKluiters:main

Conversation

@ThomasKluiters

Copy link
Copy Markdown

This adds the Reson8 as a provider, specifically it adds the turns endpoint, which is designed for eager turn detection, though, using a comparable technique as Soniox's VAD flush behaviour, we implement a comparable approach through configuration.

Additionally, Claude was giving us variable results, initially giving us a pooled WER of 1.09%; as I doubted this result I re-ran it and obtained 1.19%. This PR allow us to take the median result from Claude, I observed that 9 passes was sufficient to cover most variance.

- services_custom/reson8_stt.py: Reson8 WSS Turns API client — streams PCM and
  maps turn_start/turn_end_candidate/turn_continuation/turn_end to Pipecat
  interim/final frames; TTFS measured to the last candidate. Native endpointing
  via the min/max_patience query params (0.2/0.2).
- services.py / models.py / config.py / env.example: register the reson8 service
  (model "Resonant-1 Turns").
- evaluation/semantic_wer.py + cli/wer.py: --passes N (default 1) scores each
  sample N times and keeps the median-by-total-errors pass, suppressing the
  Claude scorer's normalization non-determinism (~±0.1pp). No-op at the default.
- README + Pareto plots: Reson8 leaderboard entry — 1.10% pooled WER, 85.6%
  perfect, 326ms median TTFS (1000 samples) — on the accuracy/latency frontier.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@markbackman markbackman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for contributing! Two comments.

@@ -0,0 +1,346 @@
"""Reson8 speech-to-text service implementation.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This repo shouldn't carry code for any custom service. If you have a service to test, please provide a PyPI package for a Pipecat service that can be run directly.

Comment thread README.md
| NVIDIA | Nemotron 3.0 ASR (en) | 100.0% | 76.1% | 1.90% | 1.95% | 221ms | 238ms | 252ms |
| NVIDIA | Nemotron 3.5 ASR (multilingual) | 99.6% | 62.0% | 4.54% | 4.58% | 236ms | 253ms | 266ms |
| OpenAI | gpt-4o-transcribe | 99.3% | 75.9% | 3.24% | 3.06% | 637ms | 965ms | 1655ms |
| Reson8 | Resonant-1 Turns | 99.9% | 85.6% | 1.39% | 1.10% | 326ms | 639ms | 1156ms |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One of the benchmark maintainers will have to independently run the integration to validate the results.

@ThomasKluiters

Copy link
Copy Markdown
Author

@markbackman Would you prefer the median-of-n to be present still?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants