首页/新闻资讯/正文详情

使用 PaddleSpeech 将 CC-CEDICT 中英词典解析为 JSON 格式的完整指南

发布时间:2026/9/25 2:34:53 来源:云帆数科 栏目:资讯中心
使用 PaddleSpeech 将 CC-CEDICT 中英词典解析为 JSON 格式的完整指南
人工智能语音音频NLP媒体生成【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/paddlepaddle/PaddleSpeech点击查看免费下载导读本文以 examples/other/cc-cedict 下的工具链为主体系统讲解如何在 PaddleSpeech 项目中下载公开领域的中英词典 CC-CEDICT并将其从原始文本格式解析为结构化的 JSON 数据。读完本文你将掌握 CC-CEDICT 的文本行格式约定、run.sh的阶段化执行方式、解析脚本local/parser.py的逐行处理逻辑以及解析产物在 PaddleSpeech 文本前端Text Frontend中的实际用途为构建中英词典、字音转换G2P等中文语音任务数据打下基础。CC-CEDICT 是什么CC-CEDICT 是 CEDICT 项目的延续。CEDICT 项目的目标是创建一份在线可下载区别于仅可在线检索的公有领域public-domain中英词典。CEDICT 由 Paul Andrew Denisowski 于 1997 年 10 月发起项目在相当程度上借鉴了 Jim Breen 非常成功的 EDICT日英词典项目模式定位为一项协作工程用户可以向主词典文件提交词条和勘误。CC-CEDICT 的主要特点依据 README.md 与 run.sh 的注释面向汉字提供完整可下载的中译英词典并附带汉字的拼音发音标注由社区持续维护用户可在其网站上提交新词条或修正已有词条提交内容经定期审核后以 CEDICT 格式发布供下载词典数据采用Creative Commons Attribution-ShareAlike 4.0 International License知识共享 署名-相同方式共享 4.0 国际许可协议发布文件头部即包含该版权声明。在 PaddleSpeech 中这份词典数据主要服务于中文文本前端paddlespeech/t2s/frontend/phonectic.py中Chinese类借助G2pM的cedict词表收集全部合法音节syllable用于构建中文音素词表详见下文解析结果的工程用途一节。解析工具链的文件构成examples/other/cc-cedict目录下包含 4 个文件构成了完整的最小工具链文件作用README.md词典简介与解析使用说明run.sh一键脚本下载、解压 CC-CEDICT并调用解析器产出 JSONpath.sh环境初始化设置MAIN_ROOT、PATH、PYTHONPATH等local/parser.py核心解析脚本将 CEDICT 文本行解析为 JSON 对象其中path.sh通过MAIN_ROOT\realpath ${PWD}/../../../定位到仓库根目录并把$MAIN_ROOT及其utils目录加入PATH从而复用 PaddleSpeech 根目录下的通用脚本如utils/parse_options.sh。同时它设置了LC_ALLC并配套PYTHONIOENCODINGUTF-8以避免在 C locale 环境下 Python 读写词典文本时出现UnicodeDecodeError——这一点对处理包含中文、拼音的词典文件至关重要。完整执行流程一键解析为 JSON第一步运行脚本在examples/other/cc-cedict目录下直接执行./run.sh脚本开头set -e保证任何一步失败即中止避免产出残缺数据。第二步下载并解压原始词典run.sh内置了官方下载地址与文件名cedict_urlhttps://www.mdbg.net/chinese/export/cedict/cedict_1_0_ts_utf-8_mdbg.zip cedictcedict_1_0_ts_utf-8_mdbg.zip下载阶段stage-1的执行逻辑mkdir -p data if [ $stage -le -1 ] [ $stop_stage -ge -1 ];then test -f data/${cedict} || wget -O data/${cedict} ${cedict_url} pushd data unzip ${cedict} popd fi要点使用test -f判断本地是否已有 zip避免重复下载解压产物为data/cedict_ts.u8这是采用 UTF-8 编码的制表符分隔 CEDICT 文本文件mkdir -p data在脚本入口处即执行确保下载目录存在。第三步解析为 JSON解析阶段stage0mkdir -p exp if [ $stage -le 0 ] [ $stop_stage -ge 0 ];then cp data/cedict_ts.u8 exp/cedict python3 local/parser.py exp/cedict exp/cedict.json fi即先把原始文件复制到exp/cedict再调用解析器python3 local/parser.py 输入文件 输出文件生成exp/cedict.json。第四步查看结果最终目录结构exp/ |-- cedict -- cedict.json 0 directories, 2 files其中exp/cedict原始 CEDICT 文本含文件头部的版权与许可信息以#开头exp/cedict.json逐行一个 JSON 对象的结构化词典数据。exp/cedict开头几行示例# CC-CEDICT # Community maintained free Chinese-English dictionary. # # Published by MDBG # # License: # Creative Commons Attribution-ShareAlike 4.0 International License # https://creativecommons.org/licenses/by-sa/4.0/exp/cedict.json中的典型数据行{traditional: 2019冠狀病毒病, simplified: 2019冠状病毒病, pinyin: er4 ling2 yi1 jiu3 guan1 zhuang4 bing4 du2 bing4, english: COVID-19, the coronavirus disease identified in 2019} {traditional: 3C, simplified: 3C, pinyin: san1 C, english: abbr. for computers, communications, and consumer electronics} {traditional: 996, simplified: 996, pinyin: jiu3 jiu3 liu4, english: 9am-9pm, six days a week (work schedule)} {traditional: 88, simplified: 88, pinyin: ba1 ba1, english: (Internet slang) bye-bye (alternative for 拜拜[bai2 bai2])}可以看到每个 JSON 对象包含 4 个字段traditional繁体、simplified简体、pinyin带声调数字的拼音、english英文释义含口语/网络用语等标签。阶段控制复用 PaddleSpeech 的 stage/stop_stage 机制run.sh采用与 PaddleSpeech 其他示例如examples/*/asr*、examples/*/tts*一致的阶段化流水线写法stage-1 stop_stage100 source ${MAIN_ROOT}/utils/parse_options.sh || exit -1parse_options.sh位于 utils/parse_options.sh允许以--stage N、--stop_stage M命令行参数覆盖默认值默认stage-1、stop_stage100表示全流程执行下载 → 解析若只想重新解析跳过下载可执行./run.sh --stage 0 --stop_stage 0若只想下载不解析则可执行./run.sh --stage -1 --stop_stage -1。这种设计使该工具既能一次性跑通也能按需复用与仓库其他示例脚本保持一致的工程习惯。解析器原理CEDICT 文本行到 JSON 对象的转换local/parser.py 是核心解析逻辑其设计来自开源社区Franki Allegra 于 2020 年 2 月编写原地址见文件头部注释并适配了本仓库的调用方式通过sys.argv[1]/sys.argv[2]接收输入输出路径规避了原脚本文件名写死的问题。CEDICT 文本行格式CEDICT 的每条词条行遵循如下约定传统字 简体字 [拼音] /英文释义1/英文释义2/.../即字符部分与拼音部分用空格分隔拼音用[ ]包裹英文释义以/分隔行尾通常还有一个/。逐行解析逻辑def parse_line(line): parsed {} if line : dict_lines.remove(line) return 0 if line.startswith(#): return 0 if line.startswith(%): return 0 line line.rstrip(/) line line.split(/) if len(line) 1: return 0 english line[1] char_and_pinyin line[0].split([) characters char_and_pinyin[0] characters characters.split() traditional characters[0] simplified characters[1] pinyin char_and_pinyin[1] pinyin pinyin.rstrip() pinyin pinyin.rstrip(]) parsed[traditional] traditional parsed[simplified] simplified parsed[pinyin] pinyin parsed[english] english list_of_dicts.append(parsed)关键处理步骤跳过非词条行空行、以#开头版权与注释信息、以%开头的行直接忽略切分释义line.rstrip(/)去掉行尾斜杠后按/切分取line[1]作为英文释义line[0]为字符与拼音部分若切分后长度不足 2视为无效行跳过拆出字符与拼音按[把 字符部分 拼音 分开再对字符部分按空格切分得到traditional与simplified清洗拼音对拼音尾部依次rstrip()去空白与rstrip(])去右方括号得到纯拼音字符串组装字典以traditional、simplified、pinyin、english四个键存入list_of_dicts。姓氏条目去重CC-CEDICT 中常用作姓氏的汉字往往有两条记录一条标注surname前缀的释义。remove_surnames()从列表末尾向前遍历若某条english含surname 且其traditional与下一条相同则删除该姓氏条目避免同一字的多音/多义干扰下游任务def remove_surnames(): for x in range(len(list_of_dicts) - 1, -1, -1): if surname in list_of_dicts[x][english]: if list_of_dicts[x][traditional] list_of_dicts[x 1][traditional]: list_of_dicts.pop(x)如需保留姓氏条目可自行注释掉main()中对remove_surnames()的调用脚本注释中也明确指出了这一点。输出 JSONL最后main()将每个字典对象序列化为一行 JSON逐行写入输出文件形成JSON LinesJSONL格式——每行一个独立 JSON 对象便于逐行流式读取with open(sys.argv[2], wt) as fout: for one_dict in list_of_dicts: json_str json.dumps(one_dict) fout.write(json_str \n)解析结果在 PaddleSpeech 中的工程用途CC-CEDICT 解析产物在 PaddleSpeech 中并非孤立存在它直接服务于中文文本前端的音素词表构建。在 paddlespeech/t2s/frontend/phonectic.py 中Chinese类通过G2pM内置的cedict词表枚举全部合法音节class Chinese(Phonetics): def __init__(self): self.backend G2pM() self.phonemes self._get_all_syllables() self.punctuations get_punctuations(cn) self.vocab Vocab(self.phonemes self.punctuations) def _get_all_syllables(self): all_syllables set([ syllable for k, v in self.backend.cedict.items() for syllable in v ]) return list(all_syllables)从源码结构可以推断G2pM拼音转音素模型依赖的cedict词表正是以 CC-CEDICT 这类中英词典为数据来源构建的。_get_all_syllables()将词表中所有词条的拼音每个音节收集为集合再与中文标点符号一起构成Vocab。这意味着词典解析得到的拼音覆盖度直接决定文本前端能正确标注的音节范围任何新增词条、修正词条都会影响最终可用的拼音词表与vocab_size中文 TTS 流程中输入文本会先经Chinese.phoneticize()转成音素序列paddlespeech/t2s/frontend/phonectic.py#L260-L275再经numericalize()映射为 id 序列供声学模型使用。因此examples/other/cc-cedict这套解析工具是 PaddleSpeech 中文语音合成TTS数据链路中的基础组件之一其产出质量会向上传导到文本前端的音素覆盖能力。使用注意事项网络依赖首次运行需要访问www.mdbg.net下载词典 zip请确保执行环境可访问外网test -f检查保证本地已有文件时不会重复下载环境变量path.sh依赖PWD计算MAIN_ROOT务必在examples/other/cc-cedict目录下执行./run.sh否则MAIN_ROOT定位错误会导致utils/parse_options.sh加载失败字符编码脚本通过LC_ALLCPYTHONIOENCODINGUTF-8的组合规避中文文本在 C locale 下的解码错误若手动执行python3 local/parser.py请保持 UTF-8 环境许可协议词典采用 CC BY-SA 4.0 发布二次分发或商用需遵循相同方式共享条款文件头部的版权注释应予以保留姓氏去重默认剔除与主词条重复的姓氏条目需要保留时请按上文说明调整local/parser.py。小结通过 run.sh 与 local/parser.pyPaddleSpeech 将 CC-CEDICT 这一社区维护的公有领域中英词典转换为一键可复用的 JSONL 结构化数据traditional/simplified/pinyin/english四个字段清晰完整既适合作为独立的离线词典查询数据也通过G2pM.cedict与文本前端Chinese类联动为中文 TTS 的拼音标注与音素词表构建提供数据支撑。该工具链充分体现了 PaddleSpeech 示例小工具、真用途的设计思路是理解中文语音合成数据准备流程的绝佳入口。赞分享人工智能语音音频NLP媒体生成【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/paddlepaddle/PaddleSpeech点击查看免费下载相关推荐PaddleSpeech 中 CC-CEDICT 词典解析实战从 MDBG 原始词条到 JSON 格式词典数据PaddleSpeech 中 CC CEDICT 词典解析实战从 MDBG 原始词条到 JSON 格式词典数据 CC CEDICT 是社区维护的免费中英词典数人工智能语音音频DictionaryByGPT4终极指南JSON、EPUB、MDX词典格式全解析与使用技巧DictionaryByGPT4终极指南JSON、EPUB、MDX词典格式全解析与使用技巧 你是否正在寻找一款能够真正帮助你 快速提高英语词汇量 的智能单词本数据集教育ECDICT免费开源英中词典数据库的完整使用指南 ECDICT免费开源英中词典数据库的完整使用指南 想要一个功能强大且完全免费的英中词典数据库吗ECDICT正是这样一个开源项目它提供了完整的英语到中数据集NLP上一篇Lilishop促销引擎深度剖析12种营销玩法完整实现指南下一篇PyTorch Chamfer Distance3D深度学习的终极距离度量解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

