LangSegment


NameLangSegment JSON
Version 0.3.5 PyPI version JSON
download
home_pagehttps://github.com/juntaosun/LangSegment
SummaryThis is a multilingual tokenization tool that currently supports for zh/ja/en/ko, and more languages.
upload_time2024-08-20 09:54:55
maintainerNone
docs_urlNone
authorsunnyboxs
requires_python>=3.6
licenseBSD
keywords language detection language identification langid langid.py nlp language
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # LangSegment
**<font size=3 color='#00FFFF'>简介:它是一个强大的多语言(97种语言)的混合文本自动分词工具。[中/日/英/韩:已测试]</font>**   
**<font size=3 color='#00FFFF'>主要用途:“一口气” 让你的 TTS 语音合成项目 VITS 说出多国语言,多语种混合文本的分词推理,和预处理训练。</font>**   
**<font size=3 color='#00FFFF'>分词支持:中文/英文/日文/韩语/法语/越南语/俄语/泰语/</font>**   
**<font size=3 color='#00FFFF'>语音标签:SSML !现已支持中文:数字/货币/日期/时间!</font>**   

![image](./example.png)   

它基于 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 项目的前端文本多语种混合标注区分,多语言混合训练和推理而编写。

## 🔥最近更新:News    
* 版本:v0.3.5   (更新帮助见下文)。
    - 🎉新功能: (SSML)标签实现。支持中文数字/货币/日期/时间。 
* 添加支持: "zh"中文(数字拼音pinyin),保留多音字(音素)指定。 
* 添加支持: "ru"俄语Russian / "th"泰语Thai。
* 添加支持: "fr"法语French  / "vi"越南语Vietnamese。
* 语言优先级,置信度评分和阀值。
* 优化字符处理。fix: LangSegment.setfilters    
* 更细致的处理,中日英韩,分词更精准!  
* 多语言过滤组功能(默认:中/英/日/韩)!帮您自动清理不需要的语言内容。   
* 添加 WebUI 可视化界面,运行 app.py 即可快捷体验(如图所示)。  

* <a href='https://huggingface.co/spaces/sunnyboxs/LangSegment'><u>点击在线体验,感谢 huggingface 提供服务支持</u>:<img src='https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue'></a>

![image](./webui.png)   

```python
# Gradio demo:To use our gradio demo locally:
# 运行脚本,打开浏览器 gradio webui 界面,开始快速体验。(gradio==3.50.2)
python app.py  
```

## 完全可控:支持    
* (1)自动分词:“韩语中的오빠读什么呢?あなたの体育の先生は誰ですか? 此次带来了四款iPhone 15系列机型”     
* (2)手动分词:“你的名字叫\<ja\>佐々木?\<ja\>吗?”  

## 语言标签:支持  
>分词语言标签:它和html类似,它需要成对出现 \<zh\>内容\<zh\>  或者  \<zh\>内容\</zh\>。    
本处理结果主要针对(中文=zh , 日文=ja , 英文=en , 韩语=ko), 实际上可支持多达 97 种不同的语言混合处理。    

## 安装方法:Install  (推荐使用官方源)
```bash
# 首次安装:官方源(推荐)(使用 pip 或 pip3)
pip3 install LangSegment -i  https://pypi.org/simple
# 后续版本升级或更新:(使用 pip 或 pip3)
pip3 install LangSegment -i  https://pypi.org/simple --upgrade

# 或者,国内镜像(国内镜像同步慢几天,可能会导致您无法极时获得最新版本!!!):  
# pip3 install LangSegment -i https://pypi.mirrors.ustc.edu.cn/simple
```
## 使用示例:Example Input  
>示例中的句子,同时包含中日英韩4种语言,接下来将对它们按不同语种进行分词,以方便各种TTS项目进行语音合成。  
```python

    # 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("=================================")
```
## 处理结果:Example Output  
```python
    # output 输出列表行:lang=语言,text=内容
    # ===========================================================================
    # {'lang': 'zh', 'text': '你的名字叫'}
    # {'lang': 'ja', 'text': '佐々木?'}
    # {'lang': 'zh', 'text': '吗?韩语中的'}
    # {'lang': 'ko', 'text': '오빠'}
    # {'lang': 'zh', 'text': '读什么呢?'}
    # {'lang': 'ja', 'text': 'あなたの体育の先生は誰ですか?'}
    # {'lang': 'zh', 'text': ' 此次发布会带来了四款'}
    # {'lang': 'en', 'text': 'i Phone'}
    # {'lang': 'zh', 'text': ' 15系列机型和三款'}
    # {'lang': 'en', 'text': 'Apple Watch'}
    # {'lang': 'zh', 'text': '等一系列新品,这次的'}
    # {'lang': 'en', 'text': 'i Pad Air'}
    # {'lang': 'zh', 'text': '采用了'}
    # {'lang': 'en', 'text': 'L C D'}
    # {'lang': 'zh', 'text': '屏幕'}
    # ===========================================================================
    # 其中英文缩写字母如“LCD”,英文标准发音为“L-C-D”,
    # 而在语音合成TTS项目中,一般用空格隔开字母来单独发音:“L C D”
```

## SSML标签:支持!(中文:数字/货币/日期/时间)  
```python
> 版本支持:>= 0.3.5  
SSML标签专为TTS设计(但它不使用臃肿的 XML ,使用更简单):  
支持中文数字/货币/日期/时间。  

# 使用示例,请用 SSML 标签进行包裹
text = "最大数字:<number>65535</number>" 
# 最大数字:六五五三五

text = "你的收入:<currency>120000美元</currency>" 
# 你的收入:十二万美元

text = "电话号码:<telephone>+8613800138000</telephone>" 
# 电话号码:幺三八零零幺三八零零零

text = "版本号码:<number>0.3.5</number>" 
# 版本号码:零点三点五

text = "<date>每天20:30</date>记得按时吃饭哦!" 
# 每天二十点三十分记得按时吃饭哦!

text = "入库日期:<date>2024/08/06</date>" 
# 入库日期:二零二四年八月六日
```

## 英文拼读:支持  
```python
TTS语音合成(英文字母)大小写拼读规则:
(1)需要单个字母发音就大写,比如:USA,USB,ChatGPT,LCD,GPU,CEO。
(2)其它情况正常拼读,就按正常拼写。比如:Nvidia , Cuda 或者全小写 (nvidia , cuda )
```

## 拼音保留:支持(多音字)  
> 版本支持:>= 0.3.2  
> 常见需求:直接修改 TTS 的汉字读音,保留拼音输入。  
```python
# 开启汉语拼音保留,(TTS标准:数字拼音格式),默认关闭。  
LangSegment.setKeepPinyin(True)  

# 汉字拼音指定示例:以下句子,括号中的拼音,均识别为中文。
text = "这个字的读音是角(jue2)色,而不是角(jiao3)色"  
```

## 分词纠错:很重要!
>综上所述,“自动分词”已经极大的提高了我们的工作效率,但还是建议您对分词结果进行人工校对。    
特别是中文与日文,存在大量汉字互用,这对自动分词是极具挑战性的,“分词纠错” 解决方案如下:


* (1)自动分词纠错:在中文与日文句子之间,打上句号。来辅助分词(自动上下文分词)。   
* (2)手动分词纠错:您可手动添加语言标签\<ja\>,\<ko\>,\<zh\>,\<en\>等来辅助进行强制分词。    

