FST ITN-ZH部署手册:私有云环境配置
1. 简介与背景
中文逆文本标准化(Inverse Text Normalization, ITN)是语音识别后处理中的关键环节,其目标是将模型输出的口语化、非结构化中文表达转换为标准书面语和数字格式。例如,“二零零八年八月八日”应被规范化为“2008年08月08日”,“早上八点半”转为“8:30a.m.”等。
FST ITN-ZH 是基于有限状态转导器(Finite State Transducer, FST)实现的高性能中文ITN系统,具备高精度、低延迟的特点。本手册介绍的是由开发者“科哥”进行WebUI二次开发后的FST ITN-ZH 私有化部署版本,支持本地或私有云环境一键运行,适用于企业级数据安全要求较高的场景。
该系统已在实际项目中验证,广泛应用于ASR后处理、智能客服、语音转写等领域。
2. 部署环境准备
2.1 硬件要求
| 组件 | 推荐配置 |
|---|---|
| CPU | Intel Xeon 或 AMD EPYC 系列,4核以上 |
| 内存 | ≥ 8GB RAM |
| 存储 | ≥ 20GB 可用空间(含日志与临时文件) |
| 网络 | 支持HTTP/HTTPS访问,开放7860端口 |
说明:本系统为轻量级服务,无GPU依赖,可在普通虚拟机或容器环境中稳定运行。
2.2 软件依赖
- 操作系统:CentOS 7+/Ubuntu 20.04+
- Python 版本:Python 3.8 ~ 3.10
- 必备工具:
gitpipbash
可通过以下命令检查基础环境:
python3 --version pip3 --version2.3 目录结构说明
部署完成后,项目根目录包含以下关键文件:
/root/fst-itn-zh/ ├── run.sh # 启动脚本 ├── app.py # WebUI主程序 ├── itn_zh.py # 核心中文ITN逻辑 ├── requirements.txt # Python依赖列表 ├── static/ # 前端静态资源 └── uploads/ # 用户上传文件暂存目录3. 安装与启动流程
3.1 克隆项目代码
使用Git拉取已二次开发的WebUI版本:
cd /root git clone https://github.com/kege/fst-itn-zh-webui.git mv fst-itn-zh-webui fst-itn-zh3.2 安装Python依赖
进入项目目录并安装所需库:
cd /root/fst-itn-zh pip3 install -r requirements.txt常见依赖包括: -gradio:用于构建Web交互界面 -openfst或pynini:FST核心引擎(若使用预编译包则无需手动安装) -jinja2,markupsafe:模板渲染支持
3.3 配置启动脚本
run.sh是核心启动脚本,内容如下:
#!/bin/bash cd /root/fst-itn-zh nohup python3 app.py --host 0.0.0.0 --port 7860 > itn.log 2>&1 & echo "FST ITN-ZH 已启动,日志记录于 itn.log"赋予执行权限:
chmod +x /root/run.sh3.4 启动服务
运行启动指令:
/bin/bash /root/run.sh首次启动约需3~5秒加载FST模型。可通过日志确认服务是否正常:
tail -f /root/fst-itn-zh/itn.log预期输出包含:
Running on local URL: http://0.0.0.0:7860 Started server extension in directory: ...4. WebUI功能详解
4.1 访问地址
在浏览器中输入:
http://<服务器IP>:7860页面加载成功后显示标题:“中文逆文本标准化 (ITN)”及开发者信息“webUI二次开发 by 科哥”。
截图示意
4.2 功能一:文本转换
使用步骤
- 打开页面,点击「📝 文本转换」标签页
- 在左侧输入框中填写待转换文本
- 点击「开始转换」按钮
- 右侧输出框实时显示标准化结果
示例演示
输入: 二零零八年八月八日早上八点半 输出: 2008年08月08日 8:30a.m.支持多类型混合转换:
输入: 这件事发生在二零一九年九月十二日的晚上,大概八点半左右,涉及金额为一万二千元。 输出: 这件事发生在2019年09月12日的晚上,大概8:30左右,涉及金额为12000元。4.3 功能二:批量转换
使用流程
- 准备一个
.txt文件,每行一条原始文本 - 切换至「📦 批量转换」标签页
- 点击「上传文件」选择文件
- 点击「批量转换」触发处理
- 完成后提供下载链接,文件名带时间戳(如
result_20250405_1423.txt)
输入文件格式示例
二零零八年八月八日 一百二十三 早上八点半 一点二五元 二十五千克输出结果示例
2008年08月08日 123 8:30a.m. ¥1.25 25kg4.4 快速示例按钮
页面底部提供常用示例快捷填充按钮,提升测试效率:
| 按钮 | 输入示例 |
|---|---|
[日期] | 二零零八年八月八日 |
[时间] | 早上八点半 |
[数字] | 一百二十三 |
[货币] | 一点二五元 |
[分数] | 五分之一 |
[度量] | 二十五千克 |
[数学] | 负二 |
[车牌] | 京A一二三四五 |
[长文本] | 二零一九年九月十二日的晚上... |
点击后自动填入输入框,便于快速验证各类规则。
5. 高级设置参数解析
通过勾选选项可精细控制转换行为。
5.1 转换独立数字
- 开启效果:
幸运一百→幸运100 - 关闭效果:
幸运一百→幸运一百
适用场景:避免语义误解,如“一百个苹果”不应变为“100个苹果”仅当上下文明确为数值时才启用。
5.2 转换单个数字 (0-9)
- 开启效果:
零和九→0和9 - 关闭效果:
零和九→零和九
注意:部分口语表达中保留汉字更自然,可根据业务需求调整。
5.3 完全转换'万'
- 开启效果:
六百万→6000000 - 关闭效果:
六百万→600万
建议:金融报表类应用推荐开启;日常对话类保留“万”单位更易读。
6. 支持的标准化类型详述
6.1 日期转换
将汉字年月日转换为阿拉伯数字格式。
输入: 二零一九年九月十二日 输出: 2019年09月12日支持年份缩写(如“二三年”→“2023年”),但建议使用完整表述以提高准确率。
6.2 时间表达归一化
区分上午/下午,并统一为12小时制英文标记。
输入: 下午三点十五分 输出: 3:15p.m.支持“半”、“刻”等口语词:“四点一刻” → “4:15”。
6.3 数字转换
递归解析中文数词结构,支持亿、万、千、百、十层级。
输入: 一千九百八十四 输出: 1984内部采用左递归消除算法,确保“三十五”不会误判为“三十+五”。
6.4 货币符号映射
根据币种自动添加对应符号:
输入: 一点二五元 → ¥1.25 输入: 一百美元 → $100 输入: 五十欧元 → €50目前主要支持人民币、美元、欧元,其他币种需扩展词典。
6.5 分数与比例
识别“X分之Y”结构并转为数学分数形式:
输入: 五分之一 → 1/5 输入: 三分之二 → 2/3可用于教育、科研文档自动化处理。
6.6 度量单位简化
结合数量与单位进行合并压缩:
输入: 三十公里 → 30km 输入: 二十五千克 → 25kg支持长度、重量、体积等常见单位,未来可接入SI国际单位体系。
6.7 数学符号处理
处理正负号、小数点等数学表达:
输入: 负二 → -2 输入: 正五点五 → +5.5适用于数学口述转录场景。
6.8 车牌号码标准化
专用车牌识别模块,保留汉字前缀,数字部分转为阿拉伯数字:
输入: 京A一二三四五 → 京A12345 输入: 沪B六七八九零 → 沪B67890支持新能源车牌(如“绿牌”)、武警、军车等特殊格式扩展。
7. 实际使用技巧与最佳实践
7.1 长文本处理策略
系统支持整段文本中多个实体同时提取与转换,无需分句预处理。
推荐做法: - 输入保持原句完整性 - 不强制断句,避免破坏上下文语义 - 若出现歧义,优先通过高级设置微调
7.2 大规模数据批处理
对于超过1000条的数据集,建议:
- 拆分为多个小于500行的
.txt文件 - 并发上传处理(Gradio默认支持单用户队列)
- 结果文件按时间戳命名归档
性能提示:单次处理1000行文本平均耗时约8~12秒(取决于句子复杂度)
7.3 结果保存与审计追踪
点击「保存到文件」可将当前输出写入服务器:
- 文件路径:
/root/fst-itn-zh/results/ - 文件命名:
output_<timestamp>.txt - 自动创建每日子目录(如
2025-04-05/)
便于后续审计、比对与导入数据库。
8. 常见问题与解决方案
8.1 Q1: 转换结果不准确?
可能原因: - 输入文本存在方言或非常规表达 - 高级设置未匹配业务需求
解决方法: - 尝试关闭“转换独立数字”等敏感开关 - 检查是否含有模糊表述(如“好几个”、“一些”) - 提交错误样例给开发者优化规则库
8.2 Q2: 是否支持方言或变体?
当前支持标准普通话下的多种表达形式:
| 类型 | 支持情况 |
|---|---|
| 简体数字 | 一、二、三 ✅ |
| 大写数字 | 壹、贰、叁 ✅ |
| 口语变体 | 幺(一)、两(二)✅ |
| 方言表达 | 如“廿”(二十)、“卅”(三十)❌(待扩展) |
建议:非通用表达建议前置清洗或定制规则。
8.3 Q3: 转换速度慢?
现象描述:首次转换响应较慢(3~5秒)
原因分析: - FST模型需加载至内存 - Gradio初始化服务线程
优化建议: - 保持服务常驻,避免频繁重启 - 生产环境可封装为Docker服务,配合Supervisor守护进程
8.4 Q4: 版权信息如何保留?
根据开源协议要求,必须保留以下声明:
webUI二次开发 by 科哥 | 微信:312088415 承诺永远开源使用 但是需要保留本人版权信息!可在前端页面底部、文档或内部系统说明中体现。
9. 操作按钮功能对照表
| 按钮名称 | 功能说明 |
|---|---|
| 开始转换 | 触发当前输入文本的标准化处理 |
| 清空 | 清除输入与输出区域内容 |
| 复制结果 | 将输出内容复制回输入框(用于连续编辑) |
| 保存到文件 | 将输出文本写入服务器本地文件 |
| 批量转换 | 处理上传的.txt文件并生成结果下载包 |
10. 界面布局说明
主界面采用简洁卡片式设计,适配桌面与移动端浏览:
┌─────────────────────────────────────────┐ │ [紫蓝渐变] 中文逆文本标准化 (ITN) │ │ webUI二次开发 by 科哥 │ ├─────────────────────────────────────────┤ │ [📝 文本转换] [📦 批量转换] │ │ │ │ ┌───────────┐ ┌───────────┐ │ │ │ 输入框 │ → │ 输出框 │ │ │ │ │ │ │ │ │ └───────────┘ └───────────┘ │ │ │ │ [开始转换] [清空] [复制] [保存] │ ├─────────────────────────────────────────┤ │ 🎯 快速示例 │ │ [日期] [时间] [数字] [货币] ... │ └─────────────────────────────────────────┘颜色主题为紫蓝渐变,视觉清晰,重点操作区突出。
11. 技术支持与维护
如有问题,请联系:
- 微信: 312088415
- 开发者: 科哥
- 更新渠道: GitHub仓库持续同步新特性与修复补丁
欢迎反馈使用体验,共同完善中文ITN生态。
12. 许可证与使用声明
本项目基于Apache License 2.0开源发布。
重要声明:
webUI二次开发 by 科哥 | 微信:312088415 承诺永远开源使用 但是需要保留本人版权信息!允许商用、修改、分发,但不得去除原始作者标识。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。