华为AP4050DN FIT转FAT实战:从瘦AP到胖AP的完整刷机指南
华为AP4050DN FIT转FAT实战:从瘦AP到胖AP的完整刷机指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 2:34:47

PaddleSeg PP-HumanSeg-Lite(ConnectNet)实时人像分割模型完全指南
PaddleSeg PP-HumanSeg-Lite(ConnectNet)实时人像分割模型完全指南

人工智能计算机视觉预训练 【免费下载链接】PaddleSeg Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting,… · 2026/9/25 2:34:47

Databasus 后端开发工作流:从 .env 配置、make 运行测试,到 goose 迁移与 Swagger 文档
Databasus 后端开发工作流:从 .env 配置、make 运行测试,到 goose 迁移与 Swagger 文档

数据库灾备 【免费下载链接】databasus PostgreSQL backup tool with Point-In-Time-Recovery and restore verification 项目地址: https://gitcode.com/gh_mirrors/po/databasus 点击查看 免费下载 本篇以 backend/README.md 为主线,讲解 Databasus 后… · 2026/9/25 2:34:47

xmpp4cj即时消息实战:MessageBuilder+StanzaListener双剑合璧,如何实现双向聊天
xmpp4cj即时消息实战:MessageBuilder+StanzaListener双剑合璧,如何实现双向聊天

