{
  "added_at": "2026-11-09",
  "additional_evidence_urls": [
    "https://github.com/RetroBunn/tv-decomp/blob/8488e51f5bca5685590186693b76dc61bf23fdaf/tools/difftest.py",
    "https://github.com/RetroBunn/tv-decomp/blob/8488e51f5bca5685590186693b76dc61bf23fdaf/LICENSE"
  ],
  "category": "reconstruction-cases",
  "class": "software",
  "description_en": "Rebuilds Centigram TruVoice, the 1997 text-to-speech engine, as portable C. tools/difftest.py compares PCM from the C build with the original DLL across the corpus checked in that script.",
  "description_zh": "把 Centigram 的 TruVoice（1997 年文本转语音引擎）重建为可移植 C。tools/difftest.py 用脚本中的语料，把 C 构建的 PCM 与原始 DLL 对照。",
  "entry_url": "https://awesomerea.org/resources/opentv-truvoice-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/opentv-truvoice-case/",
  "evidence_url": "https://github.com/RetroBunn/tv-decomp/blob/8488e51f5bca5685590186693b76dc61bf23fdaf/README.md",
  "group": "cases",
  "id": "opentv-truvoice-case",
  "json_url": "https://awesomerea.org/resources/opentv-truvoice-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/opentv-truvoice-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/opentv-truvoice-case/index.md",
  "name": "OpenTV: a portable C rebuild of Centigram TruVoice",
  "name_zh": "OpenTV：用可移植 C 重建 Centigram TruVoice",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "prerequisites",
    "scope",
    "testing",
    "license"
  ],
  "requirements": [
    "Needs an x86_64 mingw-w64 toolchain, used in -m32 freestanding mode for the 32-bit build, plus dlltool and Python 3. Put CGRM_EN.DLL in TruVoice/. That DLL is not in the repository. pefile is only required by the tools that read a DLL.",
    "The README describes a C library, a command-line speaker, and an NVDA add-on, at 32 and 64 bits. It says SAPI 4 COM glue, config dialogs, and waveOut playback are documented but not ported.",
    "The README says tools/difftest.py runs 59 corpus inputs in 335 configurations and demands identical PCM, for the hooked build and the standalone 32-bit and 64-bit ports. --ref compares those builds with a recording from the installed engine.",
    "LICENSE is the MIT License, copyright 2026 RetroBunn. The original TruVoice DLL is not in the repository and is not part of that grant."
  ],
  "requirements_zh": [
    "需要 x86_64 的 mingw-w64（32 位构建用 -m32 独立模式）、dlltool 和 Python 3。把 CGRM_EN.DLL 放在 TruVoice/。该 DLL 不在仓库中。只有读取 DLL 的工具才需要 pefile。",
    "README 描述了 C 库、命令行朗读程序和 NVDA 插件，含 32 位与 64 位。它写明 SAPI 4 的 COM 粘合、配置对话框和 waveOut 播放有文档但未移植。",
    "README 写明 tools/difftest.py 用 59 条语料、335 种配置要求 PCM 相同，覆盖挂钩构建以及独立的 32 位和 64 位移植。--ref 再与已安装引擎的录音比较。",
    "LICENSE 是 MIT 许可证，版权 2026 RetroBunn。原始 TruVoice DLL 不在仓库中，也不属于该授权。"
  ],
  "targets": [
    "binary"
  ],
  "url": "https://github.com/RetroBunn/tv-decomp",
  "verification": "source-reviewed",
  "verified_at": "2026-11-04"
}
