news 2026/5/15 10:39:31

Qwen3-TTS-Tokenizer-12Hz与Dify平台集成:快速构建语音生成应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qwen3-TTS-Tokenizer-12Hz与Dify平台集成:快速构建语音生成应用

Qwen3-TTS-Tokenizer-12Hz与Dify平台集成:快速构建语音生成应用

最近在捣鼓语音生成应用,发现了一个挺有意思的组合:Qwen3-TTS-Tokenizer-12Hz和Dify平台。Qwen3-TTS是阿里云开源的一个多语言语音生成模型,而Dify则是一个低代码的AI应用开发平台。把这两个东西结合起来,你就能在很短的时间里搭建出一个功能完整的语音生成应用,不管是做语音助手、有声书制作,还是给视频配音,都特别方便。

我花了两天时间把整个流程跑了一遍,发现比想象中简单多了。以前要搞语音生成,得自己搭环境、写API、处理音频流,现在有了Dify这个平台,很多繁琐的步骤都省了。这篇文章我就来分享一下具体的集成步骤,从环境准备到实际部署,一步步带你走完整个流程。

1. 环境准备与模型理解

在开始集成之前,我们先简单了解一下要用到的两个核心组件。这样后面操作起来心里更有底。

1.1 Qwen3-TTS-Tokenizer-12Hz是什么

Qwen3-TTS-Tokenizer-12Hz是Qwen3-TTS模型家族中的一个关键组件。你可以把它理解成一个“语音编码器”,它的主要任务是把语音信号转换成计算机能理解的数字代码,然后再把这些代码还原成语音。

这个模型有几个特别实用的特点:

超低延迟:它支持流式生成,也就是说,你输入文字后几乎不用等,马上就能听到生成的语音。官方数据显示端到端延迟只有97毫秒,这个速度对于实时对话场景来说完全够用了。

多语言支持:支持中文、英文、日语、韩语等10种主流语言,还能处理一些方言,比如四川话、北京话。

语音克隆能力强:只需要3秒钟的参考音频,就能克隆出一个人的声音特征,然后用这个声音来生成新的语音。

自然语言控制:你可以用大白话来描述想要的声音效果,比如“用兴奋的语气说”、“小声一点”、“带点悲伤的感觉”,模型都能理解并生成对应的语音。

1.2 Dify平台能帮我们做什么

Dify是一个可视化的AI应用开发平台,你可以把它想象成一个“乐高积木”式的工具。它把AI应用开发中那些重复性的工作都封装好了,比如:

  • 模型管理:统一管理各种AI模型,不用每个项目都重新配置
  • 工作流编排:用拖拽的方式设计AI处理流程
  • API自动生成:配置好逻辑后,自动生成可调用的API接口
  • 应用部署:一键部署到云端或本地服务器

对于我们这个语音生成应用来说,Dify最大的价值就是省去了大量的后端开发工作。我们只需要关注业务逻辑,不用操心API设计、服务部署这些技术细节。

1.3 需要准备什么

在开始之前,确保你的环境满足以下要求:

硬件要求

  • GPU显存至少8GB(推荐12GB以上)
  • 内存16GB以上
  • 硬盘空间50GB以上(用于存放模型和生成的文件)

软件环境

  • Python 3.8或更高版本
  • CUDA 11.8或更高版本(如果使用GPU)
  • Docker(可选,但推荐使用)

网络要求

  • 稳定的网络连接(下载模型文件需要一定时间)
  • 如果部署在公网,需要备案的域名或IP

如果你没有GPU,也可以用CPU运行,不过生成速度会慢很多。对于测试和开发来说,CPU也能用,但生产环境还是建议用GPU。

2. Dify平台部署与配置

我们先从Dify平台的部署开始。Dify提供了多种部署方式,这里我推荐用Docker Compose,这是最简单也最不容易出错的方法。

2.1 快速部署Dify

首先,在你的服务器或本地电脑上创建一个工作目录:

mkdir dify-tts-app cd dify-tts-app

然后下载Dify的Docker Compose配置文件:

curl -O https://raw.githubusercontent.com/langgenius/dify/main/docker/docker-compose.yaml curl -O https://raw.githubusercontent.com/langgenius/dify/main/docker/.env.example -o .env