以下是语言标签分词详细示例:   
```python
    # 手动分词标签的应用示例,例如针对中日汉字有重叠,而需要在 TTS 中混合发音的情况:
    # 分词标签内的文本将识别成日文ja内容,也可以写成<ja>内容</ja>
    text = "你的名字叫<ja>佐々木?<ja>"  
    # 或者:
    text = "你的名字叫<ja>佐々木?</ja>"  
    # 以上均能正确输出:
    # 处理成中文-- {'lang': 'zh', 'text': '你的名字叫'}
    # 处理成日文-- {'lang': 'ja', 'text': '佐々木?'}
```
自动分词能力目前主要针对中文(zh)/日文(ja)/英文(en)/韩文(ko),进行了特别优化。  
它特别适合各种 TTS 前端文本多语种内容的混合分词(自动/手动),训练和推理使用。  

```python
    # 手动分词标签规范:<语言标签>文本内容</语言标签>
    # ===========================================================================
    # 如需手动标注,标签需要成对出现,如:“<ja>佐々木<ja>”  或者  “<ja>佐々木</ja>”
    # 错误示范:“你的名字叫<ja>佐々木。” 此句子中出现的单个<ja>标签将被忽略,不会处理。
    # ===========================================================================
```  

## 语言过滤:支持
> 版本支持:>=0.2.0   
语言过滤组功能, 可以指定保留语言。不在过滤组中的语言将被清除。您可随心搭配TTS语音合成所支持的语言。  
```python
# Set language filters
# 设置语言过滤功能,未指定的语言将被清除,使它完全适配您的TTS项目。
LangSegment.setfilters(["zh", "en", "ja", "ko"]) # 标准写法
# 或者写成:
# LangSegment.setfilters(["zh_en_ja_ko"]) # 写法1,过滤效果相同
# LangSegment.setfilters(["zh-en-ja-ko"]) # 写法2,过滤效果相同
# 获取过滤器:
# LangSegment.getfilters()

# 参数组合说明,以下是部份场景示例:
# ["zh"]        # 按中文识别
# ["en"]        # 按英文识别
# ["ja"]        # 按日文识别
# ["ko"]        # 按韩文识别
# ["zh_ja"]     # 中日混合识别
# ["zh_en"]     # 中英混合识别
# ["zh_ko"]     # 中韩混合识别
# ["ja_en"]     # 日英混合识别
# ["zh_ko_en"]  # 中韩英混合识别
# 以上是示例,您可根据自己的TTS项目进行自由组合。
```  
## 语言优先级:支持(纯数字输入示例)
> 版本支持:>=0.2.1   
当我们在鉴别纯数字时,比如“123456”,全球通用。如果没有提供上下文,将无法区分归属(默认en)。  
这时候,您只需调整语言优先级。就能准确识别。相关示例如下:

```python
# 仅输入独立纯数字:所有国家通用,因为没有提供上下文,所以无法区分语言归属
print(LangSegment.getTexts("123456789")) # 国际纯数字,默认输出:英文=en

# 调整过滤语言优先级,中文优先,数字按中文优先识别
LangSegment.setfilters(["zh","ja"])
print(LangSegment.getTexts("123456789")) # 识别输出:中文=zh

# 调整过滤语言优先级,日语优先,数字按日语优先识别
LangSegment.setfilters(["ja","zh"])
print(LangSegment.getTexts("123456789")) # 识别输出:日文=ja

# 调整过滤语言优先级,韩语优先,数字按韩语优先识别
LangSegment.setfilters(["ko","zh"])
print(LangSegment.getTexts("123456789")) # 识别输出:韩文=ko  

# 识别输出:中文,(因为提供了上下文,汉字“编号:”)
LangSegment.setfilters(["ko","zh","en","ja"])
print(LangSegment.getTexts("编号:123456789"))  # 提供上下文,识别输出:中文=zh  
print(LangSegment.getTexts("Number:123456789"))  # 提供上下文,识别输出:英文=en  
print(LangSegment.getTexts("번호:123456789"))  # 提供上下文,识别输出:韩文=ko  
```   
## 优先级与置信度:特殊示例
> 版本支持:>=0.2.1   
语言优先级除了对输入的纯数字外,它对中文与日文也特别有用,以下是使用示例:   

* 示例汉字词:“番号”,由于在中文和日语,两者使用几乎完全一样,在中日混合模式下。   
```python
# 在中日混合下,默认情况为中文优先。
LangSegment.setfilters(["zh","ja","en","ko"])
# 默认处理:
print(LangSegment.getTexts("番号: 123456789"))  
# [{'lang': 'zh', 'text': '番号: 123456789 ', 'score': 0.87188566}]
# 默认识别:中文=zh ,识别的参考置信度是:0.87
``` 
* 而此时,在中日混合模式下,我们希望它识别成:日语=ja。 
```python
# 只需按如下调整过滤器的语言优先级。让 ja 优先于 zh 之前。
LangSegment.setfilters(["ja","zh","en","ko"])
# 再次处理:
print(LangSegment.getTexts("番号: 123456789"))  
# [{'lang': 'ja', 'text': '番号: 123456789 ', 'score': 0.87188566}]
# 阀值的精准控制下,它被优先识别为我们希望的结果:日文=ja  

# 您还可以添加语言标签:精准控制
print(LangSegment.getTexts("<ja>番号: 123456789</ja>")) 
# 添加语言标签,正确输出:日文=ja
```   

## 预览新增:法语(French)/越南语(Vietnamese)/俄语(Russian)/泰语(Thai)
> 版本支持:>=0.2.2 (法语(French)/越南语(Vietnamese))  
> 版本支持:>=0.2.3 (俄语(Russian)/泰语(Thai))  
> 法语和越南语,您只需在语言过滤器中添加,即可配合分词标签使用。

```python
# 自动分词启用设置:法语="fr" , 越南语="vi", "ru"俄语=Russian, "th"泰语=Thai
LangSegment.setfilters(["fr", "vi" , "zh", "ja", "ko", "en"])

# 可以随意搭配,比如您的TTS只需(越南语/中文),则仅需保留两个语言。
# LangSegment.setfilters(["vi" , "zh"])

# 对应的(法语fr和越南语vi)手动分词语言标签:
# <fr>Français</fr>、<vi>Tiếng Việt</vi>
```  
>每个语种它们对应的语言分词标签: (ISO 639-1 codes given):
>* \<zh\>:中文 = Chinese  
>* \<en\>:英语 = English  
>* \<ja\>:日语 = Japanese  
>* \<ko\>:韩语 = Korean  
>* \<fr\>:法语 = French  
>* \<vi\>:越南语 = Vietnamese  
>* \<ru\>:俄语 = Russian  
>* \<th\>:泰语 = Thai     
>* 更多其它97个语种标签,在下方完整列表已经列出。    


## 总结说明:  
它经过了高达 97 种语言的预训练,相信它绝对能满足您的 TTS 语音合成项目所需。    
comes pre-trained on 97 languages (ISO 639-1 codes given):  
>af, am, an, ar, as, az, be, bg, bn, br, bs, ca, cs, cy, da, de, dz, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gl, gu, he, hi, hr, ht, hu, hy, id, is, it, ja, jv, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mk, ml, mn, mr, ms, mt, nb, ne, nl, nn, no, oc, or, pa, pl, ps, pt, qu, ro, ru, rw, se, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, ug, uk, ur, vi, vo, wa, xh, zh, zu  


