chinese_text_normalization
chinese_text_normalization 是一款专为中文语音处理打造的开源文本标准化工具。在语音识别(ASR)和语音合成(TTS)流程中,原始文本常包含数字、日期、货币等非标准写法(如"324.75 克”、"86 年”),直接输入模型会导致发音错误。市面上虽有通用 NLP 框架,但往往缺乏“开箱即用”的中文专用模块,且构建维护规则极其繁琐。
该工具直击这一痛点,提供了一套成熟的中文文本规范化方案。它能智能将数字、日期、分数、金额、百分比及电话号码等非标准词转换为符合口语习惯的中文读法(例如将"7/12"转为“十二分之七”)。此外,它还支持中英文标点清理以及英文单词大小写统一,完美适配语音词典需求。
技术实现上,项目不仅包含基于 Python 的文本标准化(TN)模块,还集成了基于 Thrax 的逆文本标准化(ITN)能力,并灵活支持纯文本、Kaldi 档案格式及 TSV 表格等多种输入形式。其核心算法借鉴了社区优秀成果,针对中文语境进行了深度优化。
这款工具非常适合语音领域的开发者、研究人员以及需要构建高质量中文语音数据管道的团队使用。对于希望跳过繁琐规则编写、直接获得可靠中文文本预处理能力的用户而言,chinese_text_normalization 是一个务实且高效的选择。
使用场景
某语音技术团队正在构建中文智能客服的自动语音识别(ASR)后处理流水线,需要将识别出的原始文本转化为符合口语习惯的标准格式。
没有 chinese_text_normalization 时
- 数字、日期和金额等非标准词(如"324.75 克”、"86 年”)保持阿拉伯数字形态,导致 TTS 合成时发音生硬或错误,严重影响用户体验。
- 研发团队需从零开始编写复杂的正则规则来处理中文特有的量词和分数表达,耗时数周且难以覆盖“十二分之七”等边缘案例。
- 标点符号清洗逻辑混乱,无法区分句末停顿符与中间分隔符,导致下游语义分析模型因噪声干扰而准确率下降。
- 混合出现的英文单词大小写不统一,与现有的 ASR 词典格式不匹配,迫使工程师手动编写额外的预处理脚本。
使用 chinese_text_normalization 后
- 工具自动将"324.75 克”转换为“三百二十四点七五克”,将"86 年”转为“八六年”,确保 TTS 引擎能流畅、自然地朗读所有数值信息。
- 直接调用内置的成熟规则库,瞬间解决分数、货币及电话号码的标准化难题,无需维护繁琐且易错的正则表达式。
- 一键移除各类中英文标点噪音,同时保留必要的停顿信息,显著提升了后续 NLP 模型的输入质量和意图识别精度。
- 原生支持英文大小写自适应转换,完美对齐现有词典格式,并兼容 Kaldi ark 及 TSV 等多种数据流格式,无缝集成至生产环境。
chinese_text_normalization 将原本需要数周开发的脏活累活缩减为分钟级的配置工作,让团队能专注于核心业务逻辑而非底层文本清洗。
运行环境要求
- 未说明
不需要 GPU
未说明