编辑.env文件,设置一些基本配置:

# 打开.env文件,修改以下配置 DB_PASSWORD=your_secure_password_here # 设置一个安全的数据库密码 SECRET_KEY=your_secret_key_here # 设置一个随机的密钥

现在启动Dify服务:

docker-compose up -d

这个命令会在后台启动Dify的所有服务。第一次运行需要下载Docker镜像,可能会花几分钟时间。等所有服务都启动后,在浏览器中打开http://localhost:3000(如果你在服务器上部署,就用服务器的IP地址)。

你会看到Dify的登录页面。第一次使用需要注册一个管理员账号。

2.2 配置模型供应商

登录Dify后,点击左侧菜单的“模型供应商”,我们需要在这里添加Qwen3-TTS模型。

Dify本身不直接支持Qwen3-TTS,但我们可以通过“自定义模型”的方式来集成。点击“添加模型供应商”,选择“自定义模型”。

在配置页面中,填写以下信息:

  • 供应商名称:Qwen3-TTS(可以自己起个名字)
  • 模型类型:选择“文本转语音”
  • API端点:这里需要填写我们后面要部署的Qwen3-TTS服务的地址,比如http://localhost:8000

暂时先保存这个配置,等我们部署好Qwen3-TTS服务后再回来完善。

2.3 创建第一个应用

在Dify中,每个AI功能都是一个独立的“应用”。我们先创建一个简单的语音生成应用来熟悉一下流程。

点击“创建应用”,选择“空白应用”,给应用起个名字,比如“语音生成助手”。

进入应用编辑界面后,你会看到一个可视化的工作流编辑器。Dify的工作流由一个个“节点”组成,每个节点完成一个特定的任务,节点之间用连线连接起来。

对于语音生成应用,我们至少需要两个节点:

  1. 文本输入节点:接收用户输入的文字
  2. 模型调用节点:调用Qwen3-TTS生成语音

我们先搭建一个最简单的流程,后面再慢慢完善。

3. Qwen3-TTS服务部署

现在我们来部署Qwen3-TTS服务。Qwen3-TTS提供了多种部署方式,这里我推荐使用官方提供的Docker镜像,这是最省事的方法。

3.1 使用Docker快速部署

Qwen3-TTS在Hugging Face上提供了预构建的Docker镜像,我们可以直接拉取使用:

# 拉取Qwen3-TTS的Docker镜像 docker pull qwenvllm/qwen3-tts:latest # 运行容器 docker run -d \ --name qwen3-tts \ --gpus all \ -p 8000:8000 \ -v /path/to/your/models:/app/models \ qwenvllm/qwen3-tts:latest \ python -m qwen_serve \ --model-path Qwen/Qwen3-TTS-12Hz-1.7B-Base \ --port 8000

这里有几个参数需要解释一下:

  • --gpus all:使用所有可用的GPU,如果你没有GPU或者想用CPU,可以去掉这个参数
  • -p 8000:8000:把容器的8000端口映射到主机的8000端口
  • -v /path/to/your/models:/app/models:把本地的模型目录挂载到容器里,这样下载的模型可以重复使用

第一次运行会下载模型文件,1.7B的模型大概有3-4GB,需要一些时间。下载完成后,服务就启动了。

3.2 验证服务是否正常

服务启动后,我们可以用curl命令测试一下:

curl -X POST http://localhost:8000/v1/audio/speech \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen/Qwen3-TTS-12Hz-1.7B-Base", "input": "你好,这是一个测试语音。", "voice": "alloy", "response_format": "mp3" }' \ --output test.mp3

如果一切正常,你会得到一个名为test.mp3的音频文件,用播放器打开应该能听到“你好,这是一个测试语音。”

3.3 配置流式生成(可选)

如果你需要实时语音生成功能,比如用于语音对话,可以启用流式生成模式。修改Docker启动命令:

docker run -d \ --name qwen3-tts-stream \ --gpus all \ -p 8001:8000 \ qwenvllm/qwen3-tts:latest \ python -m qwen_serve \ --model-path Qwen/Qwen3-TTS-12Hz-1.7B-Base \ --port 8000 \ --streaming