---
---
> 备注:多语种混合文本转语音合成(TTS),中/日/英/韩/已完成测试。  
其它语种未作具体测试,如有Bug和优化建议,欢迎提出或指正,感谢~。  
Note: The speech synthesis test content is currently mainly for four categories: Chinese, Japanese, English and Korean.     
Other languages have not been specifically tested. If there are any bugs or optimization suggestions, please feel free to raise them or correct them. Thank you~  
Special thanks to the following projects: [py3langid](https://github.com/adbar/py3langid)
---
---

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/juntaosun/LangSegment",
    "name": "LangSegment",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "language detection, language identification, langid, langid.py, nlp, language",
    "author": "sunnyboxs",
    "author_email": null,
    "download_url": null,
    "platform": null,
    "description": "# LangSegment\r\n**<font size=3 color='#00FFFF'>\u7b80\u4ecb\uff1a\u5b83\u662f\u4e00\u4e2a\u5f3a\u5927\u7684\u591a\u8bed\u8a00\uff0897\u79cd\u8bed\u8a00\uff09\u7684\u6df7\u5408\u6587\u672c\u81ea\u52a8\u5206\u8bcd\u5de5\u5177\u3002[\u4e2d/\u65e5/\u82f1/\u97e9\uff1a\u5df2\u6d4b\u8bd5]</font>**   \r\n**<font size=3 color='#00FFFF'>\u4e3b\u8981\u7528\u9014\uff1a\u201c\u4e00\u53e3\u6c14\u201d \u8ba9\u4f60\u7684 TTS \u8bed\u97f3\u5408\u6210\u9879\u76ee VITS \u8bf4\u51fa\u591a\u56fd\u8bed\u8a00\uff0c\u591a\u8bed\u79cd\u6df7\u5408\u6587\u672c\u7684\u5206\u8bcd\u63a8\u7406\uff0c\u548c\u9884\u5904\u7406\u8bad\u7ec3\u3002</font>**   \r\n**<font size=3 color='#00FFFF'>\u5206\u8bcd\u652f\u6301\uff1a\u4e2d\u6587/\u82f1\u6587/\u65e5\u6587/\u97e9\u8bed/\u6cd5\u8bed/\u8d8a\u5357\u8bed/\u4fc4\u8bed/\u6cf0\u8bed/</font>**   \r\n**<font size=3 color='#00FFFF'>\u8bed\u97f3\u6807\u7b7e\uff1aSSML \uff01\u73b0\u5df2\u652f\u6301\u4e2d\u6587\uff1a\u6570\u5b57/\u8d27\u5e01/\u65e5\u671f/\u65f6\u95f4\uff01</font>**   \r\n\r\n![image](./example.png)   \r\n\r\n\u5b83\u57fa\u4e8e py3langid \u7684\u6269\u5c55\u5b9e\u73b0\uff08>=python3.6\uff09\u3002  \r\n``LangSegment`` It is a multi-lingual (97 languages) text content automatic recognition and segmentation tool.  \r\nThe main purposes are: front-end for various TTS (Text-to-Speech) synthesis projects, preprocessing of multilingual text mixing for both training and inference.  \r\n\r\n>Implementation based on py3langid\uff0cSee LICENSE file for more info.  \r\nhttps://github.com/adbar/py3langid  \r\n\r\n\r\n\u529f\u80fd\uff1a\u5c06\u6587\u7ae0\u6216\u53e5\u5b50\u91cc\u7684\u4f8b\u5982\uff08\u4e2d/\u82f1/\u65e5/\u97e9\uff09\uff0c\u6309\u4e0d\u540c\u8bed\u8a00\u81ea\u52a8\u8bc6\u522b\u5206\u8bcd\uff0c\u4f7f\u6587\u672c\u66f4\u9002\u5408AI\u5904\u7406\u3002    \r\n\u672c\u4ee3\u7801\u4e13\u4e3a\u5404\u79cd TTS \u9879\u76ee\u7684\u524d\u7aef\u6587\u672c\u591a\u8bed\u79cd\u6df7\u5408\u6807\u6ce8\u533a\u5206\uff0c\u591a\u8bed\u8a00\u6df7\u5408\u8bad\u7ec3\u548c\u63a8\u7406\u800c\u7f16\u5199\u3002\r\n\r\n## \ud83d\udd25\u6700\u8fd1\u66f4\u65b0\uff1aNews    \r\n* \u7248\u672c\uff1av0.3.5   \uff08\u66f4\u65b0\u5e2e\u52a9\u89c1\u4e0b\u6587\uff09\u3002\r\n    - \ud83c\udf89\u65b0\u529f\u80fd: \uff08SSML\uff09\u6807\u7b7e\u5b9e\u73b0\u3002\u652f\u6301\u4e2d\u6587\u6570\u5b57/\u8d27\u5e01/\u65e5\u671f/\u65f6\u95f4\u3002 \r\n* \u6dfb\u52a0\u652f\u6301\uff1a \"zh\"\u4e2d\u6587\uff08\u6570\u5b57\u62fc\u97f3pinyin\uff09\uff0c\u4fdd\u7559\u591a\u97f3\u5b57\uff08\u97f3\u7d20\uff09\u6307\u5b9a\u3002 \r\n* \u6dfb\u52a0\u652f\u6301\uff1a \"ru\"\u4fc4\u8bedRussian / \"th\"\u6cf0\u8bedThai\u3002\r\n* \u6dfb\u52a0\u652f\u6301\uff1a \"fr\"\u6cd5\u8bedFrench  / \"vi\"\u8d8a\u5357\u8bedVietnamese\u3002\r\n* \u8bed\u8a00\u4f18\u5148\u7ea7\uff0c\u7f6e\u4fe1\u5ea6\u8bc4\u5206\u548c\u9600\u503c\u3002\r\n* \u4f18\u5316\u5b57\u7b26\u5904\u7406\u3002fix: LangSegment.setfilters    \r\n* \u66f4\u7ec6\u81f4\u7684\u5904\u7406\uff0c\u4e2d\u65e5\u82f1\u97e9\uff0c\u5206\u8bcd\u66f4\u7cbe\u51c6\uff01  \r\n* \u591a\u8bed\u8a00\u8fc7\u6ee4\u7ec4\u529f\u80fd\uff08\u9ed8\u8ba4:\u4e2d/\u82f1/\u65e5/\u97e9\uff09\uff01\u5e2e\u60a8\u81ea\u52a8\u6e05\u7406\u4e0d\u9700\u8981\u7684\u8bed\u8a00\u5185\u5bb9\u3002   \r\n* \u6dfb\u52a0 WebUI \u53ef\u89c6\u5316\u754c\u9762\uff0c\u8fd0\u884c app.py \u5373\u53ef\u5feb\u6377\u4f53\u9a8c\uff08\u5982\u56fe\u6240\u793a\uff09\u3002  \r\n\r\n* <a href='https://huggingface.co/spaces/sunnyboxs/LangSegment'><u>\u70b9\u51fb\u5728\u7ebf\u4f53\u9a8c\uff0c\u611f\u8c22 huggingface \u63d0\u4f9b\u670d\u52a1\u652f\u6301</u>\uff1a<img src='https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue'></a>\r\n\r\n![image](./webui.png)   \r\n\r\n```python\r\n# Gradio demo\uff1aTo use our gradio demo locally:\r\n# \u8fd0\u884c\u811a\u672c\uff0c\u6253\u5f00\u6d4f\u89c8\u5668 gradio webui \u754c\u9762\uff0c\u5f00\u59cb\u5feb\u901f\u4f53\u9a8c\u3002(gradio==3.50.2)\r\npython app.py  \r\n```\r\n\r\n## \u5b8c\u5168\u53ef\u63a7\uff1a\u652f\u6301    \r\n* \uff081\uff09\u81ea\u52a8\u5206\u8bcd\uff1a\u201c\u97e9\u8bed\u4e2d\u7684\uc624\ube60\u8bfb\u4ec0\u4e48\u5462\uff1f\u3042\u306a\u305f\u306e\u4f53\u80b2\u306e\u5148\u751f\u306f\u8ab0\u3067\u3059\u304b? \u6b64\u6b21\u5e26\u6765\u4e86\u56db\u6b3eiPhone 15\u7cfb\u5217\u673a\u578b\u201d     \r\n* \uff082\uff09\u624b\u52a8\u5206\u8bcd\uff1a\u201c\u4f60\u7684\u540d\u5b57\u53eb\\<ja\\>\u4f50\u3005\u6728\uff1f\\<ja\\>\u5417\uff1f\u201d  \r\n\r\n## \u8bed\u8a00\u6807\u7b7e\uff1a\u652f\u6301  \r\n>\u5206\u8bcd\u8bed\u8a00\u6807\u7b7e\uff1a\u5b83\u548chtml\u7c7b\u4f3c\uff0c\u5b83\u9700\u8981\u6210\u5bf9\u51fa\u73b0 \\<zh\\>\u5185\u5bb9\\<zh\\>  \u6216\u8005  \\<zh\\>\u5185\u5bb9\\</zh\\>\u3002    \r\n\u672c\u5904\u7406\u7ed3\u679c\u4e3b\u8981\u9488\u5bf9\uff08\u4e2d\u6587=zh , \u65e5\u6587=ja , \u82f1\u6587=en , \u97e9\u8bed=ko\uff09, \u5b9e\u9645\u4e0a\u53ef\u652f\u6301\u591a\u8fbe 97 \u79cd\u4e0d\u540c\u7684\u8bed\u8a00\u6df7\u5408\u5904\u7406\u3002    \r\n\r\n## \u5b89\u88c5\u65b9\u6cd5\uff1aInstall  (\u63a8\u8350\u4f7f\u7528\u5b98\u65b9\u6e90)\r\n```bash\r\n# \u9996\u6b21\u5b89\u88c5\uff1a\u5b98\u65b9\u6e90\uff08\u63a8\u8350\uff09\uff08\u4f7f\u7528 pip \u6216 pip3\uff09\r\npip3 install LangSegment -i  https://pypi.org/simple\r\n# \u540e\u7eed\u7248\u672c\u5347\u7ea7\u6216\u66f4\u65b0\uff1a\uff08\u4f7f\u7528 pip \u6216 pip3\uff09\r\npip3 install LangSegment -i  https://pypi.org/simple --upgrade\r\n\r\n# \u6216\u8005\uff0c\u56fd\u5185\u955c\u50cf\uff08\u56fd\u5185\u955c\u50cf\u540c\u6b65\u6162\u51e0\u5929\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4\u60a8\u65e0\u6cd5\u6781\u65f6\u83b7\u5f97\u6700\u65b0\u7248\u672c\uff01\uff01\uff01\uff09\uff1a  \r\n# pip3 install LangSegment -i https://pypi.mirrors.ustc.edu.cn/simple\r\n```\r\n## \u4f7f\u7528\u793a\u4f8b\uff1aExample Input  \r\n>\u793a\u4f8b\u4e2d\u7684\u53e5\u5b50\uff0c\u540c\u65f6\u5305\u542b\u4e2d\u65e5\u82f1\u97e94\u79cd\u8bed\u8a00\uff0c\u63a5\u4e0b\u6765\u5c06\u5bf9\u5b83\u4eec\u6309\u4e0d\u540c\u8bed\u79cd\u8fdb\u884c\u5206\u8bcd\uff0c\u4ee5\u65b9\u4fbf\u5404\u79cdTTS\u9879\u76ee\u8fdb\u884c\u8bed\u97f3\u5408\u6210\u3002  \r\n```python\r\n\r\n    # pip3 install LangSegment -i  https://pypi.org/simple\r\n    import LangSegment\r\n\r\n    # input text example \u793a\u4f8b\uff1a\r\n    text = \"\u4f60\u7684\u540d\u5b57\u53eb<ja>\u4f50\u3005\u6728\uff1f<ja>\u5417\uff1f\u97e9\u8bed\u4e2d\u7684\uc624\ube60\u8bfb\u4ec0\u4e48\u5462\uff1f\u3042\u306a\u305f\u306e\u4f53\u80b2\u306e\u5148\u751f\u306f\\\r\n    \u8ab0\u3067\u3059\u304b? \u6b64\u6b21\u53d1\u5e03\u4f1a\u5e26\u6765\u4e86\u56db\u6b3eiPhone 15\u7cfb\u5217\u673a\u578b\\\r\n    \u548c\u4e09\u6b3eApple Watch\u7b49\u4e00\u7cfb\u5217\u65b0\u54c1\uff0c\u8fd9\u6b21\u7684iPad Air\u91c7\u7528\u4e86LCD\u5c4f\u5e55\" \r\n\r\n    # example\r\n    langlist = LangSegment.getTexts(text)\r\n\r\n    # output list : {'lang': 'zh', 'text': '...'}\r\n    print(\"=================================\")\r\n    for line in langlist:\r\n        print(line)\r\n    print(\"=================================\")\r\n```\r\n## \u5904\u7406\u7ed3\u679c\uff1aExample Output  \r\n```python\r\n    # output \u8f93\u51fa\u5217\u8868\u884c\uff1alang=\u8bed\u8a00\uff0ctext=\u5185\u5bb9\r\n    # ===========================================================================\r\n    # {'lang': 'zh', 'text': '\u4f60\u7684\u540d\u5b57\u53eb'}\r\n    # {'lang': 'ja', 'text': '\u4f50\u3005\u6728\uff1f'}\r\n    # {'lang': 'zh', 'text': '\u5417\uff1f\u97e9\u8bed\u4e2d\u7684'}\r\n    # {'lang': 'ko', 'text': '\uc624\ube60'}\r\n    # {'lang': 'zh', 'text': '\u8bfb\u4ec0\u4e48\u5462\uff1f'}\r\n    # {'lang': 'ja', 'text': '\u3042\u306a\u305f\u306e\u4f53\u80b2\u306e\u5148\u751f\u306f\u8ab0\u3067\u3059\u304b?'}\r\n    # {'lang': 'zh', 'text': ' \u6b64\u6b21\u53d1\u5e03\u4f1a\u5e26\u6765\u4e86\u56db\u6b3e'}\r\n    # {'lang': 'en', 'text': 'i Phone'}\r\n    # {'lang': 'zh', 'text': ' 15\u7cfb\u5217\u673a\u578b\u548c\u4e09\u6b3e'}\r\n    # {'lang': 'en', 'text': 'Apple Watch'}\r\n    # {'lang': 'zh', 'text': '\u7b49\u4e00\u7cfb\u5217\u65b0\u54c1\uff0c\u8fd9\u6b21\u7684'}\r\n    # {'lang': 'en', 'text': 'i Pad Air'}\r\n    # {'lang': 'zh', 'text': '\u91c7\u7528\u4e86'}\r\n    # {'lang': 'en', 'text': 'L C D'}\r\n    # {'lang': 'zh', 'text': '\u5c4f\u5e55'}\r\n    # ===========================================================================\r\n    # \u5176\u4e2d\u82f1\u6587\u7f29\u5199\u5b57\u6bcd\u5982\u201cLCD\u201d\uff0c\u82f1\u6587\u6807\u51c6\u53d1\u97f3\u4e3a\u201cL-C-D\u201d\uff0c\r\n    # \u800c\u5728\u8bed\u97f3\u5408\u6210TTS\u9879\u76ee\u4e2d\uff0c\u4e00\u822c\u7528\u7a7a\u683c\u9694\u5f00\u5b57\u6bcd\u6765\u5355\u72ec\u53d1\u97f3\uff1a\u201cL C D\u201d\r\n```\r\n\r\n## SSML\u6807\u7b7e\uff1a\u652f\u6301\uff01\uff08\u4e2d\u6587\uff1a\u6570\u5b57/\u8d27\u5e01/\u65e5\u671f/\u65f6\u95f4\uff09  \r\n```python\r\n> \u7248\u672c\u652f\u6301\uff1a>= 0.3.5  \r\nSSML\u6807\u7b7e\u4e13\u4e3aTTS\u8bbe\u8ba1\uff08\u4f46\u5b83\u4e0d\u4f7f\u7528\u81c3\u80bf\u7684 XML \uff0c\u4f7f\u7528\u66f4\u7b80\u5355\uff09\uff1a  \r\n\u652f\u6301\u4e2d\u6587\u6570\u5b57/\u8d27\u5e01/\u65e5\u671f/\u65f6\u95f4\u3002  \r\n\r\n# \u4f7f\u7528\u793a\u4f8b\uff0c\u8bf7\u7528 SSML \u6807\u7b7e\u8fdb\u884c\u5305\u88f9\r\ntext = \"\u6700\u5927\u6570\u5b57\uff1a<number>65535</number>\" \r\n# \u6700\u5927\u6570\u5b57\uff1a\u516d\u4e94\u4e94\u4e09\u4e94\r\n\r\ntext = \"\u4f60\u7684\u6536\u5165\uff1a<currency>120000\u7f8e\u5143</currency>\" \r\n# \u4f60\u7684\u6536\u5165\uff1a\u5341\u4e8c\u4e07\u7f8e\u5143\r\n\r\ntext = \"\u7535\u8bdd\u53f7\u7801\uff1a<telephone>+8613800138000</telephone>\" \r\n# \u7535\u8bdd\u53f7\u7801\uff1a\u5e7a\u4e09\u516b\u96f6\u96f6\u5e7a\u4e09\u516b\u96f6\u96f6\u96f6\r\n\r\ntext = \"\u7248\u672c\u53f7\u7801\uff1a<number>0.3.5</number>\" \r\n# \u7248\u672c\u53f7\u7801\uff1a\u96f6\u70b9\u4e09\u70b9\u4e94\r\n\r\ntext = \"<date>\u6bcf\u592920:30</date>\u8bb0\u5f97\u6309\u65f6\u5403\u996d\u54e6\uff01\" \r\n# \u6bcf\u5929\u4e8c\u5341\u70b9\u4e09\u5341\u5206\u8bb0\u5f97\u6309\u65f6\u5403\u996d\u54e6\uff01\r\n\r\ntext = \"\u5165\u5e93\u65e5\u671f\uff1a<date>2024/08/06</date>\" \r\n# \u5165\u5e93\u65e5\u671f\uff1a\u4e8c\u96f6\u4e8c\u56db\u5e74\u516b\u6708\u516d\u65e5\r\n```\r\n\r\n## \u82f1\u6587\u62fc\u8bfb\uff1a\u652f\u6301  \r\n```python\r\nTTS\u8bed\u97f3\u5408\u6210\uff08\u82f1\u6587\u5b57\u6bcd\uff09\u5927\u5c0f\u5199\u62fc\u8bfb\u89c4\u5219\uff1a\r\n\uff081\uff09\u9700\u8981\u5355\u4e2a\u5b57\u6bcd\u53d1\u97f3\u5c31\u5927\u5199\uff0c\u6bd4\u5982\uff1aUSA\uff0cUSB\uff0cChatGPT\uff0cLCD\uff0cGPU\uff0cCEO\u3002\r\n\uff082\uff09\u5176\u5b83\u60c5\u51b5\u6b63\u5e38\u62fc\u8bfb\uff0c\u5c31\u6309\u6b63\u5e38\u62fc\u5199\u3002\u6bd4\u5982\uff1aNvidia \uff0c Cuda \u6216\u8005\u5168\u5c0f\u5199 \uff08nvidia \uff0c cuda \uff09\r\n```\r\n\r\n## \u62fc\u97f3\u4fdd\u7559\uff1a\u652f\u6301\uff08\u591a\u97f3\u5b57\uff09  \r\n> \u7248\u672c\u652f\u6301\uff1a>= 0.3.2  \r\n> \u5e38\u89c1\u9700\u6c42\uff1a\u76f4\u63a5\u4fee\u6539 TTS \u7684\u6c49\u5b57\u8bfb\u97f3\uff0c\u4fdd\u7559\u62fc\u97f3\u8f93\u5165\u3002  \r\n```python\r\n# \u5f00\u542f\u6c49\u8bed\u62fc\u97f3\u4fdd\u7559\uff0c\uff08TTS\u6807\u51c6\uff1a\u6570\u5b57\u62fc\u97f3\u683c\u5f0f\uff09\uff0c\u9ed8\u8ba4\u5173\u95ed\u3002  \r\nLangSegment.setKeepPinyin(True)  \r\n\r\n# \u6c49\u5b57\u62fc\u97f3\u6307\u5b9a\u793a\u4f8b\uff1a\u4ee5\u4e0b\u53e5\u5b50\uff0c\u62ec\u53f7\u4e2d\u7684\u62fc\u97f3\uff0c\u5747\u8bc6\u522b\u4e3a\u4e2d\u6587\u3002\r\ntext = \"\u8fd9\u4e2a\u5b57\u7684\u8bfb\u97f3\u662f\u89d2(jue2)\u8272\uff0c\u800c\u4e0d\u662f\u89d2(jiao3)\u8272\"  \r\n```\r\n\r\n## \u5206\u8bcd\u7ea0\u9519\uff1a\u5f88\u91cd\u8981\uff01\r\n>\u7efc\u4e0a\u6240\u8ff0\uff0c\u201c\u81ea\u52a8\u5206\u8bcd\u201d\u5df2\u7ecf\u6781\u5927\u7684\u63d0\u9ad8\u4e86\u6211\u4eec\u7684\u5de5\u4f5c\u6548\u7387\uff0c\u4f46\u8fd8\u662f\u5efa\u8bae\u60a8\u5bf9\u5206\u8bcd\u7ed3\u679c\u8fdb\u884c\u4eba\u5de5\u6821\u5bf9\u3002    \r\n\u7279\u522b\u662f\u4e2d\u6587\u4e0e\u65e5\u6587\uff0c\u5b58\u5728\u5927\u91cf\u6c49\u5b57\u4e92\u7528\uff0c\u8fd9\u5bf9\u81ea\u52a8\u5206\u8bcd\u662f\u6781\u5177\u6311\u6218\u6027\u7684\uff0c\u201c\u5206\u8bcd\u7ea0\u9519\u201d \u89e3\u51b3\u65b9\u6848\u5982\u4e0b\uff1a\r\n\r\n\r\n* \uff081\uff09\u81ea\u52a8\u5206\u8bcd\u7ea0\u9519\uff1a\u5728\u4e2d\u6587\u4e0e\u65e5\u6587\u53e5\u5b50\u4e4b\u95f4\uff0c\u6253\u4e0a\u53e5\u53f7\u3002\u6765\u8f85\u52a9\u5206\u8bcd\uff08\u81ea\u52a8\u4e0a\u4e0b\u6587\u5206\u8bcd\uff09\u3002   \r\n* \uff082\uff09\u624b\u52a8\u5206\u8bcd\u7ea0\u9519\uff1a\u60a8\u53ef\u624b\u52a8\u6dfb\u52a0\u8bed\u8a00\u6807\u7b7e\\<ja\\>,\\<ko\\>,\\<zh\\>,\\<en\\>\u7b49\u6765\u8f85\u52a9\u8fdb\u884c\u5f3a\u5236\u5206\u8bcd\u3002    \r\n\r\n\u4ee5\u4e0b\u662f\u8bed\u8a00\u6807\u7b7e\u5206\u8bcd\u8be6\u7ec6\u793a\u4f8b\uff1a   \r\n```python\r\n    # \u624b\u52a8\u5206\u8bcd\u6807\u7b7e\u7684\u5e94\u7528\u793a\u4f8b\uff0c\u4f8b\u5982\u9488\u5bf9\u4e2d\u65e5\u6c49\u5b57\u6709\u91cd\u53e0\uff0c\u800c\u9700\u8981\u5728 TTS \u4e2d\u6df7\u5408\u53d1\u97f3\u7684\u60c5\u51b5\uff1a\r\n    # \u5206\u8bcd\u6807\u7b7e\u5185\u7684\u6587\u672c\u5c06\u8bc6\u522b\u6210\u65e5\u6587ja\u5185\u5bb9\uff0c\u4e5f\u53ef\u4ee5\u5199\u6210<ja>\u5185\u5bb9</ja>\r\n    text = \"\u4f60\u7684\u540d\u5b57\u53eb<ja>\u4f50\u3005\u6728\uff1f<ja>\"  \r\n    # \u6216\u8005\uff1a\r\n    text = \"\u4f60\u7684\u540d\u5b57\u53eb<ja>\u4f50\u3005\u6728\uff1f</ja>\"  \r\n    # \u4ee5\u4e0a\u5747\u80fd\u6b63\u786e\u8f93\u51fa\uff1a\r\n    # \u5904\u7406\u6210\u4e2d\u6587-- {'lang': 'zh', 'text': '\u4f60\u7684\u540d\u5b57\u53eb'}\r\n    # \u5904\u7406\u6210\u65e5\u6587-- {'lang': 'ja', 'text': '\u4f50\u3005\u6728\uff1f'}\r\n```\r\n\u81ea\u52a8\u5206\u8bcd\u80fd\u529b\u76ee\u524d\u4e3b\u8981\u9488\u5bf9\u4e2d\u6587(zh)/\u65e5\u6587(ja)/\u82f1\u6587(en)/\u97e9\u6587(ko)\uff0c\u8fdb\u884c\u4e86\u7279\u522b\u4f18\u5316\u3002  \r\n\u5b83\u7279\u522b\u9002\u5408\u5404\u79cd TTS \u524d\u7aef\u6587\u672c\u591a\u8bed\u79cd\u5185\u5bb9\u7684\u6df7\u5408\u5206\u8bcd\uff08\u81ea\u52a8/\u624b\u52a8\uff09\uff0c\u8bad\u7ec3\u548c\u63a8\u7406\u4f7f\u7528\u3002  \r\n\r\n```python\r\n    # \u624b\u52a8\u5206\u8bcd\u6807\u7b7e\u89c4\u8303\uff1a<\u8bed\u8a00\u6807\u7b7e>\u6587\u672c\u5185\u5bb9</\u8bed\u8a00\u6807\u7b7e>\r\n    # ===========================================================================\r\n    # \u5982\u9700\u624b\u52a8\u6807\u6ce8\uff0c\u6807\u7b7e\u9700\u8981\u6210\u5bf9\u51fa\u73b0\uff0c\u5982\uff1a\u201c<ja>\u4f50\u3005\u6728<ja>\u201d  \u6216\u8005  \u201c<ja>\u4f50\u3005\u6728</ja>\u201d\r\n    # \u9519\u8bef\u793a\u8303\uff1a\u201c\u4f60\u7684\u540d\u5b57\u53eb<ja>\u4f50\u3005\u6728\u3002\u201d \u6b64\u53e5\u5b50\u4e2d\u51fa\u73b0\u7684\u5355\u4e2a<ja>\u6807\u7b7e\u5c06\u88ab\u5ffd\u7565\uff0c\u4e0d\u4f1a\u5904\u7406\u3002\r\n    # ===========================================================================\r\n```  \r\n\r\n## \u8bed\u8a00\u8fc7\u6ee4\uff1a\u652f\u6301\r\n> \u7248\u672c\u652f\u6301\uff1a>=0.2.0   \r\n\u8bed\u8a00\u8fc7\u6ee4\u7ec4\u529f\u80fd, \u53ef\u4ee5\u6307\u5b9a\u4fdd\u7559\u8bed\u8a00\u3002\u4e0d\u5728\u8fc7\u6ee4\u7ec4\u4e2d\u7684\u8bed\u8a00\u5c06\u88ab\u6e05\u9664\u3002\u60a8\u53ef\u968f\u5fc3\u642d\u914dTTS\u8bed\u97f3\u5408\u6210\u6240\u652f\u6301\u7684\u8bed\u8a00\u3002  \r\n```python\r\n# Set language filters\r\n# \u8bbe\u7f6e\u8bed\u8a00\u8fc7\u6ee4\u529f\u80fd\uff0c\u672a\u6307\u5b9a\u7684\u8bed\u8a00\u5c06\u88ab\u6e05\u9664\uff0c\u4f7f\u5b83\u5b8c\u5168\u9002\u914d\u60a8\u7684TTS\u9879\u76ee\u3002\r\nLangSegment.setfilters([\"zh\", \"en\", \"ja\", \"ko\"]) # \u6807\u51c6\u5199\u6cd5\r\n# \u6216\u8005\u5199\u6210\uff1a\r\n# LangSegment.setfilters([\"zh_en_ja_ko\"]) # \u5199\u6cd51\uff0c\u8fc7\u6ee4\u6548\u679c\u76f8\u540c\r\n# LangSegment.setfilters([\"zh-en-ja-ko\"]) # \u5199\u6cd52\uff0c\u8fc7\u6ee4\u6548\u679c\u76f8\u540c\r\n# \u83b7\u53d6\u8fc7\u6ee4\u5668\uff1a\r\n# LangSegment.getfilters()\r\n\r\n# \u53c2\u6570\u7ec4\u5408\u8bf4\u660e\uff0c\u4ee5\u4e0b\u662f\u90e8\u4efd\u573a\u666f\u793a\u4f8b\uff1a\r\n# [\"zh\"]        # \u6309\u4e2d\u6587\u8bc6\u522b\r\n# [\"en\"]        # \u6309\u82f1\u6587\u8bc6\u522b\r\n# [\"ja\"]        # \u6309\u65e5\u6587\u8bc6\u522b\r\n# [\"ko\"]        # \u6309\u97e9\u6587\u8bc6\u522b\r\n# [\"zh_ja\"]     # \u4e2d\u65e5\u6df7\u5408\u8bc6\u522b\r\n# [\"zh_en\"]     # \u4e2d\u82f1\u6df7\u5408\u8bc6\u522b\r\n# [\"zh_ko\"]     # \u4e2d\u97e9\u6df7\u5408\u8bc6\u522b\r\n# [\"ja_en\"]     # \u65e5\u82f1\u6df7\u5408\u8bc6\u522b\r\n# [\"zh_ko_en\"]  # \u4e2d\u97e9\u82f1\u6df7\u5408\u8bc6\u522b\r\n# \u4ee5\u4e0a\u662f\u793a\u4f8b\uff0c\u60a8\u53ef\u6839\u636e\u81ea\u5df1\u7684TTS\u9879\u76ee\u8fdb\u884c\u81ea\u7531\u7ec4\u5408\u3002\r\n```  \r\n## \u8bed\u8a00\u4f18\u5148\u7ea7\uff1a\u652f\u6301\uff08\u7eaf\u6570\u5b57\u8f93\u5165\u793a\u4f8b\uff09\r\n> \u7248\u672c\u652f\u6301\uff1a>=0.2.1   \r\n\u5f53\u6211\u4eec\u5728\u9274\u522b\u7eaf\u6570\u5b57\u65f6\uff0c\u6bd4\u5982\u201c123456\u201d\uff0c\u5168\u7403\u901a\u7528\u3002\u5982\u679c\u6ca1\u6709\u63d0\u4f9b\u4e0a\u4e0b\u6587\uff0c\u5c06\u65e0\u6cd5\u533a\u5206\u5f52\u5c5e\uff08\u9ed8\u8ba4en\uff09\u3002  \r\n\u8fd9\u65f6\u5019\uff0c\u60a8\u53ea\u9700\u8c03\u6574\u8bed\u8a00\u4f18\u5148\u7ea7\u3002\u5c31\u80fd\u51c6\u786e\u8bc6\u522b\u3002\u76f8\u5173\u793a\u4f8b\u5982\u4e0b\uff1a\r\n\r\n```python\r\n# \u4ec5\u8f93\u5165\u72ec\u7acb\u7eaf\u6570\u5b57\uff1a\u6240\u6709\u56fd\u5bb6\u901a\u7528\uff0c\u56e0\u4e3a\u6ca1\u6709\u63d0\u4f9b\u4e0a\u4e0b\u6587\uff0c\u6240\u4ee5\u65e0\u6cd5\u533a\u5206\u8bed\u8a00\u5f52\u5c5e\r\nprint(LangSegment.getTexts(\"123456789\")) # \u56fd\u9645\u7eaf\u6570\u5b57\uff0c\u9ed8\u8ba4\u8f93\u51fa\uff1a\u82f1\u6587=en\r\n\r\n# \u8c03\u6574\u8fc7\u6ee4\u8bed\u8a00\u4f18\u5148\u7ea7\uff0c\u4e2d\u6587\u4f18\u5148\uff0c\u6570\u5b57\u6309\u4e2d\u6587\u4f18\u5148\u8bc6\u522b\r\nLangSegment.setfilters([\"zh\",\"ja\"])\r\nprint(LangSegment.getTexts(\"123456789\")) # \u8bc6\u522b\u8f93\u51fa\uff1a\u4e2d\u6587=zh\r\n\r\n# \u8c03\u6574\u8fc7\u6ee4\u8bed\u8a00\u4f18\u5148\u7ea7\uff0c\u65e5\u8bed\u4f18\u5148\uff0c\u6570\u5b57\u6309\u65e5\u8bed\u4f18\u5148\u8bc6\u522b\r\nLangSegment.setfilters([\"ja\",\"zh\"])\r\nprint(LangSegment.getTexts(\"123456789\")) # \u8bc6\u522b\u8f93\u51fa\uff1a\u65e5\u6587=ja\r\n\r\n# \u8c03\u6574\u8fc7\u6ee4\u8bed\u8a00\u4f18\u5148\u7ea7\uff0c\u97e9\u8bed\u4f18\u5148\uff0c\u6570\u5b57\u6309\u97e9\u8bed\u4f18\u5148\u8bc6\u522b\r\nLangSegment.setfilters([\"ko\",\"zh\"])\r\nprint(LangSegment.getTexts(\"123456789\")) # \u8bc6\u522b\u8f93\u51fa\uff1a\u97e9\u6587=ko  \r\n\r\n# \u8bc6\u522b\u8f93\u51fa\uff1a\u4e2d\u6587\uff0c\uff08\u56e0\u4e3a\u63d0\u4f9b\u4e86\u4e0a\u4e0b\u6587\uff0c\u6c49\u5b57\u201c\u7f16\u53f7\uff1a\u201d\uff09\r\nLangSegment.setfilters([\"ko\",\"zh\",\"en\",\"ja\"])\r\nprint(LangSegment.getTexts(\"\u7f16\u53f7\uff1a123456789\"))  # \u63d0\u4f9b\u4e0a\u4e0b\u6587\uff0c\u8bc6\u522b\u8f93\u51fa\uff1a\u4e2d\u6587=zh  \r\nprint(LangSegment.getTexts(\"Number\uff1a123456789\"))  # \u63d0\u4f9b\u4e0a\u4e0b\u6587\uff0c\u8bc6\u522b\u8f93\u51fa\uff1a\u82f1\u6587=en  \r\nprint(LangSegment.getTexts(\"\ubc88\ud638\uff1a123456789\"))  # \u63d0\u4f9b\u4e0a\u4e0b\u6587\uff0c\u8bc6\u522b\u8f93\u51fa\uff1a\u97e9\u6587=ko  \r\n```   \r\n## \u4f18\u5148\u7ea7\u4e0e\u7f6e\u4fe1\u5ea6\uff1a\u7279\u6b8a\u793a\u4f8b\r\n> \u7248\u672c\u652f\u6301\uff1a>=0.2.1   \r\n\u8bed\u8a00\u4f18\u5148\u7ea7\u9664\u4e86\u5bf9\u8f93\u5165\u7684\u7eaf\u6570\u5b57\u5916\uff0c\u5b83\u5bf9\u4e2d\u6587\u4e0e\u65e5\u6587\u4e5f\u7279\u522b\u6709\u7528\uff0c\u4ee5\u4e0b\u662f\u4f7f\u7528\u793a\u4f8b\uff1a   \r\n\r\n* \u793a\u4f8b\u6c49\u5b57\u8bcd\uff1a\u201c\u756a\u53f7\u201d\uff0c\u7531\u4e8e\u5728\u4e2d\u6587\u548c\u65e5\u8bed\uff0c\u4e24\u8005\u4f7f\u7528\u51e0\u4e4e\u5b8c\u5168\u4e00\u6837\uff0c\u5728\u4e2d\u65e5\u6df7\u5408\u6a21\u5f0f\u4e0b\u3002   \r\n```python\r\n# \u5728\u4e2d\u65e5\u6df7\u5408\u4e0b\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e3a\u4e2d\u6587\u4f18\u5148\u3002\r\nLangSegment.setfilters([\"zh\",\"ja\",\"en\",\"ko\"])\r\n# \u9ed8\u8ba4\u5904\u7406\uff1a\r\nprint(LangSegment.getTexts(\"\u756a\u53f7: 123456789\"))  \r\n# [{'lang': 'zh', 'text': '\u756a\u53f7: 123456789 ', 'score': 0.87188566}]\r\n# \u9ed8\u8ba4\u8bc6\u522b\uff1a\u4e2d\u6587=zh \uff0c\u8bc6\u522b\u7684\u53c2\u8003\u7f6e\u4fe1\u5ea6\u662f\uff1a0.87\r\n``` \r\n* \u800c\u6b64\u65f6\uff0c\u5728\u4e2d\u65e5\u6df7\u5408\u6a21\u5f0f\u4e0b\uff0c\u6211\u4eec\u5e0c\u671b\u5b83\u8bc6\u522b\u6210\uff1a\u65e5\u8bed=ja\u3002 \r\n```python\r\n# \u53ea\u9700\u6309\u5982\u4e0b\u8c03\u6574\u8fc7\u6ee4\u5668\u7684\u8bed\u8a00\u4f18\u5148\u7ea7\u3002\u8ba9 ja \u4f18\u5148\u4e8e zh \u4e4b\u524d\u3002\r\nLangSegment.setfilters([\"ja\",\"zh\",\"en\",\"ko\"])\r\n# \u518d\u6b21\u5904\u7406\uff1a\r\nprint(LangSegment.getTexts(\"\u756a\u53f7: 123456789\"))  \r\n# [{'lang': 'ja', 'text': '\u756a\u53f7: 123456789 ', 'score': 0.87188566}]\r\n# \u9600\u503c\u7684\u7cbe\u51c6\u63a7\u5236\u4e0b\uff0c\u5b83\u88ab\u4f18\u5148\u8bc6\u522b\u4e3a\u6211\u4eec\u5e0c\u671b\u7684\u7ed3\u679c\uff1a\u65e5\u6587=ja  \r\n\r\n# \u60a8\u8fd8\u53ef\u4ee5\u6dfb\u52a0\u8bed\u8a00\u6807\u7b7e\uff1a\u7cbe\u51c6\u63a7\u5236\r\nprint(LangSegment.getTexts(\"<ja>\u756a\u53f7: 123456789</ja>\")) \r\n# \u6dfb\u52a0\u8bed\u8a00\u6807\u7b7e\uff0c\u6b63\u786e\u8f93\u51fa\uff1a\u65e5\u6587=ja\r\n```   \r\n\r\n## \u9884\u89c8\u65b0\u589e\uff1a\u6cd5\u8bed(French)/\u8d8a\u5357\u8bed(Vietnamese)/\u4fc4\u8bed(Russian)/\u6cf0\u8bed(Thai)\r\n> \u7248\u672c\u652f\u6301\uff1a>=0.2.2 (\u6cd5\u8bed(French)/\u8d8a\u5357\u8bed(Vietnamese))  \r\n> \u7248\u672c\u652f\u6301\uff1a>=0.2.3 (\u4fc4\u8bed(Russian)/\u6cf0\u8bed(Thai))  \r\n> \u6cd5\u8bed\u548c\u8d8a\u5357\u8bed\uff0c\u60a8\u53ea\u9700\u5728\u8bed\u8a00\u8fc7\u6ee4\u5668\u4e2d\u6dfb\u52a0\uff0c\u5373\u53ef\u914d\u5408\u5206\u8bcd\u6807\u7b7e\u4f7f\u7528\u3002\r\n\r\n```python\r\n# \u81ea\u52a8\u5206\u8bcd\u542f\u7528\u8bbe\u7f6e\uff1a\u6cd5\u8bed=\"fr\" , \u8d8a\u5357\u8bed=\"vi\", \"ru\"\u4fc4\u8bed=Russian, \"th\"\u6cf0\u8bed=Thai\r\nLangSegment.setfilters([\"fr\", \"vi\" , \"zh\", \"ja\", \"ko\", \"en\"])\r\n\r\n# \u53ef\u4ee5\u968f\u610f\u642d\u914d\uff0c\u6bd4\u5982\u60a8\u7684TTS\u53ea\u9700\uff08\u8d8a\u5357\u8bed/\u4e2d\u6587\uff09\uff0c\u5219\u4ec5\u9700\u4fdd\u7559\u4e24\u4e2a\u8bed\u8a00\u3002\r\n# LangSegment.setfilters([\"vi\" , \"zh\"])\r\n\r\n# \u5bf9\u5e94\u7684\uff08\u6cd5\u8bedfr\u548c\u8d8a\u5357\u8bedvi\uff09\u624b\u52a8\u5206\u8bcd\u8bed\u8a00\u6807\u7b7e\uff1a\r\n# <fr>Fran\u00e7ais</fr>\u3001<vi>Ti\u1ebfng Vi\u1ec7t</vi>\r\n```  \r\n>\u6bcf\u4e2a\u8bed\u79cd\u5b83\u4eec\u5bf9\u5e94\u7684\u8bed\u8a00\u5206\u8bcd\u6807\u7b7e\uff1a (ISO 639-1 codes given)\uff1a\r\n>* \\<zh\\>\uff1a\u4e2d\u6587 = Chinese  \r\n>* \\<en\\>\uff1a\u82f1\u8bed = English  \r\n>* \\<ja\\>\uff1a\u65e5\u8bed = Japanese  \r\n>* \\<ko\\>\uff1a\u97e9\u8bed = Korean  \r\n>* \\<fr\\>\uff1a\u6cd5\u8bed = French  \r\n>* \\<vi\\>\uff1a\u8d8a\u5357\u8bed = Vietnamese  \r\n>* \\<ru\\>\uff1a\u4fc4\u8bed = Russian  \r\n>* \\<th\\>\uff1a\u6cf0\u8bed = Thai     \r\n>* \u66f4\u591a\u5176\u5b8397\u4e2a\u8bed\u79cd\u6807\u7b7e\uff0c\u5728\u4e0b\u65b9\u5b8c\u6574\u5217\u8868\u5df2\u7ecf\u5217\u51fa\u3002    \r\n\r\n\r\n## \u603b\u7ed3\u8bf4\u660e\uff1a  \r\n\u5b83\u7ecf\u8fc7\u4e86\u9ad8\u8fbe 97 \u79cd\u8bed\u8a00\u7684\u9884\u8bad\u7ec3\uff0c\u76f8\u4fe1\u5b83\u7edd\u5bf9\u80fd\u6ee1\u8db3\u60a8\u7684 TTS \u8bed\u97f3\u5408\u6210\u9879\u76ee\u6240\u9700\u3002    \r\ncomes pre-trained on 97 languages (ISO 639-1 codes given):  \r\n>af, am, an, ar, as, az, be, bg, bn, br, bs, ca, cs, cy, da, de, dz, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gl, gu, he, hi, hr, ht, hu, hy, id, is, it, ja, jv, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mk, ml, mn, mr, ms, mt, nb, ne, nl, nn, no, oc, or, pa, pl, ps, pt, qu, ro, ru, rw, se, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, ug, uk, ur, vi, vo, wa, xh, zh, zu  \r\n\r\n\r\n---\r\n---\r\n> \u5907\u6ce8\uff1a\u591a\u8bed\u79cd\u6df7\u5408\u6587\u672c\u8f6c\u8bed\u97f3\u5408\u6210\uff08TTS\uff09\uff0c\u4e2d/\u65e5/\u82f1/\u97e9/\u5df2\u5b8c\u6210\u6d4b\u8bd5\u3002  \r\n\u5176\u5b83\u8bed\u79cd\u672a\u4f5c\u5177\u4f53\u6d4b\u8bd5\uff0c\u5982\u6709Bug\u548c\u4f18\u5316\u5efa\u8bae\uff0c\u6b22\u8fce\u63d0\u51fa\u6216\u6307\u6b63\uff0c\u611f\u8c22~\u3002  \r\nNote: The speech synthesis test content is currently mainly for four categories: Chinese, Japanese, English and Korean.     \r\nOther languages have not been specifically tested. If there are any bugs or optimization suggestions, please feel free to raise them or correct them. Thank you~  \r\nSpecial thanks to the following projects: [py3langid](https://github.com/adbar/py3langid)\r\n---\r\n---\r\n",
    "bugtrack_url": null,
    "license": "BSD",
    "summary": "This is a multilingual tokenization tool that currently supports for zh/ja/en/ko, and more languages.",
    "version": "0.3.5",
    "project_urls": {
        "Homepage": "https://github.com/juntaosun/LangSegment"
    },
    "split_keywords": [
        "language detection",
        " language identification",
        " langid",
        " langid.py",
        " nlp",
        " language"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eb26b2105119247c7237108fed65860d43466a6eb6e9fc1684c331472c981477",
                "md5": "0ef5a984dca48768588708e13c37f634",
                "sha256": "769b377f1b042f4d468b0ee15ea1e5ad569dd956b35a78c0afd7e7edf5fe464d"
            },
            "downloads": -1,
            "filename": "LangSegment-0.3.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0ef5a984dca48768588708e13c37f634",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 28039,
            "upload_time": "2024-08-20T09:54:55",
            "upload_time_iso_8601": "2024-08-20T09:54:55.853886Z",
            "url": "https://files.pythonhosted.org/packages/eb/26/b2105119247c7237108fed65860d43466a6eb6e9fc1684c331472c981477/LangSegment-0.3.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-20 09:54:55",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "juntaosun",
    "github_project": "LangSegment",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "langsegment"
}
        
Elapsed time: 1.69024s