xmpp4cj即时消息实战:MessageBuilderStanzaListener双剑合璧,如何实现双向聊天 【免费下载链接】xmpp4cj 一个模块化和可移植的开源XMPP客户端库 项目地址: https://gitcode.com/Cangjie-TPC/xmpp4cj 想在自己的应用中实现 XMPP 双向聊天&#xf… · 2026/9/25 3:04:54

XAgent 自托管模型请求通道 `chatcompletion_request` 全解析:从参数装配到响应返回的完整链路
XAgent 自托管模型请求通道 `chatcompletion_request` 全解析:从参数装配到响应返回的完整链路

AI Agent大模型后端任务调度 【免费下载链接】XAgent An Autonomous LLM Agent for Complex Task Solving 项目地址: https://gitcode.com/gh_mirrors/xa/XAgent 点击查看 免费下载 导读 chatcompletion_request 是 XAgent 中负责聊天补全请求的核心函数&#xff… · 2026/9/25 3:04:54

Quip Node Manager 架构解析:Tauri v2 + Rust 如何编排 Docker 节点堆栈
Quip Node Manager 架构解析:Tauri v2 + Rust 如何编排 Docker 节点堆栈

Quip Node Manager 架构解析:Tauri v2 Rust 如何编排 Docker 节点堆栈 【免费下载链接】quip-node-manager A simple GUI client to manage a Quip Network node 项目地址: https://gitcode.com/gh_mirrors/qu/quip-node-manager Quip Node Manager 是一款基… · 2026/9/25 3:04:48