快速开始
语音处理中的中文文本规范化
问题
在 Google 和 Github 上搜索“文本规范化”(TN),几乎找不到可以直接使用的开源项目来完成文本规范化任务。相反,你只会找到一些支持文本规范化功能的自然语言处理工具包或框架。然而,“支持文本规范化”与“真正执行文本规范化”之间仍有相当大的差距。
原因
TN 在某种程度上依赖于具体语言。
虽然部分文本规范化的处理方法可以在不同语言间共享,但一个优秀的文本规范化模块通常或多或少会涉及特定语言的知识和处理方式。
TN 具有任务相关性。
即使是同一种语言,不同的应用场景对文本规范化的要求也大相径庭。
TN 是一项“繁琐”的工作。
无论选择哪种工具包或框架,构建和维护一套文本规范化的重写规则都是一件令人头疼的事情。文本规范化任务本身的微妙和内在复杂性隐藏在其内部,而非工具或框架之中。
成熟的文本规范化模块是一种资产。
由于构建和维护文本规范化模块非常困难,它实际上成为了商业公司的一项重要资产,因此在开源社区中很难找到产品级别的文本规范化工具(如果你发现了,请指正)。
对于学术界和商业界而言,文本规范化并不是一个重要的研究或开发方向。
目标
本项目旨在为中文搭建一个开箱即用的文本规范化模块。鉴于我的背景是语音处理,该项目应能够处理中文自动语音识别文本处理流程中的大多数常见文本规范化任务。
规范化器
支持非标准词(NSW)规范化
NSW 类型 原始文本 规范化后的文本 基数 这块黄金重达324.75克 这块黄金重达三百二十四点七五克 日期 她出生于86年8月18日,她弟弟出生于1995年3月1日 她出生于八六年八月十八日 她弟弟出生于一九九五年三月一日 数字 电影中梁朝伟扮演的陈永仁的编号27149 电影中梁朝伟扮演的陈永仁的编号二七一四九 分数 现场有7/12的观众投出了赞成票 现场有十二分之七的观众投出了赞成票 金额 随便来几个价格12块5,34.5元,20.1万 随便来几个价格十二块五 三十四点五元 二十点一万 百分比 明天有62%的概率降雨 明天有百分之六十二的概率降雨 电话 这是固话0421-33441122
这是手机+86 18544139121这是固话零四二一三三四四一一二二
这是手机八六一八五四四一三九一二一致谢:该 NSW 规范化代码基于 Zhiyang Zhou 的工作。
标点符号去除
对于中文,移除 Zhon 项目中收集的标点符号列表,包括:
- 非停顿标点
'"#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘’‛“”„‟…‧﹏' - 停顿标点
'!?。。'
对于英文,移除 Python 的
string.punctuation。- 非停顿标点
多语言英文单词大小写转换 由于 ASR/TTS 词典通常会将英文条目统一为大写或小写,因此文本规范化模块也应相应地与词典保持一致。
支持的文本格式
纯文本,每行一句 (.txt)
今天早饭吃了没 没吃回家吃去吧 ...纯文本是默认格式。
Kaldi 的归档格式 (.ark)
KALDI_KEY_UTT001 今天早饭吃了没 KALDI_KEY_UTT002 没吃回家吃去吧 ...文本规范化将跳过第一列的键部分,仅对后面的转录文本进行规范化。
使用
--format ark选项可切换到 Kaldi 归档格式。表格格式 (.tsv)
ID AUDIO TEXT UTT01 audio/UTT01.wav 今晚8点整中央5播出2020年总决赛 ...使用
--format tsv选项时,规范化仅应用于TEXT字段。
注:所有输入文本均应采用 UTF-8 编码。
运行示例
- TN (Python)
确保已安装 Python 3,Python 2.X 将无法正常运行。
在 TN 目录下运行 sh run.sh,对比原始文本和规范化后的文本。
- ITN (Thrax)
确保已安装 Thrax,并且 PATH 能够找到 Thrax 可执行文件。
在 ITN 目录下运行 sh run.sh。请查看 Makefile 以了解文法依赖关系。
未来可能的工作
鉴于文本规范化在自动语音识别领域属于“完成胜于完美”的模块,而当前的状态已足以满足我的需求,我可能不会频繁更新此仓库。
当然,仍有一些需要改进的地方:
对于 TN,TN 目录下的 NSW 规范化器基于正则表达式,我发现了一些意外匹配的情况,这些模式正则表达式需要进一步优化,以提高文本规范化的精确度。
对于 ITN,可以扩展 Thrax 重写文法,以覆盖更多场景。
此外,如今许多商业系统开始将类似 RNN 的模型引入文本规范化流程,基于规则与基于模型相结合的混合系统已成为当前的最先进方案。关于这方面的更多信息,可以参考 Google 的 Richard Sproat 和 Kyle Gorman 的相关研究。
结束
常见问题
相似工具推荐
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
TTS
🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。 无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。 在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。
LocalAI
LocalAI 是一款开源的本地人工智能引擎,旨在让用户在任意硬件上轻松运行各类 AI 模型,包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛,无需昂贵的专用 GPU,仅凭普通 CPU 或常见的消费级显卡(如 NVIDIA、AMD、Intel 及 Apple Silicon)即可部署和运行复杂的 AI 任务。 对于担心数据隐私的用户而言,LocalAI 提供了“隐私优先”的解决方案,确保所有数据处理均在本地基础设施内完成,无需上传至云端。同时,它完美兼容 OpenAI、Anthropic 等主流 API 接口,这意味着开发者可以无缝迁移现有应用,直接利用本地资源替代云服务,既降低了成本又提升了可控性。 LocalAI 内置了超过 35 种后端支持(如 llama.cpp、vLLM、Whisper 等),并集成了自主 AI 代理、工具调用及检索增强生成(RAG)等高级功能,且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员,还是想要在个人电脑上体验最新 AI 技术的极客玩家,都能通过 LocalAI 获
bark
Bark 是由 Suno 推出的开源生成式音频模型,能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同,Bark 基于 Transformer 架构,不仅能模拟说话,还能生成笑声、叹息、哭泣等非语言声音,甚至能处理带有情感色彩和语气停顿的复杂文本,极大地丰富了音频表达的可能性。 它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点,让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员,还是希望快速原型设计的开发者,都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。 技术亮点方面,Bark 支持商业使用(MIT 许可),并在近期更新中实现了显著的推理速度提升,同时提供了适配低显存 GPU 的版本,降低了使用门槛。此外,社区还建立了丰富的提示词库,帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码,即可将创意文本转化为高质量音频,是连接文字与声音世界的强大桥梁。
airi
airi 是一款开源的本地化 AI 伴侣项目,旨在将虚拟角色(如“二次元老婆”或赛博生命)带入用户的现实世界。它的核心目标是复刻并超越知名 AI 主播 Neuro-sama 的能力,让用户能够拥有完全自主掌控、可私有化部署的智能伙伴。 airi 主要解决了用户对高度定制化、具备情感交互能力且数据隐私安全的 AI 角色的需求。不同于依赖云端服务的通用助手,airi 允许用户在本地运行,不仅保护了对话隐私,还赋予了用户定义角色性格与灵魂的自由。它支持实时语音聊天,甚至能直接参与《我的世界》(Minecraft)和《异星工厂》(Factorio)等游戏,实现了从单纯对话到共同娱乐的跨越。 这款工具非常适合喜爱虚拟角色的普通用户、希望搭建个性化 AI 陪伴的技术爱好者,以及研究多模态交互的开发者。其独特的技术亮点在于跨平台支持(涵盖 Web、macOS 和 Windows)以及强大的游戏交互能力,让 AI 不仅能“说”,还能“玩”。通过容器化的灵魂设计,airi 为每个人创造专属数字生命提供了可能,让虚拟陪伴变得更加真实且触手可及。
MockingBird
MockingBird 是一款开源的实时语音克隆工具,旨在让用户仅需 5 秒的参考音频,即可快速合成任意内容的语音,并实现逼真的音色复刻。它有效解决了传统语音合成技术中数据采集成本高、训练周期长以及难以实时生成的痛点,让个性化语音生成变得触手可及。 这款工具特别适合开发者、AI 研究人员以及对语音技术感兴趣的技术爱好者使用。无论是用于构建交互式语音应用、进行声学模型研究,还是制作创意内容,MockingBird 都能提供强大的支持。普通用户若具备基础的编程环境配置能力,也可通过其提供的 Web 服务或工具箱体验前沿的变声效果。 在技术亮点方面,MockingBird 基于 PyTorch 框架,不仅完美支持中文普通话及多种主流数据集,还实现了跨平台运行,兼容 Windows、Linux 乃至 M1 架构的 macOS。其独特的架构设计允许复用预训练的编码器与声码器,只需微调合成器即可获得出色效果,大幅降低了部署门槛。此外,项目内置了现成的 Web 服务器功能,方便用户通过远程调用快速集成到自己的应用中。尽管原作者已转向云端优化版本,但 MockingBird 作为经典的本地部署方案