流式生成模式下,API会返回一个音频流,而不是完整的音频文件。这对于实时应用来说很重要,可以减少用户等待时间。

4. 在Dify中集成Qwen3-TTS

现在Qwen3-TTS服务已经跑起来了,我们回到Dify平台,完成集成工作。

4.1 完善模型供应商配置

回到Dify的“模型供应商”页面,找到之前创建的Qwen3-TTS配置,点击编辑。

现在我们需要填写API的详细信息:

  • API密钥:Qwen3-TTS的开源版本不需要API密钥,可以留空或填写任意字符
  • API端点:填写http://你的服务器IP:8000/v1(如果是本地部署就是http://localhost:8000/v1
  • 模型列表:点击“获取模型列表”,Dify会自动从API端点获取可用的模型

保存配置后,Dify就能识别Qwen3-TTS模型了。

4.2 创建工作流

现在我们来创建一个完整的语音生成工作流。点击之前创建的“语音生成助手”应用,进入工作流编辑器。

第一步:添加开始节点从左侧拖拽一个“开始”节点到画布上。这个节点代表工作流的起点。

第二步:添加文本输入节点拖拽一个“文本输入”节点,连接到开始节点。在这个节点中配置:

  • 变量名:input_text
  • 标签:请输入要转换的文字
  • 默认值:可以留空,或者写一个示例文本

第三步:添加模型调用节点这是最关键的一步。拖拽一个“LLM”节点到画布上,连接到文本输入节点。

在LLM节点的配置中:

  1. 选择模型供应商:选择我们刚才配置的“Qwen3-TTS”
  2. 选择模型:选择“Qwen/Qwen3-TTS-12Hz-1.7B-Base”
  3. 系统提示词:这里可以写一些控制语音生成的指令,比如:
    请用自然、清晰的语音朗读用户输入的文字。如果是中文,请使用标准普通话;如果是英文,请使用美式发音。
  4. 用户输入:选择{{input_text}},这样就会把用户输入的文字传给模型

第四步:添加输出节点拖拽一个“文本输出”节点,连接到LLM节点。在输出节点中,我们可以配置返回给用户的内容。

