--- tags: - speech - whisper - forced-alignment - pronunciation-assessment - gopt license: other --- # custom-gopt-252-eval 这个仓库只做一件事:把本地保存的整套评测必需模型集中起来,并提供一个“输入 1 个音频,直接输出整体评分”的最短用法。 整体评分看 `total`,分值范围是 `0` 到 `5`。 ## 1. 下载模型包 ```bash python - <<'PY' from huggingface_hub import snapshot_download snapshot_download( repo_id="faeea/custom-gopt-252-eval", repo_type="model", local_dir="./hf_models/custom-gopt-252-eval", ) PY ``` 下载后约定: ```bash export BUNDLE_DIR=$PWD/hf_models/custom-gopt-252-eval ``` ## 2. 下载运行代码 这个模型包不是一个单独的 Transformers 模型;本地推理还要依赖 `custom-gopt` 的模型定义,以及 `Charsiu` 的文本到音素处理代码。 ```bash git clone https://github.com/hf49w/custom-gopt.git git clone https://github.com/lingjzhu/charsiu third_party/charsiu_repo git -C third_party/charsiu_repo checkout 13a69f2a22ca0c0962b75cc693399b0ae23a12c9 ``` ## 3. 安装最小依赖 在 `custom-gopt` 仓库根目录执行: ```bash pip install -r requirements.txt python -m pip install nltk python -m nltk.downloader cmudict averaged_perceptron_tagger averaged_perceptron_tagger_eng ``` 如果你已经有可用环境,这一步只要保证下面这些包能导入即可: - `torch` - `transformers` - `librosa` - `soundfile` - `g2p_en` - `g2pM` - `praatio` - `nltk` ## 4. 准备一个待评分音频 要求尽量简单: - 英语单句或单段短语音频 - `wav` 最稳妥 - 单声道更好 - `16kHz` 最理想,不是 `16kHz` 也会在脚本里自动重采样 假设你的音频路径是: ```bash export AUDIO_PATH=/path/to/demo.wav ``` ## 5. 直接跑单音频整体评分 在 `custom-gopt` 仓库根目录执行: ```bash python "$BUNDLE_DIR/examples/infer_one_audio.py" \ --audio "$AUDIO_PATH" \ --bundle-dir "$BUNDLE_DIR" \ --repo-root "$PWD" \ --charsiu-src-dir "$PWD/../third_party/charsiu_repo" \ --device cuda \ --output-json ./one_audio_score.json ``` 如果你没有 GPU,把 `--device cuda` 改成: ```bash --device cpu ``` ## 6. 成功运行后会输出什么 脚本会在终端打印一段 JSON,并在 `--output-json` 指定的位置写出同样内容。 典型输出结构如下: ```json { "status": "ok", "audio_path": "/path/to/demo.wav", "transcript": "she had your dark suit in greasy wash water all year", "utterance_scores": { "accuracy": 3.91, "completeness": 4.12, "fluency": 3.66, "prosodic": 3.58, "total": 3.82 }, "overall_score": 3.82 } ``` 其中: - `overall_score` 就是整体评分 - `overall_score` 和 `utterance_scores.total` 是同一个值 - 脚本会把最终分数裁到 `0-5` 区间,便于直接使用 ## 7. 最短验证命令 如果你只是想先确认“模型能不能在本地跑通”,可以直接拿 `Charsiu` 仓库自带的示例音频试一下: ```bash python "$BUNDLE_DIR/examples/infer_one_audio.py" \ --audio "$PWD/../third_party/charsiu_repo/local/SA1.WAV" \ --bundle-dir "$BUNDLE_DIR" \ --repo-root "$PWD" \ --charsiu-src-dir "$PWD/../third_party/charsiu_repo" \ --device cpu ``` ## 8. 说明 - 这个脚本走的是:`Whisper -> Charsiu -> Streaming GOPT` - 输入 1 个音频,不需要你自己提供文本 - 模型会先自动识别文本,再对齐音素,最后输出整体评分 - 训练数据是 SpeechOcean762,所以更适合英语学习者短句朗读场景