1. 新增内置TTS工具,支持OpenAI兼容语音合成服务 2. 新增ASR音频解析和视频解析处理器 3. 扩展文件解析支持范围,添加音视频格式支持 4. 新增ffmpeg音视频处理基础工具库 5. 补充相关单元测试用例
45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
"""TTS 语音合成工具。"""
|
||
|
||
from uuid import uuid4
|
||
|
||
from yuxi.agents.toolkits.registry import tool
|
||
from yuxi.storage.minio import aupload_file_to_minio
|
||
from yuxi.agents.toolkits.buildin.tts import get_tts_provider
|
||
from yuxi.utils import logger
|
||
|
||
|
||
@tool(
|
||
category="buildin",
|
||
tags=["语音"],
|
||
display_name="语音合成",
|
||
config_guide="使用前需配置 TTS_API_KEY 环境变量",
|
||
)
|
||
async def text_to_speech(text: str, voice: str = "default") -> str:
|
||
"""
|
||
将文本转换为语音并返回音频文件 URL。
|
||
|
||
Args:
|
||
text: 要转换的文本(不超过 4096 字符)
|
||
voice: 语音类型(default / alloy / echo / fable / onyx / nova / shimmer)
|
||
|
||
Returns:
|
||
音频文件的访问 URL
|
||
"""
|
||
if len(text) > 4096:
|
||
return "错误:文本长度超过 4096 字符限制"
|
||
|
||
provider = get_tts_provider()
|
||
if not provider:
|
||
return "错误:TTS 服务未配置,请设置 TTS_API_KEY 环境变量"
|
||
|
||
try:
|
||
result = await provider.synthesize(text, voice=voice)
|
||
except Exception as e:
|
||
logger.error("TTS 合成失败: %s", e)
|
||
return f"错误:语音合成失败 — {e}"
|
||
|
||
# 存储到 MinIO
|
||
file_name = f"tts/{uuid4().hex}.mp3"
|
||
url = await aupload_file_to_minio("public", file_name, result.audio_data)
|
||
return url
|