shipwithjev

Catalog / Tools & apps

0052GitHub

大声读 (dasheng)

Streaming speech recognition listens, and Jev marks each word.

An English reading tutor for Chinese learners. R2T2 streaming ASR transcribes as the reader speaks, and Jev judges word by word to score the reading.

wquguru/dashengREADME ↗
# 大声读 · ReadAloud

**对着屏幕念一段英文,念完就知道哪个词念错了。**

[](https://huggingface.co/netease-youdao/Confucius4-R2T2)
[](https://zenmux.ai/typesafe/jev-1.13)
[](https://huggingface.co/netease-youdao/Confucius4-R2T2)
[](https://nextjs.org)
[](docs/deploy-r2t2.md)

</div>

---

英语流利说那一套,一个开源的实时 ASR 模型加一个开源的判词模型就能平替 ——
**而且可以整套跑在你自己的显卡上,不联网、不上传、不按分钟计费。**

念的时候字是一个个亮起来的,念错的当场标红,念完点一下出总分。
一台 12GB 的卡就够。

## 两个模型,各干各的

**R2T2 负责听。** 它是真流式,最低 160ms 的步长往外吐词,还有个叫
**stable prefix** 的机制:已经提交的文本只增不改。传统流式 ASR 会来回改词,
`I want to book` 变成 `I want to look` 再变回来 —— 给人看字幕还行,可下游要是
接了另一个模型,它就得跟着反复撤销自己刚做的判断。正因为有这一层,屏幕上划过的
线不会闪、判过的分不用重判,漏读多读也能直接拿识别结果算。

**Jev 负责判。** 它只在你事先声明好的空间里回答:是否、选一个、1–5 打分,
并且给概率。所以这里只问它文本层面的事 —— 念的是不是原文那个词、错法属于哪一类、
整段意思有没有走样。选它的理由很直接:**快**,一次判决几十到几百毫秒,几乎不花钱。

## 一条链路

```
麦克风 → R2T2(流式转写,只增不改 + 时间戳) → 对齐 → Jev(封闭问题判决) → 本机算术 → 划线 + 总分
```

对齐这一步挑出对不上的那几个词,只有它们值得问模型;剩下的全是算术,留在本机。

| 评什么 | 谁算 |
|---|---|
| 读对没读对(逐词「是不是同一个词」) | Jev `noul` + 概率 |
| 错误属于哪一类(替换 / ASR 拼写变体 / 自我纠正) | Jev `choice` |
| 听到的还是不是同一句话 | Jev `score`(1–5 级) |
| 漏读、多读、完整度 | 对齐,算术 |
| 语速与停顿 | R2T2 时间戳,算术 |
| 总分 | 本机加权(`lib/score.js` 的 `WEIGHTS`) |
| **发音、重音、口音** | **不出分** — Jev 只读文本,判不了声学,要评得另接音素级发音评测模型 |

## 三分钟跑起来

不用显卡也能先看效果 —— `ASR_PROVIDER=mock` 不碰麦克风,按 160ms 的节奏吐词并
预埋三类真实错误,整条判分链路照样跑通。

```bash
npm install
npm run dev        # http://localhost:3000(被占用会自动换端口)
npm test           # 对齐 / mock / 节奏算术的单测,不联网
```

`.env.local`(**不要提交**):

```bash
JEV_API_KEY=sk-ai-v1-...                          # ZenMux 的 key
JEV_ENDPOINT=https://zenmux.ai/api/v1/systemone   # Jev 走自己的 System One 接口,不是 chat/completions
JEV_MODEL=typesafe/jev-1.13

ASR_PROVIDER=r2t2                                 # mock = 不用麦克风,按节奏吐词并预埋三类错误
R2T2_WS_URL=wss://...                             # 见下
R2T2_LANGUAGE=English
```

> 变量叫 `JEV_API_KEY` 而不是 `ZEN

Also filed under Tools & apps

  1. 0573

    Support chat: agent offered a human escalation path

    A frustrated customer hits a bot loop twice; the judge checks whether a human handoff was offered.

    everyai-com · Tools & apps

  2. 0572

    Subscription cancel: effective date is explicit

    An agent cancels a subscription; the judge checks the exact date the cancellation takes effect.

    everyai-com · Tools & apps

  3. 0571

    Sales quote: numbers match the official price list

    An agent quotes $29/seat against a price list; the judge checks the quote matches exactly.

    everyai-com · Tools & apps

  4. 0570

    Refund chat: agent stated the amount before issuing it

    A support agent issues a $42.50 refund; the judge checks the exact amount was stated before the refund was confirmed.

    everyai-com · Tools & apps