因为Qwen3-TTS生成的是音频,我们需要特殊处理一下。在输出节点的配置中:

  • 输出类型:选择“文件”
  • 输出内容:选择{{#LLM节点.output}}(这里的“LLM节点”是你给模型调用节点起的名字)

第五步:保存并测试点击右上角的“保存”按钮,然后点击“发布”。发布后,应用就有一个可访问的API地址了。

点击“测试”按钮,在输入框中输入一段文字,比如“今天天气真好,适合出去散步。”,然后点击运行。如果一切正常,你应该能看到一个音频文件的链接,点击可以播放生成的语音。

4.3 添加语音克隆功能

基础的语音生成功能已经实现了,现在我们添加一个更高级的功能:语音克隆。这样用户可以用自己的声音来生成语音。

修改工作流

  1. 在文本输入节点后面,添加一个“文件上传”节点,让用户可以上传参考音频
  2. 在模型调用节点中,修改系统提示词,加入语音克隆的指令:
如果用户上传了参考音频,请用那个音频中的声音来生成语音。 如果没有上传参考音频,请使用默认的清晰、自然的语音。 用户输入的文字是:{{input_text}}

对应的API调用代码: 在实际调用时,我们需要把参考音频也传给Qwen3-TTS服务。修改模型调用节点的配置,添加一个“额外参数”:

{ "voice": "{{#如果用户上传了文件,这里放文件内容}}", "language": "auto" }

这样,当用户上传了音频文件时,工作流就会使用语音克隆功能;如果没有上传,就使用默认语音。

5. 实际应用案例

现在我们的语音生成应用已经基本完成了,来看看它能用在哪些实际场景中。

5.1 案例一:有声书制作

假设你是一个内容创作者,想把写的文章变成有声书。传统方法要么自己录音,要么找专业配音,成本高、耗时长。用我们这个应用就简单多了。

工作流程

  1. 准备你的文章文本(可以是一整本书,分章节处理)
  2. 录制一段你自己的声音作为参考(30秒左右就够了)
  3. 通过API批量处理每个章节
  4. 把生成的音频文件组合成完整的有声书

批量处理代码示例

import requests import json import os # Dify应用的API地址 dify_api_url = "http://你的dify地址/v1/workflows/run" api_key = "你的dify_api_key" # 读取文章章节 chapters = [] for i in range(1, 11): # 假设有10章 with open(f"chapter_{i}.txt", "r", encoding="utf-8") as f: chapters.append(f.read()) # 上传参考音频 with open("my_voice.wav", "rb") as f: voice_data = f.read() # 批量生成语音 for i, chapter_text in enumerate(chapters, 1): payload = { "inputs": { "input_text": chapter_text, "voice_file": voice_data # 上传的参考音频 }, "response_mode": "blocking" } headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } response = requests.post(dify_api_url, json=payload, headers=headers) if response.status_code == 200: result = response.json() audio_url = result["data"]["outputs"]["audio_url"] # 下载音频文件 audio_response = requests.get(audio_url) with open(f"chapter_{i}.mp3", "wb") as f: f.write(audio_response.content) print(f"第{i}章生成完成") else: print(f"第{i}章生成失败: {response.text}")

5.2 案例二:多语言客服语音

如果你的业务需要服务不同国家的客户, multilingual语音生成就特别有用。

实现思路

  1. 创建多个工作流,每个工作流对应一种语言
  2. 根据用户选择的语言,调用对应的工作流
  3. 使用同一个声音,确保品牌一致性

Dify中的配置: 你可以创建多个“语音生成助手”应用,每个应用使用不同的系统提示词:

  • 中文应用:请用标准普通话,语速适中,语气友好
  • 英文应用:Please use American English, clear pronunciation, friendly tone
  • 日语应用:標準的な日本語で、明瞭な発音、友好的な口調でお願いします

然后在你的主应用中,根据用户选择的语言,调用对应的Dify应用API。

5.3 案例三:实时语音对话

对于需要实时交互的场景,比如语音助手、智能客服,流式生成就很重要了。

配置流式工作流

  1. 在Dify中创建一个新的工作流,专门用于流式生成
  2. 在模型调用节点中,设置“流式输出”为开启
  3. 修改输出节点,支持流式响应

前端调用示例

// 使用WebSocket连接Dify的流式API const socket = new WebSocket('ws://你的dify地址/v1/workflows/stream'); socket.onopen = () => { const message = { inputs: { input_text: "你好,我想查询今天的天气" }, response_mode: "streaming" }; socket.send(JSON.stringify(message)); }; socket.onmessage = (event) => { const data = JSON.parse(event.data); if (data.event === "audio_chunk") { // 接收到音频数据块 const audioChunk = data.data; // 实时播放音频 playAudioChunk(audioChunk); } }; // 播放音频块的函数 function playAudioChunk(chunk) { // 这里需要实现音频流的拼接和播放 // 可以使用Web Audio API }

6. 性能优化与问题解决

在实际使用中,你可能会遇到一些性能问题或错误。这里我总结了一些常见问题和解决方法。

6.1 生成速度慢怎么办

如果发现语音生成速度很慢,可以尝试以下优化:

使用更小的模型: Qwen3-TTS有1.7B和0.6B两个版本。0.6B模型虽然质量稍差一点,但生成速度快很多,对硬件要求也低。

# 部署0.6B模型 docker run -d \ --name qwen3-tts-0.6b \ --gpus all \ -p 8002:8000 \ qwenvllm/qwen3-tts:latest \ python -m qwen_serve \ --model-path Qwen/Qwen3-TTS-12Hz-0.6B-Base \ --port 8000

启用GPU加速: 确保Docker容器正确使用了GPU。可以运行以下命令检查:

docker exec qwen3-tts nvidia-smi

如果显示GPU信息,说明GPU加速已启用。

调整生成参数: 在Dify的模型调用节点中,可以调整一些参数来平衡速度和质量:

{ "temperature": 0.7, "top_p": 0.9, "max_tokens": 500, "speed": 1.0 # 语速,1.0是正常,大于1.0会加快 }

6.2 内存不足问题

如果遇到内存不足的错误,可以尝试:

减少并发请求: 在Dify的应用设置中,限制同时处理的请求数量。进入应用设置 → 高级设置,调整“最大并发数”。

使用内存优化配置: 在部署Qwen3-TTS时,可以添加内存限制参数:

docker run -d \ --name qwen3-tts \ --gpus all \ --memory="8g" \ --memory-swap="12g" \ -p 8000:8000 \ qwenvllm/qwen3-tts:latest \ python -m qwen_serve \ --model-path Qwen/Qwen3-TTS-12Hz-0.6B-Base \ --port 8000 \ --load-8bit # 使用8位量化,减少内存占用

分批处理长文本: 如果用户输入的文字很长,可以在Dify工作流中添加一个“文本分割”节点,把长文本分成多个段落,分别生成语音,然后再合并。

6.3 音频质量不佳

如果生成的语音质量不理想,可以尝试:

调整语音参数: 在系统提示词中,更详细地描述想要的语音效果:

请用清晰、自然的语音朗读,语速适中,发音准确。 如果是中文,请注意声调;如果是英文,请注意连读和重音。 语气要友好、亲切,像在和朋友聊天一样。

使用语音克隆: 如果对默认语音不满意,可以录制一段高质量的参考音频,使用语音克隆功能。

检查输入文本: 确保输入文本格式正确,没有特殊字符或乱码。可以在Dify工作流中添加一个“文本清洗”节点,预处理用户输入。

6.4 常见错误处理

错误1:模型加载失败

Error: Failed to load model

解决方法:检查模型路径是否正确,确保有足够的磁盘空间和内存。

错误2:API调用超时

TimeoutError: Request timed out

解决方法:增加Dify中的超时设置。进入模型供应商配置,调整“请求超时时间”到60秒或更长。

错误3:音频格式不支持

Error: Unsupported audio format

解决方法:确保在API调用中指定了支持的音频格式,如mp3、wav、ogg等。

错误4:语言检测错误

Error: Language detection failed

解决方法:在系统提示词中明确指定语言,或者让用户自己选择语言。

7. 部署到生产环境

当你的应用开发完成,测试也通过了,就可以考虑部署到生产环境了。这里有一些生产环境部署的建议。

7.1 安全配置

API密钥管理: 不要在代码中硬编码API密钥。Dify支持环境变量配置,可以在Docker Compose文件中设置:

version: '3' services: dify-web: image: langgenius/dify-web:latest environment: - API_KEY_SECRET=${API_KEY_SECRET} # 从.env文件读取 # ... 其他配置

.env文件

API_KEY_SECRET=your_very_long_and_random_secret_string_here

访问控制: 在Dify的应用设置中,可以配置访问权限:

  • 公开访问:任何人都可以调用
  • 需要API密钥:只有提供有效API密钥的请求会被处理
  • IP白名单:只允许特定IP地址访问

HTTPS配置: 生产环境一定要使用HTTPS。你可以:

  1. 在Dify前面加一个Nginx反向代理,配置SSL证书
  2. 使用云服务商的负载均衡器,自动处理SSL

7.2 监控与日志

启用日志: 在Docker Compose文件中,配置日志驱动和日志大小限制:

services: qwen3-tts: image: qwenvllm/qwen3-tts:latest logging: driver: "json-file" options: max-size: "10m" max-file: "3"

监控指标: Dify提供了基本的监控功能,你可以在“监控”页面查看:

  • API调用次数
  • 平均响应时间
  • 错误率
  • 资源使用情况

对于更详细的监控,可以考虑集成Prometheus和Grafana。

7.3 扩展性考虑

多实例部署: 如果预计会有大量并发请求,可以考虑部署多个Qwen3-TTS实例,用负载均衡器分发请求。

# docker-compose-scale.yaml version: '3' services: qwen3-tts-1: image: qwenvllm/qwen3-tts:latest # ... 配置 qwen3-tts-2: image: qwenvllm/qwen3-tts:latest # ... 配置 nginx: image: nginx:latest ports: - "8000:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf

数据库备份: 定期备份Dify的数据库,防止数据丢失。可以在Docker Compose中添加一个备份服务:

services: db-backup: image: postgres:latest volumes: - ./backups:/backups command: > bash -c " while true; do pg_dump -h dify-db -U postgres dify > /backups/dify-$(date +%Y%m%d-%H%M%S).sql sleep 86400 # 每天备份一次 done "

7.4 成本优化

选择合适的云服务

  • 如果流量不大,可以用按量计费的GPU实例
  • 如果流量稳定,可以用预留实例,价格更便宜
  • 考虑使用云服务商的AI推理服务,可能比自己维护更划算

缓存常用结果: 对于经常生成的语音内容,可以在Dify工作流中添加缓存节点,避免重复生成。

使用CDN加速: 如果生成的音频文件会被多次访问,可以上传到CDN,减少服务器压力。

8. 总结

把Qwen3-TTS-Tokenizer-12Hz集成到Dify平台,确实让语音生成应用的开发变得简单多了。我自己的体验是,以前要花一周时间才能搭起来的东西,现在一两天就能搞定,而且维护起来也方便。

整个流程走下来,最深的感受是Dify这种低代码平台真的能大幅提升开发效率。你不用关心底层的API设计、服务部署这些技术细节,只需要关注业务逻辑。对于中小型项目或者快速原型开发来说,这种组合特别合适。

Qwen3-TTS本身的质量也让人满意,特别是语音克隆功能,效果比我想象的要好。虽然在某些细节上可能还比不上顶级的商业服务,但对于大多数应用场景来说,已经完全够用了。而且开源的优势很明显,你可以完全控制数据,不用担心隐私问题。

如果你也想尝试语音生成应用,我建议先从简单的场景开始,比如做一个文本转语音的工具。等熟悉了整个流程,再慢慢添加更复杂的功能,比如语音克隆、多语言支持、实时流式生成等。遇到问题也不用担心,Dify和Qwen3-TTS的文档都比较详细,社区也比较活跃,大部分问题都能找到解决方案。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 17:16:56

掌握Cabana:从CAN总线调试困境到数据分析专家的5个突破点

掌握Cabana:从CAN总线调试困境到数据分析专家的5个突破点 【免费下载链接】openpilot openpilot 是一个开源的驾驶辅助系统。openpilot 为 250 多种支持的汽车品牌和型号执行自动车道居中和自适应巡航控制功能。 项目地址: https://gitcode.com/GitHub_Trending/o…

作者头像 李华
网站建设 2026/5/12 17:05:43

springboot vue3半亩菜园线上预售系统的设计与实现

目录 摘要技术栈创新点 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 摘要 该系统基于SpringBoot和Vue3技术栈,设计并实现了一个线上农产品预售平台——“半亩菜园”。平台采用前后端分离架…

作者头像 李华
网站建设 2026/5/1 15:39:35

使用LaTeX撰写cv_resnet50_face-reconstruction技术文档:科研论文格式指南

使用LaTeX撰写cv_resnet50_face-reconstruction技术文档:科研论文格式指南 写技术文档,尤其是像cv_resnet50_face-reconstruction这类前沿人脸重建模型的相关论文或报告,是每个研究者、工程师的必修课。但很多人一打开Word或者Markdown编辑器…

作者头像 李华
网站建设 2026/5/1 11:35:36

零门槛高效修复:Kindle电子书封面恢复全指南

零门槛高效修复:Kindle电子书封面恢复全指南 【免费下载链接】Fix-Kindle-Ebook-Cover A tool to fix damaged cover of Kindle ebook. 项目地址: https://gitcode.com/gh_mirrors/fi/Fix-Kindle-Ebook-Cover 你是否也曾遇到这样的困扰:精心整理的…

作者头像 李华
网站建设 2026/5/2 17:40:23

Unreal资产编辑轻量化工具:无需引擎也能高效修改UE资产文件

Unreal资产编辑轻量化工具:无需引擎也能高效修改UE资产文件 【免费下载链接】UAssetGUI A tool designed for low-level examination and modification of Unreal Engine 4 game assets by hand. 项目地址: https://gitcode.com/gh_mirrors/ua/UAssetGUI 如何…

作者头像 李华