Views
No views yet
Whisper ASR -> Charsiu phone alignment -> Streaming GOPT pronunciation scoringstreaming_gopt_best/best_audio_model.pth: best validation Streaming GOPT checkpoint.streaming_gopt_best/config.json: model architecture and training arguments.streaming_gopt_best/inference_assets.json: normalization statistics and phone-id mapping used by the inference example.streaming_gopt_best/result.csv: per-epoch training and validation metrics.streaming_gopt_best/test_metrics.json: held-out test metrics for the selected checkpoint.whisper_best_model/: Whisper ASR model used by the pipeline.charsiu_en_w2v2_tiny_fc_10ms/: Charsiu frame-level phone alignment model.examples/infer_one_audio.py: one-audio inference example.1from huggingface_hub import snapshot_download
2
3snapshot_download(
4 repo_id="faeea/custom-gopt-252-eval",
5 repo_type="model",
6 local_dir="./hf_models/custom-gopt-252-eval",
7)export BUNDLE_DIR=$PWD/hf_models/custom-gopt-252-evalcustom-gopt and the official Charsiu code.1git clone https://github.com/hf49w/custom-gopt.git
2git clone https://github.com/lingjzhu/charsiu third_party/charsiu_repo
3git -C third_party/charsiu_repo checkout 13a69f2a22ca0c0962b75cc693399b0ae23a12c9custom-gopt repository, then install the small extra NLTK assets used by Charsiu/G2P:1pip install -r requirements.txt
2python -m pip install nltk
3python -m nltk.downloader cmudict averaged_perceptron_tagger averaged_perceptron_tagger_eng1python "$BUNDLE_DIR/examples/infer_one_audio.py" \
2 --audio /path/to/demo.wav \
3 --bundle-dir "$BUNDLE_DIR" \
4 --repo-root /path/to/custom-gopt \
5 --charsiu-src-dir /path/to/third_party/charsiu_repo \
6 --device cuda \
7 --output-json ./one_audio_score.json--device cpu when CUDA is unavailable.u1: utterance-level accuracy.u2: utterance-level completeness.u3: utterance-level fluency.u4: utterance-level prosodic score.u5: utterance-level total score.p: phone-level pronunciation score for each visible phone token.w1: word-level accuracy.w2: word-level stress.w3: word-level total score.w4: word-level ASR accuracy.1{
2 "utterance_scores": {
3 "accuracy": 8.4,
4 "completeness": 10.0,
5 "fluency": 8.3,
6 "prosodic": 7.9,
7 "total": 8.0
8 },
9 "overall_score": 8.0
10}accuracy, completeness, fluency, prosodic, and total, higher is better. These scores follow the SpeechOcean-style pronunciation scoring scale used during training.word_accuracy: pronunciation accuracy for the word.word_stress: stress score for the word.word_total: overall word score.word_asr_accuracy: whether the ASR-driven word matched the expected word.word_asr_accuracy is a 0/1-style score. In practice, it can be used as a word-read-correctly indicator: a value near 1 means the word was recognized/matched as read correctly, while a value near 0 means the word was not matched, not recognized correctly, or was not committed yet in the streaming prefix.asr_accuracy 评分可以当作“这个词是否读对”的辅助指标。它不替代发音分数本身,但很适合用来标记某个词在 ASR 视角下是否正确读出。11phone_test_mse: 0.049197phone_test_pcc: 0.397571utt_test_pcc: [0.651909, 0.012690, 0.724998, 0.733279, 0.681940]word_test_pcc: [0.404714, -0.003912, 0.412258, 0.417467]accuracy, stress, total, asr_accuracyword_asr_accuracy to identify words that the ASR-driven pipeline likely did or did not match correctly.