AI文本转语音:Toucan TTS 支持 7000 多种语言的语音合成工具箱,突破性 OCR 技术:支持多种语言识别,媲美顶级云服务。
AI文本转语音:Toucan TTS 支持 7000 多种语言的语音合成工具箱
Toucan TTS是由德国斯图加特大学自然语言处理研究所(MS)精心打造的文本转语音(TTS)工具箱,它支持超过7000种语言,包括多样的方言和语言变体。这款工具箱建立在Python和PyTorch框架之上,不仅易于操作,而且功能全面,能够实现多声源语音合成、语音风格模仿以及人机交互的语音编辑。Toucan TTS适用于教育、朗读、多语言软件开发等多种应用场景。作为一个开源项目,它遵循Apache 2.0许可证,鼓励用户和开发者自由地使用和修改源代码,以满足个性化的应用需求。
功能特点
多语言语音合成
Toucan TTS 能够处理和生成超过 7000 种不同语言的语音,包括各种方言和语言变体,使其成为全球语言支持最广泛的 TTS 项目之一。
多说话人支持
该工具箱支持多说话人语音合成,允许用户选择或创建具有不同语音特征的说话人模型,实现个性化的语音输出。
人机交互编辑
Toucan TTS 提供了人机交互编辑功能,用户可以对合成的语音进行细致调整,以适应不同的应用场景,如文学朗诵或教育材料。
语音风格克隆
用户可以利用 Toucan TTS 克隆特定说话人的语音风格,包括节奏、重音和语调,使合成语音更加贴近原说话人的声音特征。
语音参数调整
Toucan TTS 允许用户调整语音的持续时间、音调变化和能量变化等参数,以控制语音的流畅度、情感表达和声音特征。
发音清晰度和性别特征调整
用户可以根据需要调整语音的清晰度和性别特征,使合成语音更加自然,并符合特定角色或场景的需求。
交互式演示
Toucan TTS 提供了在线交互式演示,用户可以通过网页界面实时体验和测试语音合成效果,帮助用户快速理解和使用工具箱的功能。
应用场景
文学朗诵
合成诗歌、文学作品、网页内容的语音,供朗诵欣赏或作为有声读物。
多语言应用开发
为需要多语言支持的应用程序提供语音合成服务,如国际化软件和游戏。
辅助技术
为视障人士或阅读困难者提供文本到语音的服务,帮助他们更好地获取信息。
客户服务
在客户服务系统中使用,提供多语言的自动语音回复或交互式语音响应系统。
新闻与媒体
自动将新闻文章转换为语音,为忙碌的听众提供便捷的新闻获取方式。
电影和视频制作
为电影、动画或视频内容生成配音,尤其是当原始音频不可用或需要特定语言版本时。
有声书制作
将电子书或文档转换为有声书,提供给偏好听书的用户。
使用与体验
非开发人员可以前往Hugging Face体验Toucan TTS的在线文本转语音和语音克隆Demo
https://huggingface.co/spaces/Flux9665/MassivelyMultilingualTTS
开发人员可以 访问其GitHub项目库,克隆其代码到本地进行部署和运行。
https://github.com/DigitalPhonetics/IMS-Toucan
突破性 OCR 技术:支持多种语言识别,媲美顶级云服务
Surya 是一个文档 OCR 工具包,其功能如下:
支持 90 多种语言的 OCR,与云服务相比更具优势
任何语言的行级文本检测
布局分析(表格、图像、标题等检测)
阅读顺序检测
https://github.com/VikParuchuri/surya
使用场景
文字识别(OCR)
文本检测(Detection)
布局分析
阅读顺序检测
快速使用
安装
您需要 Python 3.9+ 和 PyTorch。如果您使用的不是 Mac 或 GPU 机器,则可能需要先安装 CPU 版本的 torch。请参阅此处了解更多详细信息。
安装方式:
pip install surya-ocr
首次运行 Surya 时,模型权重将自动下载。请注意,该工具目前不兼容 transformers 4.37+ 版本,因此需要使用 4.36.2 版本(已随 Surya 一同安装)。
成功安装 surya-ocr 之后,你可以执行以下步骤,配置 surya 运行环境:
检查 surya/settings.py 中的设置。你可以用环境变量覆盖任何设置。
你的 torch 设备会被自动检测到,但你可以覆盖它。例如,TORCH_DEVICE=cuda。在文本检测方面,Apple 平台的 mps 设备有一个错误,可能会导致其无法正常工作。
文字识别(OCR)
文字识别模型在 4x A6000 上进行了为期 2 周的训练。训练时使用了改进的 donut 模型(GQA、MoE 层、UTF-16 解码、层配置更改)。
from PIL import Image
from surya.ocr import run_ocr
from surya.model.detection import segformer
from surya.model.recognition.model import load_model
from surya.model.recognition.processor import load_processor
image = Image.open(IMAGE_PATH)
langs = ["en"] # Replace with your languages
det_processor, det_model = segformer.load_processor(), segformer.load_model()
rec_model, rec_processor = load_model(), load_processor()
predictions = run_ocr([image], [langs], det_model, det_processor, rec_model, rec_processor)
文本行检测(Text Line Detection)
文本检测模型在 4x A6000 上进行了为期 3 天的训练。它使用一组不同的图像作为训练数据。它使用改进的 segformer 架构从头开始训练,从而降低了对推理 RAM 的要求。
from PIL import Image
from surya.detection import batch_text_detection
from surya.model.detection.segformer import load_model, load_processor
image = Image.open(IMAGE_PATH)
model, processor = load_model(), load_processor()
# predictions is a list of dicts, one per image
predictions = batch_text_detection([image], model, processor)
布局分析(Layout Analysis)
from PIL import Image
from surya.detection import batch_text_detection
from surya.layout import batch_layout_detection
from surya.model.detection.segformer import load_model, load_processor
from surya.settings import settings
image = Image.open(IMAGE_PATH)
model = load_model(checkpoint=settings.LAYOUT_MODEL_CHECKPOINT)
processor = load_processor(checkpoint=settings.LAYOUT_MODEL_CHECKPOINT)
det_model = load_model()
det_processor = load_processor()
# layout_predictions is a list of dicts, one per image
line_predictions = batch_text_detection([image], det_model, det_processor)
layout_predictions = batch_layout_detection([image], model, processor, line_predictions)
阅读顺序检测
from PIL import Image
from surya.ordering import batch_ordering
from surya.model.ordering.processor import load_processor
from surya.model.ordering.model import load_model
image = Image.open(IMAGE_PATH)
# bboxes should be a list of lists with layout bboxes for the image in [x1,y1,x2,y2] format
# You can get this from the layout model, see above for usage
bboxes = [bbox1, bbox2, ...]
model = load_model()
processor = load_processor()
# order_predictions will be a list of dicts, one per image
order_predictions = batch_ordering([image], [bboxes], model, processor)
# Benchmarks