链表核心操作实战:单链表与双向链表的插入删除及逆序详解
链表核心操作实战:单链表与双向链表的插入删除及逆序详解

数组和链表哪个更好?这是我在带学生做数据结构实验时,被问得最多的问题。单链表和双向链表作为数据结构课程里的绝对主角,不仅考研408年年考,期末试卷次次出,更是后续栈、队列、图论的基础。我见过太多同学拿着严蔚敏的… · 2026/9/25 3:04:47

10个必看的AI Agent Harness开源项目:Awesome Harness Engineering 38个运行时与参考实现实战指南
10个必看的AI Agent Harness开源项目:Awesome Harness Engineering 38个运行时与参考实现实战指南

10个必看的AI Agent Harness开源项目:Awesome Harness Engineering 38个运行时与参考实现实战指南 【免费下载链接】awesome-harness-engineering 🛠️ Awesome tools & guides for harness engineering. 项目地址: https://gitcode.com/gh_mirror… · 2026/9/25 3:04:47

WeChatMsg 微信聊天记录导出完整教程:备份、检索、年度报告一次理清
WeChatMsg 微信聊天记录导出完整教程:备份、检索、年度报告一次理清

WeChatMsg 微信聊天记录导出完整教程:备份、检索、年度报告一次理清 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tren… · 2026/9/25 3:04:41

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码