Version 0.1.0 scores transcript agreement, not pronunciation
Dasheng version 0.1.0 is a Next.js reading-practice page for Chinese-speaking users. A learner reads an English passage, the app receives a streaming transcript, and word-level alignment identifies matches, omissions, insertions, and substitutions. JEV evaluates ambiguous word changes and overall meaning, while local arithmetic calculates completeness, pace, and a weighted total. The screen can then underline or mark each word and display the component scores.
The distinction between text and sound decides whether this product fits. Dasheng does not assess phonemes, stress, or accent because JEV sees text only. A learner who says the wrong sound but still produces the expected transcript may receive no pronunciation warning. This is useful reading-fluency feedback, not a replacement for an acoustic pronunciation assessment system.
What happened when we ran it
Our sandbox cloned commit 1bacff4 into an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Node 22, and no secrets. Installation succeeded in 32 seconds, pulled 282 packages, and used 342 MB. The build passed in 10 seconds. Node's test runner completed in 2 seconds with 6 passed and 0 failed.
The checkout was only 0.1 MB, with 25 files and about 1,624 lines of source. Our scan found 0 CI workflow files, no Dockerfile, and no tests directory. The 6 tests live in lib/align.test.js and cover the command selected by the package script. They do not establish browser microphone quality, GPU-service behavior, or JEV scoring accuracy.
Npm audit reported 3 known vulnerabilities: 1 critical and 2 high. The supplied measurement does not name the affected dependencies, so we cannot say whether a public route reaches them. A production review should identify each advisory, trace the executable path, and update or isolate it before exposing the app. A green 6-test run does not cancel a critical audit finding.
The 12 GB R2T2 path is harder than mock mode
Dasheng can demonstrate its interface with a mock speech provider, without a microphone or GPU. Real local speech recognition is a different setup. The deployment guide requires an NVIDIA Ampere-or-newer GPU with 12 GB of memory, CUDA, vLLM, R2T2 model weights, separate voice-activity weights, and a WebSocket service. It says the current inference path cannot run on a Mac.
The guide is candid about operator work: change the hard-coded service secret, avoid exposing the default listener, preserve WebSocket upgrades through any proxy, and validate microphone resampling against offline files. It also says concurrency, long-session stability, English behavior, and several streaming settings remain unverified. The app repository supplies neither a Dockerfile nor a deployment wrapper for that GPU service.
Jev 1.13 receives the reference and recognized text
Jev 1.13 is the documented text judge. lib/score.js builds a state containing both the source passage and the speech recognizer's committed transcript. lib/jev.js sends that state and the scoring questions to JEV_ENDPOINT, which defaults to ZenMux. Running R2T2 locally can keep microphone audio on your machine, but it does not keep those two text blocks local under the default configuration.
Open issue 1 points out that this conflicts with the README's claim that the whole system can run without uploads. Open pull request 5 proposes clearer wording and says the repository does not include a local JEV service. You can point JEV_ENDPOINT at a compatible service you control, but the project does not document how to deploy one. Operators should treat the text as provider-bound data until they replace that endpoint.
Three open issues can change the score or its explanation
Three open issues describe specific result defects. Issue 2 says the real browser-recording path passes zero pauses, so long silences do not reduce the pace score. Issue 4 shows that more than 12 substitutions can exceed the declared question cap, omit verdict details, and lower completeness incorrectly. Issue 1 covers the remote-text boundary rather than score arithmetic.
Open pull requests 3 and 6 propose fixes for the pause and substitution problems, but commit 1bacff4 does not include them. The distinction matters because a pull request is evidence that someone worked on a defect, not that users have received the correction. Until the changes merge and the browser path is tested, score reports need independent checks on passages with pauses and many wrong words.
Zero releases and no license keep it in evaluation
GitHub showed 144 stars and 6 combined open issues and pull requests, with the last push on September 20, 2026. Three follow-up pull requests were still open after that push, and the latest-release endpoint returned no release. More importantly, the tree contains no license file and GitHub reports no license, so public source visibility does not grant the reuse rights many teams expect from an open-source project.
Dasheng is worth opening in mock mode to study its narrow product idea: stable live text, word alignment, and a constrained text judge can produce understandable reading feedback. Stop before deployment. The missing license, remote scoring-text path, 3 audit findings, and unresolved score bugs all need answers before a school, company, or self-hoster should put real learners on it.

