中文ITN实战手册:FST ITN-ZH从入门到精通
1. 简介与背景
中文逆文本标准化(Inverse Text Normalization, ITN)是语音识别系统中不可或缺的一环。在自动语音识别(ASR)输出的文本中,常常包含大量口语化、非标准表达形式,例如“一百二十三”、“早上八点半”等。为了便于后续自然语言处理任务或结构化数据提取,需要将这些表达转换为统一的标准格式。
FST ITN-ZH 是一个基于有限状态转导器(Finite State Transducer, FST)架构实现的中文逆文本标准化工具,能够高效准确地完成数字、时间、日期、货币、度量单位等多种语义类别的标准化转换。本项目由开发者“科哥”进行 WebUI 二次开发,提供了直观易用的图形界面,极大降低了使用门槛。
该系统支持多种中文数字表达方式:
- 简体小写:一、二、三
- 大写汉字:壹、贰、叁
- 口语变体:幺(一)、两(二)
其核心优势在于高精度规则引擎与灵活可配置参数相结合,适用于智能客服、语音助手、会议纪要生成等多个实际场景。
2. 系统部署与启动
2.1 运行环境准备
本系统基于 Python 构建,依赖若干 NLP 和 FST 相关库。推荐运行环境如下:
- 操作系统:Linux(Ubuntu/CentOS)
- Python 版本:3.8+
- 内存要求:≥4GB
- 硬件建议:普通 CPU 即可满足实时推理需求
确保已安装gradio用于 WebUI 展示,并正确配置 FST 模型路径。
2.2 启动与重启指令
通过以下命令启动或重启服务:
/bin/bash /root/run.sh此脚本通常包含以下逻辑:
- 激活虚拟环境(如适用)
- 加载 FST 模型文件
- 启动 Gradio Web 服务
- 绑定端口 7860
服务成功启动后,可通过浏览器访问主界面。
3. 核心功能详解
3.1 功能一:单文本转换
使用流程
- 打开浏览器,访问
http://<服务器IP>:7860 - 切换至「📝 文本转换」标签页
- 在输入框中键入待转换文本
- 点击「开始转换」按钮
- 查看输出结果并进行复制或保存
示例演示
输入: 二零零八年八月八日早上八点半 输出: 2008年08月08日 8:30a.m.该功能适合对少量关键语句进行快速验证和调试。
3.2 功能二:批量文本转换
应用场景
当面对成百上千条语音识别结果时,手动逐条处理效率低下。批量转换功能允许用户上传.txt文件,每行一条原始文本,系统自动完成全部转换并生成结果文件供下载。
操作步骤
- 准备纯文本文件,每行一个句子
- 进入「📦 批量转换」页面
- 点击「上传文件」选择本地
.txt文件 - 点击「批量转换」触发处理流程
- 转换完成后点击「下载结果」获取标准化后的文本
输入文件示例
二零零八年八月八日 一百二十三 早上八点半 一点二五元 二十五千克 京A一二三四五输出结果将保持相同行数顺序,便于对照分析。
4. 高级设置与参数调优
系统提供多项可调节参数,以适应不同业务需求和风格偏好。
4.1 转换独立数字
- 开启状态:
幸运一百→幸运100 - 关闭状态:
幸运一百→幸运一百
说明:控制是否将作为独立词出现的中文数字转换为阿拉伯数字。若上下文强调语义完整性而非数值表示,建议关闭。
4.2 转换单个数字 (0–9)
- 开启状态:
零和九→0和9 - 关闭状态:
零和九→零和九
说明:影响单个数字字符的转换行为。在代码、编号等特殊语境下可能需保留原样。
4.3 完全转换“万”
- 开启状态:
六百万→6000000 - 关闭状态:
六百万→600万
说明:决定是否展开“万”单位。金融报表等需精确数值的场景建议开启;日常交流中保留“万”更符合阅读习惯。
5. 支持的转换类型详述
5.1 日期标准化
将中文年月日表达转换为 ISO 兼容格式。
输入: 二零一九年九月十二日 输出: 2019年09月12日 输入: 廿三年腊月初八 输出: 2023年01月19日(需模型支持农历解析)支持全数字补零,确保字段对齐。
5.2 时间表达归一化
区分上午/下午,统一为 12 小时制带 a.m./p.m. 标记。
输入: 早上八点半 输出: 8:30a.m. 输入: 下午三点十五分 输出: 3:15p.m.也可扩展支持 24 小时制输出模式(需配置选项)。
5.3 数值转换
涵盖整数、小数、大数单位(万、亿)的完整映射。
输入: 一千九百八十四 输出: 1984 输入: 三点一四一五九 输出: 3.14159结合“完全转换‘万’”开关,实现粒度可控。
5.4 货币符号化
自动识别币种并添加对应货币符号。
输入: 一点二五元 输出: ¥1.25 输入: 一百美元 输出: $100 输入: 五十欧元 输出: €50当前主要支持人民币、美元、欧元三种常见货币。
5.5 分数与比例
将“X分之Y”结构转换为数学分数形式。
输入: 五分之一 输出: 1/5 输入: 三分之二 输出: 2/3可用于教育、科技文档处理场景。
5.6 度量单位简化
统一物理量表达方式。
输入: 二十五千克 输出: 25kg 输入: 三十公里 输出: 30km支持常见长度、重量、体积单位缩写。
5.7 数学符号处理
处理正负号、零值等抽象数学概念。
输入: 负二 输出: -2 输入: 正五点五 输出: +5.5增强科学计算类文本的可读性。
5.8 车牌号码规范化
专用于车辆牌照识别后处理。
输入: 京A一二三四五 输出: 京A12345 输入: 沪B六七八九零 输出: 沪B67890保留地区编码不变,仅替换数字部分。
6. 实际应用技巧
6.1 长文本多类型混合处理
系统具备上下文感知能力,可在同一段落中识别并转换多种类型实体。
输入: 这件事发生在二零一九年九月十二日的晚上,大概八点半左右,涉及金额为一万二千元。 输出: 这件事发生在2019年09月12日的晚上,大概8:30左右,涉及金额为12000元。适用于会议记录、访谈转录等复杂文本场景。
6.2 批量数据预处理最佳实践
对于大规模语音转写结果的清洗任务,推荐以下工作流:
- 将 ASR 输出按句切分,每行一句
- 使用批量转换功能一次性处理
- 下载结果后进行去重、校验、入库操作
- 对异常条目人工复核并反馈优化模型
可显著提升数据处理效率。
6.3 结果持久化与追溯
点击「保存到文件」按钮可将当前转换结果写入服务器指定目录,文件名包含时间戳,如:
itn_result_20250405_142316.txt便于版本管理和审计追踪。
7. 常见问题与解决方案
7.1 转换结果不准确
可能原因:
- 输入文本存在歧义或非常规表达
- 高级设置未匹配应用场景
解决方法:
- 检查输入是否符合普通话规范
- 调整“高级设置”中的开关组合
- 提交错误案例给开发者用于模型迭代
7.2 是否支持方言?
目前系统专注于标准普通话表达体系,暂不支持粤语、闽南语等地域性发音对应的书面表达。但支持以下常见变体:
| 类型 | 支持情况 |
|---|---|
| 幺(一) | ✅ 支持 |
| 两(二) | ✅ 支持 |
| 廿(二十) | ⚠️ 部分支持 |
| 农历日期 | ⚠️ 依赖外部模块 |
未来可通过定制规则集拓展方言适配能力。
7.3 性能表现如何?
- 首次加载延迟:约 3–5 秒(模型初始化)
- 后续响应速度:平均 <100ms/条
- 并发能力:Gradio 默认支持轻量级并发,生产环境建议配合反向代理部署
对于极高吞吐需求,可考虑封装为 REST API 服务。
8. 用户界面说明
8.1 主界面布局解析
┌─────────────────────────────────────────┐ │ [紫蓝渐变] 中文逆文本标准化 (ITN) │ │ webUI二次开发 by 科哥 │ ├─────────────────────────────────────────┤ │ [📝 文本转换] [📦 批量转换] │ │ │ │ ┌───────────┐ ┌───────────┐ │ │ │ 输入框 │ → │ 输出框 │ │ │ │ │ │ │ │ │ └───────────┘ └───────────┘ │ │ │ │ [开始转换] [清空] [复制] [保存] │ ├─────────────────────────────────────────┤ │ 🎯 快速示例 │ │ [日期] [时间] [数字] [货币] ... │ └─────────────────────────────────────────┘界面设计简洁明了,功能分区清晰,适合各类技术水平用户操作。
8.2 操作按钮功能一览
| 按钮 | 功能描述 |
|---|---|
| 开始转换 | 触发当前输入内容的标准化处理 |
| 清空 | 清除输入与输出区域内容 |
| 复制结果 | 将输出内容回填至输入框,便于连续编辑 |
| 保存到文件 | 将结果写入服务器日志文件 |
| 批量转换 | 启动文件上传与批处理流程 |
9. 技术支持与版权声明
9.1 获取帮助
如在使用过程中遇到问题或有功能建议,请联系:
- 微信: 312088415
- 开发者: 科哥
欢迎提交 Bug 报告及改进建议,共同推动项目发展。
9.2 开源许可与版权要求
本项目遵循 Apache License 2.0 开源协议,允许自由使用、修改和分发。
重要声明:
webUI二次开发 by 科哥 | 微信:312088415 承诺永远开源使用 但是需要保留本人版权信息!任何衍生作品均须保留上述版权声明,尊重原创劳动成果。
10. 总结
FST ITN-ZH 是一款功能完备、易于使用的中文逆文本标准化工具,凭借其基于有限状态机的高效规则引擎,在准确性与性能之间取得了良好平衡。通过科哥开发的 WebUI 界面,即使是非技术人员也能轻松上手,快速完成语音识别结果的后处理任务。
本文全面介绍了系统的部署方式、核心功能、高级配置、典型应用场景及常见问题应对策略,旨在帮助用户从入门走向精通。无论是个人学习、科研实验还是企业级应用集成,FST ITN-ZH 都是一个值得信赖的选择。
未来可进一步探索方向包括:
- 更丰富的方言支持
- 自定义规则插件机制
- 多语言混合 ITN 能力
- 与主流 ASR 系统深度集成
持续关注更新,解锁更多潜力!
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。