它是一个强大的多语言(97种语言)的混合文本自动分词工具。[中日英韩:已测试] 主要用途:它非常适合各种 TTS 语音合成项目,多语种混合文本的前端推理,和预处理后端训练。 它基于 py3langid 的扩展实现(>=python3.6)。 LangSegment It is a multi-lingual (97 languages) text content automatic recognition and segmentation tool. The main purposes are: front-end for various TTS (Text-to-Speech) synthesis projects, preprocessing of multilingual text mixing for both training and inference.
Implementation based on py3langid,See LICENSE file for more info. https://github.com/adbar/py3langid
功能:将文章或句子里的例如(中/英/日/韩),按不同语言自动识别分词,使文本更适合AI处理。 本代码专为各种 TTS 项目的前端文本多语种混合标注区分,多语言混合训练和推理而编写。
分词语言标签:它和html类似,它需要成对出现 内容 或者 内容。 本处理结果主要针对(中文=zh , 日文=ja , 英文=en , 韩语=ko), 实际上可支持多达 97 种不同的语言混合处理。
# 首次安装:官方源(推荐)
pip3 install LangSegment -i https://pypi.org/simple
# 后续版本升级或更新:
pip3 install LangSegment -i https://pypi.org/simple --upgrade
# 或者,国内镜像(国内镜像同步慢几天,可能会导致您无法极时获得最新版本!!!):
# pip3 install LangSegment -i https://pypi.mirrors.ustc.edu.cn/simple
示例中的句子,同时包含中日英韩4种语言,接下来将对它们按不同语种进行分词,以方便各种TTS项目进行语音合成。
# pip3 install LangSegment -i https://pypi.org/simple
import LangSegment
# input text example 示例:
text = "你的名字叫<ja>佐々木?<ja>吗?韩语中的오빠读什么呢?あなたの体育の先生は\
誰ですか? 此次发布会带来了四款iPhone 15系列机型\
和三款Apple Watch等一系列新品,这次的iPad Air采用了LCD屏幕"
# example
langlist = LangSegment.getTexts(text)
# output list : {'lang': 'zh', 'text': '...'}
print("=================================")
for line in langlist:
print(line)
print("=================================")
综上所述,“自动分词”已经极大的提高了我们的工作效率,但还是建议您对分词结果进行人工校对。 特别是中文与日文,存在大量汉字互用,这对自动分词是极具挑战性的,“分词纠错” 解决方案如下:
以下是语言标签分词详细示例:
# 手动分词标签的应用示例,例如针对中日汉字有重叠,而需要在 TTS 中混合发音的情况:
# 分词标签内的文本将识别成日文ja内容,也可以写成<ja>内容</ja>
text = "你的名字叫<ja>佐々木?<ja>"
# 或者:
text = "你的名字叫<ja>佐々木?</ja>"
# 以上均能正确输出:
# 处理成中文-- {'lang': 'zh', 'text': '你的名字叫'}
# 处理成日文-- {'lang': 'ja', 'text': '佐々木?'}
自动分词能力目前主要针对中文(zh)/日文(ja)/英文(en)/韩文(ko),进行了特别优化。 它特别适合各种 TTS 前端文本多语种内容的混合分词(自动/手动),训练和推理使用。
# 手动分词标签规范:<语言标签>文本内容</语言标签>
# ===========================================================================
# 如需手动标注,标签需要成对出现,如:“<ja>佐々木<ja>” 或者 “<ja>佐々木</ja>”
# 错误示范:“你的名字叫<ja>佐々木。” 此句子中出现的单个<ja>标签将被忽略,不会处理。
# ===========================================================================