{"id":24312950,"url":"https://github.com/jimbozhang/kaldi-gop","last_synced_at":"2025-10-24T09:49:39.761Z","repository":{"id":77704698,"uuid":"70138090","full_name":"jimbozhang/kaldi-gop","owner":"jimbozhang","description":"Kaldi-based goodness of pronunciation (GOP)","archived":false,"fork":false,"pushed_at":"2021-02-04T03:43:25.000Z","size":1414,"stargazers_count":151,"open_issues_count":0,"forks_count":43,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-06-25T09:46:26.411Z","etag":null,"topics":["kaldi","speech-recognition"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jimbozhang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-06T08:56:30.000Z","updated_at":"2025-05-18T01:31:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"421029da-d2de-4695-a9e4-349086f11c82","html_url":"https://github.com/jimbozhang/kaldi-gop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jimbozhang/kaldi-gop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimbozhang%2Fkaldi-gop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimbozhang%2Fkaldi-gop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimbozhang%2Fkaldi-gop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimbozhang%2Fkaldi-gop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jimbozhang","download_url":"https://codeload.github.com/jimbozhang/kaldi-gop/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimbozhang%2Fkaldi-gop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280776485,"owners_count":26388950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kaldi","speech-recognition"],"created_at":"2025-01-17T08:33:33.166Z","updated_at":"2025-10-24T09:49:39.750Z","avatar_url":"https://github.com/jimbozhang.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kaldi-gop\nThis project computes GMM-based GOP (Goodness of Pronunciation) using Kaldi.\n\n## Notes about the DNN-based implementation\n\nThis implementation is GMM-based. For DNN-based implementation, please check Kaldi's official repository:\n\u003e https://github.com/kaldi-asr/kaldi/tree/master/egs/gop_speechocean762\n\nThe performance of GOP-DNN should be much better than GOP-GMM.\n\n## How to build\n```\n./build.sh\n```\n## Run the example\n```\ncd egs/gop-compute\n./run.sh\n```\n\n## Theory\n\nIn the conventional GMM-HMM based system, GOP was first proposed in (Witt et al., 2000). It was defined as the duration normalised log of the posterior:\n\n$$\nGOP(p)=\\frac{1}{t_e-t_s+1} \\log p(p|\\mathbf o)\n$$\n\nwhere $\\mathbf o$ is the input observations, $p$ is the canonical phone, $t_s, t_e$ are the start and end frame indexes.\n\nAssuming $p(q_i)\\approx p(q_j)$ for any $q_i, q_j$, we have:\n\n$$\n\\log p(p|\\mathbf o)=\\frac{p(\\mathbf o|p)p(p)}{\\sum_{q\\in Q} p(\\mathbf o|q)p(q)}\n                   \\approx\\frac{p(\\mathbf o|p)}{\\sum_{q\\in Q} p(\\mathbf o|q)}\n$$\n\nwhere $Q$ is the whole phone set.\n\nThe numerator of the equation is calculated from forced alignment result and the denominator is calculated from a Viterbi decoding with an unconstrained phone loop.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjimbozhang%2Fkaldi-gop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjimbozhang%2Fkaldi-gop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjimbozhang%2Fkaldi-gop/lists"}