diff --git a/.gitignore b/.gitignore
index 6c5319f..26bae61 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,16 +26,16 @@ checkpoints/
docker/models/
docker/data/
docker/.env
-qwen3-tts-frontend/node_modules/
-qwen3-tts-frontend/dist/
-qwen3-tts-frontend/.env
-qwen3-tts-frontend/.env.local
+canto-frontend/node_modules/
+canto-frontend/dist/
+canto-frontend/.env
+canto-frontend/.env.local
CLAUDE.md
样本.mp3
aliyun.md
/nginx.conf
deploy.md
-qwen3-tts-backend/scripts
-qwen3-tts-backend/examples
-qwen3-tts-backend/qwen3-tts.service
-qwen3-tts-frontend/.env.production
+canto-backend/scripts
+canto-backend/examples
+canto-backend/canto.service
+canto-frontend/.env.production
diff --git a/qwen3-tts-backend/api/__init__.py b/.gitmodules
similarity index 100%
rename from qwen3-tts-backend/api/__init__.py
rename to .gitmodules
diff --git a/README.zh.md b/README.zh.md
deleted file mode 100644
index 3ac33dd..0000000
--- a/README.zh.md
+++ /dev/null
@@ -1,348 +0,0 @@
-# Qwen3-TTS WebUI
-
-> **⚠️ 注意:** 本项目由大量 AI 生成,目前处于不稳定状态。稳定版将在 [Releases](../../releases) 中发布。
-
-**非官方** 基于 Qwen3-TTS 的文本转语音 Web 应用,支持自定义语音、语音设计和语音克隆,提供直观的 Web 界面。
-
-> 这是一个非官方项目。如需查看官方 Qwen3-TTS 仓库,请访问 [QwenLM/Qwen3-TTS](https://github.com/QwenLM/Qwen3-TTS)。
-
-[English Documentation](./README.md)
-
-## 功能特性
-
-- 自定义语音:预定义说话人语音
-- 语音设计:自然语言描述创建语音
-- 语音克隆:上传音频克隆语音
-- **IndexTTS2**:高质量语音克隆,支持情感控制(高兴、愤怒、悲伤、恐惧、惊讶等),由 [IndexTTS2](https://github.com/iszhanjiawei/indexTTS2) 驱动
-- 有声书生成:上传 EPUB 文件,通过 LLM 自动提取角色并分配语音,生成多角色有声书;支持为每个角色单独启用 IndexTTS2
-- 双后端支持:支持本地模型和阿里云 TTS API 切换
-- 多语言支持:English、简体中文、繁體中文、日本語、한국어
-- JWT 认证、异步任务、语音缓存、暗黑模式
-
-## 界面预览
-
-### 桌面端 - 亮色模式
-
-
-### 桌面端 - 暗黑模式
-
-
-### 移动端
-
-
-  |
-  |
-
-
-
-### 有声书生成
-
-
-
-
-  |
-  |
-
-
-
-## 技术栈
-
-**后端**: FastAPI + SQLAlchemy + PyTorch + JWT
-- 使用 PyTorch 直接推理 Qwen3-TTS 模型
-- 异步任务处理与批量优化
-- 支持本地模型 + 阿里云 API 双后端
-
-**前端**: React 19 + TypeScript + Vite + Tailwind + Shadcn/ui
-
-## Docker 部署
-
-预构建镜像已发布至 Docker Hub:[bdim404/qwen3-tts-backend](https://hub.docker.com/r/bdim404/qwen3-tts-backend)、[bdim404/qwen3-tts-frontend](https://hub.docker.com/r/bdim404/qwen3-tts-frontend)
-
-**前置要求**:Docker、Docker Compose、NVIDIA GPU + [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html)
-
-```bash
-git clone https://github.com/bdim404/Qwen3-TTS-WebUI.git
-cd Qwen3-TTS-webUI
-
-# 下载模型到 docker/models/(参见下方"安装部署 > 下载模型")
-mkdir -p docker/models docker/data
-
-# 配置
-cp docker/.env.example docker/.env
-# 编辑 docker/.env,设置 SECRET_KEY
-
-cd docker
-
-# 拉取预构建镜像
-docker compose pull
-
-# 启动(仅 CPU)
-docker compose up -d
-
-# 启动(GPU 加速)
-docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d
-```
-
-访问 `http://localhost`,默认账号:`admin` / `admin123456`
-
-## 安装部署
-
-### 环境要求
-
-- Python 3.9+ 并支持 CUDA(用于本地模型推理)
-- Node.js 18+(用于前端)
-- Git
-
-### 1. 克隆仓库
-
-```bash
-git clone https://github.com/bdim404/Qwen3-TTS-WebUI.git
-cd Qwen3-TTS-webUI
-```
-
-### 2. 下载模型
-
-**重要**: 模型**不会**自动下载,需要手动下载。
-
-详细信息请访问官方仓库:[Qwen3-TTS 模型](https://github.com/QwenLM/Qwen3-TTS)
-
-进入模型目录:
-```bash
-# Docker 部署
-mkdir -p docker/models && cd docker/models
-
-# 本地部署
-cd qwen3-tts-backend && mkdir -p Qwen && cd Qwen
-```
-
-**方式一:通过 ModelScope 下载(推荐中国大陆用户)**
-
-```bash
-pip install -U modelscope
-
-modelscope download --model Qwen/Qwen3-TTS-Tokenizer-12Hz --local_dir ./Qwen3-TTS-Tokenizer-12Hz
-modelscope download --model Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --local_dir ./Qwen3-TTS-12Hz-1.7B-CustomVoice
-modelscope download --model Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign --local_dir ./Qwen3-TTS-12Hz-1.7B-VoiceDesign
-modelscope download --model Qwen/Qwen3-TTS-12Hz-1.7B-Base --local_dir ./Qwen3-TTS-12Hz-1.7B-Base
-```
-
-可选的 0.6B 模型(更小、更快):
-```bash
-modelscope download --model Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice --local_dir ./Qwen3-TTS-12Hz-0.6B-CustomVoice
-modelscope download --model Qwen/Qwen3-TTS-12Hz-0.6B-Base --local_dir ./Qwen3-TTS-12Hz-0.6B-Base
-```
-
-**方式二:通过 Hugging Face 下载**
-
-```bash
-pip install -U "huggingface_hub[cli]"
-
-hf download Qwen/Qwen3-TTS-Tokenizer-12Hz --local-dir ./Qwen3-TTS-Tokenizer-12Hz
-hf download Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --local-dir ./Qwen3-TTS-12Hz-1.7B-CustomVoice
-hf download Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign --local-dir ./Qwen3-TTS-12Hz-1.7B-VoiceDesign
-hf download Qwen/Qwen3-TTS-12Hz-1.7B-Base --local-dir ./Qwen3-TTS-12Hz-1.7B-Base
-```
-
-可选的 0.6B 模型(更小、更快):
-```bash
-hf download Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice --local-dir ./Qwen3-TTS-12Hz-0.6B-CustomVoice
-hf download Qwen/Qwen3-TTS-12Hz-0.6B-Base --local-dir ./Qwen3-TTS-12Hz-0.6B-Base
-```
-
-**IndexTTS2 模型(可选,用于情感控制语音克隆)**
-
-IndexTTS2 是可选功能。如需使用,在同一 `Qwen/` 目录下运行:
-
-```bash
-# 仅下载所需文件,无需下载完整仓库
-hf download IndexTeam/IndexTTS-2 \
- bpe.model config.yaml feat1.pt feat2.pt gpt.pth s2mel.pth wav2vec2bert_stats.pt \
- --local-dir ./IndexTTS2
-```
-
-然后安装 indextts 包:
-```bash
-git clone https://github.com/iszhanjiawei/indexTTS2.git
-cd indexTTS2
-pip install -e . --no-deps
-cd ..
-```
-
-**最终目录结构:**
-
-Docker 部署(`docker/models/`):
-```
-Qwen3-TTS-webUI/
-└── docker/
- └── models/
- ├── Qwen3-TTS-Tokenizer-12Hz/
- ├── Qwen3-TTS-12Hz-1.7B-CustomVoice/
- ├── Qwen3-TTS-12Hz-1.7B-VoiceDesign/
- └── Qwen3-TTS-12Hz-1.7B-Base/
-```
-
-本地部署(`qwen3-tts-backend/Qwen/`):
-```
-Qwen3-TTS-webUI/
-└── qwen3-tts-backend/
- └── Qwen/
- ├── Qwen3-TTS-Tokenizer-12Hz/
- ├── Qwen3-TTS-12Hz-1.7B-CustomVoice/
- ├── Qwen3-TTS-12Hz-1.7B-VoiceDesign/
- ├── Qwen3-TTS-12Hz-1.7B-Base/
- └── IndexTTS2/ ← 可选,用于 IndexTTS2 功能
- ├── bpe.model
- ├── config.yaml
- ├── feat1.pt
- ├── feat2.pt
- ├── gpt.pth
- ├── s2mel.pth
- └── wav2vec2bert_stats.pt
-```
-
-### 3. 后端配置
-
-```bash
-cd qwen3-tts-backend
-
-# 创建虚拟环境
-python -m venv venv
-source venv/bin/activate # Windows: venv\Scripts\activate
-
-# 安装依赖
-pip install -r requirements.txt
-
-# 安装 Qwen3-TTS
-pip install qwen-tts
-
-# 创建配置文件
-cp .env.example .env
-
-# 编辑配置文件
-# 本地模型:设置 MODEL_BASE_PATH=./Qwen
-# 仅阿里云 API:设置 DEFAULT_BACKEND=aliyun
-nano .env # 或使用其他编辑器
-```
-
-**重要的后端配置** (`.env` 文件):
-```env
-MODEL_DEVICE=cuda:0 # 使用 GPU(或 cpu 使用 CPU)
-MODEL_BASE_PATH=./Qwen # 已下载模型的路径
-DEFAULT_BACKEND=local # 使用本地模型用 'local',API 用 'aliyun'
-DATABASE_URL=sqlite:///./qwen_tts.db
-SECRET_KEY=your-secret-key-here # 请修改此项!
-```
-
-启动后端服务:
-```bash
-# 使用 uvicorn 直接启动
-uvicorn main:app --host 0.0.0.0 --port 8000 --reload
-
-# 或使用 conda(如果你喜欢)
-conda run -n qwen3-tts uvicorn main:app --host 0.0.0.0 --port 8000 --reload
-```
-
-验证后端是否运行:
-```bash
-curl http://127.0.0.1:8000/health
-```
-
-### 4. 前端配置
-
-```bash
-cd qwen3-tts-frontend
-
-# 安装依赖
-npm install
-
-# 创建配置文件
-cp .env.example .env
-
-# 启动开发服务器
-npm run dev
-```
-
-### 5. 访问应用
-
-在浏览器中打开:`http://localhost:5173`
-
-**默认账号**:
-- 用户名:`admin`
-- 密码:`admin123456`
-- **重要**: 登录后请立即修改密码!
-
-### 生产环境部署
-
-用于生产环境:
-
-```bash
-# 后端:使用 gunicorn 或类似的 WSGI 服务器
-cd qwen3-tts-backend
-gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000
-
-# 前端:构建静态文件
-cd qwen3-tts-frontend
-npm run build
-# 使用 nginx 或其他 Web 服务器提供 'dist' 文件夹
-```
-
-## 配置
-
-### 后端配置
-
-后端 `.env` 关键配置:
-
-```env
-SECRET_KEY=your-secret-key
-MODEL_DEVICE=cuda:0
-MODEL_BASE_PATH=../Qwen
-DATABASE_URL=sqlite:///./qwen_tts.db
-
-DEFAULT_BACKEND=local
-
-ALIYUN_REGION=beijing
-ALIYUN_MODEL_FLASH=qwen3-tts-flash-realtime
-ALIYUN_MODEL_VC=qwen3-tts-vc-realtime-2026-01-15
-ALIYUN_MODEL_VD=qwen3-tts-vd-realtime-2026-01-15
-```
-
-**后端选项:**
-
-- `DEFAULT_BACKEND`: 默认 TTS 后端,可选值:`local` 或 `aliyun`
-- **本地模式**: 使用本地 Qwen3-TTS 模型(需要配置 `MODEL_BASE_PATH`)
-- **阿里云模式**: 使用阿里云 TTS API(需要用户在设置页面配置 API 密钥)
-
-**阿里云配置:**
-
-- 用户需要在 Web 界面的设置页面添加阿里云 API 密钥
-- API 密钥经过加密后安全存储在数据库中
-- 超级管理员可以控制是否为所有用户启用本地模型
-- 获取阿里云 API 密钥,请访问 [阿里云控制台](https://dashscope.console.aliyun.com/)
-
-## 使用说明
-
-### 切换后端
-
-1. 登录 Web 界面
-2. 进入设置页面
-3. 配置您偏好的后端:
- - **本地模型**:选择"本地模型"(需要超级管理员启用本地模型)
- - **阿里云 API**:选择"阿里云"并添加您的 API 密钥
-4. 选择的后端将默认用于所有 TTS 操作
-5. 也可以通过 API 的 `backend` 参数为单次请求指定不同的后端
-
-### 管理阿里云 API 密钥
-
-1. 在设置页面找到"阿里云 API 密钥"部分
-2. 输入您的阿里云 API 密钥
-3. 点击"更新密钥"保存并验证
-4. 系统会在保存前验证密钥的有效性
-5. 可随时使用删除按钮删除密钥
-
-## 特别鸣谢
-
-本项目基于阿里云 Qwen 团队开源的 [Qwen3-TTS](https://github.com/QwenLM/Qwen3-TTS) 官方仓库构建。特别感谢 Qwen 团队开源如此强大的文本转语音模型。
-
-## 许可证
-
-Apache-2.0 license
diff --git a/qwen3-tts-backend/.env.example b/canto-backend/.env.example
similarity index 100%
rename from qwen3-tts-backend/.env.example
rename to canto-backend/.env.example
diff --git a/qwen3-tts-backend/.gitignore b/canto-backend/.gitignore
similarity index 100%
rename from qwen3-tts-backend/.gitignore
rename to canto-backend/.gitignore
diff --git a/qwen3-tts-backend/core/__init__.py b/canto-backend/api/__init__.py
similarity index 100%
rename from qwen3-tts-backend/core/__init__.py
rename to canto-backend/api/__init__.py
diff --git a/qwen3-tts-backend/api/admin.py b/canto-backend/api/admin.py
similarity index 100%
rename from qwen3-tts-backend/api/admin.py
rename to canto-backend/api/admin.py
diff --git a/qwen3-tts-backend/api/audiobook.py b/canto-backend/api/audiobook.py
similarity index 100%
rename from qwen3-tts-backend/api/audiobook.py
rename to canto-backend/api/audiobook.py
diff --git a/qwen3-tts-backend/api/auth.py b/canto-backend/api/auth.py
similarity index 100%
rename from qwen3-tts-backend/api/auth.py
rename to canto-backend/api/auth.py
diff --git a/qwen3-tts-backend/api/jobs.py b/canto-backend/api/jobs.py
similarity index 100%
rename from qwen3-tts-backend/api/jobs.py
rename to canto-backend/api/jobs.py
diff --git a/qwen3-tts-backend/api/tts.py b/canto-backend/api/tts.py
similarity index 100%
rename from qwen3-tts-backend/api/tts.py
rename to canto-backend/api/tts.py
diff --git a/qwen3-tts-backend/api/users.py b/canto-backend/api/users.py
similarity index 100%
rename from qwen3-tts-backend/api/users.py
rename to canto-backend/api/users.py
diff --git a/qwen3-tts-backend/api/voice_designs.py b/canto-backend/api/voice_designs.py
similarity index 100%
rename from qwen3-tts-backend/api/voice_designs.py
rename to canto-backend/api/voice_designs.py
diff --git a/qwen3-tts-backend/config.py b/canto-backend/config.py
similarity index 100%
rename from qwen3-tts-backend/config.py
rename to canto-backend/config.py
diff --git a/qwen3-tts-backend/db/__init__.py b/canto-backend/core/__init__.py
similarity index 100%
rename from qwen3-tts-backend/db/__init__.py
rename to canto-backend/core/__init__.py
diff --git a/qwen3-tts-backend/core/audiobook_service.py b/canto-backend/core/audiobook_service.py
similarity index 100%
rename from qwen3-tts-backend/core/audiobook_service.py
rename to canto-backend/core/audiobook_service.py
diff --git a/qwen3-tts-backend/core/batch_processor.py b/canto-backend/core/batch_processor.py
similarity index 100%
rename from qwen3-tts-backend/core/batch_processor.py
rename to canto-backend/core/batch_processor.py
diff --git a/qwen3-tts-backend/core/cache_manager.py b/canto-backend/core/cache_manager.py
similarity index 100%
rename from qwen3-tts-backend/core/cache_manager.py
rename to canto-backend/core/cache_manager.py
diff --git a/qwen3-tts-backend/core/cleanup.py b/canto-backend/core/cleanup.py
similarity index 100%
rename from qwen3-tts-backend/core/cleanup.py
rename to canto-backend/core/cleanup.py
diff --git a/qwen3-tts-backend/core/config.py b/canto-backend/core/config.py
similarity index 100%
rename from qwen3-tts-backend/core/config.py
rename to canto-backend/core/config.py
diff --git a/qwen3-tts-backend/core/database.py b/canto-backend/core/database.py
similarity index 100%
rename from qwen3-tts-backend/core/database.py
rename to canto-backend/core/database.py
diff --git a/qwen3-tts-backend/core/init_admin.py b/canto-backend/core/init_admin.py
similarity index 100%
rename from qwen3-tts-backend/core/init_admin.py
rename to canto-backend/core/init_admin.py
diff --git a/qwen3-tts-backend/core/llm_service.py b/canto-backend/core/llm_service.py
similarity index 100%
rename from qwen3-tts-backend/core/llm_service.py
rename to canto-backend/core/llm_service.py
diff --git a/qwen3-tts-backend/core/metrics.py b/canto-backend/core/metrics.py
similarity index 100%
rename from qwen3-tts-backend/core/metrics.py
rename to canto-backend/core/metrics.py
diff --git a/qwen3-tts-backend/core/model_manager.py b/canto-backend/core/model_manager.py
similarity index 100%
rename from qwen3-tts-backend/core/model_manager.py
rename to canto-backend/core/model_manager.py
diff --git a/qwen3-tts-backend/core/progress_store.py b/canto-backend/core/progress_store.py
similarity index 100%
rename from qwen3-tts-backend/core/progress_store.py
rename to canto-backend/core/progress_store.py
diff --git a/qwen3-tts-backend/core/security.py b/canto-backend/core/security.py
similarity index 100%
rename from qwen3-tts-backend/core/security.py
rename to canto-backend/core/security.py
diff --git a/qwen3-tts-backend/core/tts_service.py b/canto-backend/core/tts_service.py
similarity index 100%
rename from qwen3-tts-backend/core/tts_service.py
rename to canto-backend/core/tts_service.py
diff --git a/qwen3-tts-backend/indextts/__init__.py b/canto-backend/db/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/__init__.py
rename to canto-backend/db/__init__.py
diff --git a/qwen3-tts-backend/db/crud.py b/canto-backend/db/crud.py
similarity index 100%
rename from qwen3-tts-backend/db/crud.py
rename to canto-backend/db/crud.py
diff --git a/qwen3-tts-backend/db/database.py b/canto-backend/db/database.py
similarity index 100%
rename from qwen3-tts-backend/db/database.py
rename to canto-backend/db/database.py
diff --git a/qwen3-tts-backend/db/migrate_add_local_permission.py b/canto-backend/db/migrate_add_local_permission.py
similarity index 100%
rename from qwen3-tts-backend/db/migrate_add_local_permission.py
rename to canto-backend/db/migrate_add_local_permission.py
diff --git a/qwen3-tts-backend/db/models.py b/canto-backend/db/models.py
similarity index 100%
rename from qwen3-tts-backend/db/models.py
rename to canto-backend/db/models.py
diff --git a/qwen3-tts-backend/deploy/nginx.conf b/canto-backend/deploy/nginx.conf
similarity index 87%
rename from qwen3-tts-backend/deploy/nginx.conf
rename to canto-backend/deploy/nginx.conf
index 98fd570..dd9f728 100644
--- a/qwen3-tts-backend/deploy/nginx.conf
+++ b/canto-backend/deploy/nginx.conf
@@ -1,4 +1,4 @@
-upstream qwen_tts_backend {
+upstream canto_backend {
server 127.0.0.1:8000;
}
@@ -13,7 +13,7 @@ server {
proxy_send_timeout 300s;
location / {
- proxy_pass http://qwen_tts_backend;
+ proxy_pass http://canto_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -34,20 +34,20 @@ server {
}
location /outputs/ {
- alias /opt/qwen3-tts-backend/outputs/;
+ alias /opt/canto-backend/outputs/;
autoindex off;
add_header Cache-Control "public, max-age=3600";
add_header Content-Disposition "attachment";
}
location /health {
- proxy_pass http://qwen_tts_backend/health;
+ proxy_pass http://canto_backend/health;
proxy_set_header Host $host;
access_log off;
}
location /metrics {
- proxy_pass http://qwen_tts_backend/metrics;
+ proxy_pass http://canto_backend/metrics;
proxy_set_header Host $host;
allow 127.0.0.1;
deny all;
diff --git a/qwen3-tts-backend/deploy/qwen-tts.service b/canto-backend/deploy/qwen-tts.service
similarity index 52%
rename from qwen3-tts-backend/deploy/qwen-tts.service
rename to canto-backend/deploy/qwen-tts.service
index 1996986..6ab8ed2 100644
--- a/qwen3-tts-backend/deploy/qwen-tts.service
+++ b/canto-backend/deploy/qwen-tts.service
@@ -1,15 +1,15 @@
[Unit]
-Description=Qwen3-TTS Backend API Service
+Description=Canto Backend API Service
After=network.target
[Service]
Type=simple
User=qwen-tts
Group=qwen-tts
-WorkingDirectory=/opt/qwen3-tts-backend
-Environment="PATH=/opt/conda/envs/qwen3-tts/bin:/usr/local/bin:/usr/bin:/bin"
-EnvironmentFile=/opt/qwen3-tts-backend/.env
-ExecStart=/opt/conda/envs/qwen3-tts/bin/python main.py
+WorkingDirectory=/opt/canto-backend
+Environment="PATH=/opt/conda/envs/canto/bin:/usr/local/bin:/usr/bin:/bin"
+EnvironmentFile=/opt/canto-backend/.env
+ExecStart=/opt/conda/envs/canto/bin/python main.py
Restart=on-failure
RestartSec=10s
StandardOutput=append:/var/log/qwen-tts/app.log
diff --git a/qwen3-tts-backend/indextts/gpt/__init__.py b/canto-backend/indextts/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/__init__.py
rename to canto-backend/indextts/__init__.py
diff --git a/qwen3-tts-backend/indextts/gpt/conformer/__init__.py b/canto-backend/indextts/gpt/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/conformer/__init__.py
rename to canto-backend/indextts/gpt/__init__.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/__init__.py b/canto-backend/indextts/gpt/conformer/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/__init__.py
rename to canto-backend/indextts/gpt/conformer/__init__.py
diff --git a/qwen3-tts-backend/indextts/gpt/conformer/attention.py b/canto-backend/indextts/gpt/conformer/attention.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/conformer/attention.py
rename to canto-backend/indextts/gpt/conformer/attention.py
diff --git a/qwen3-tts-backend/indextts/gpt/conformer/embedding.py b/canto-backend/indextts/gpt/conformer/embedding.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/conformer/embedding.py
rename to canto-backend/indextts/gpt/conformer/embedding.py
diff --git a/qwen3-tts-backend/indextts/gpt/conformer/subsampling.py b/canto-backend/indextts/gpt/conformer/subsampling.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/conformer/subsampling.py
rename to canto-backend/indextts/gpt/conformer/subsampling.py
diff --git a/qwen3-tts-backend/indextts/gpt/conformer_encoder.py b/canto-backend/indextts/gpt/conformer_encoder.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/conformer_encoder.py
rename to canto-backend/indextts/gpt/conformer_encoder.py
diff --git a/qwen3-tts-backend/indextts/gpt/model_v2.py b/canto-backend/indextts/gpt/model_v2.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/model_v2.py
rename to canto-backend/indextts/gpt/model_v2.py
diff --git a/qwen3-tts-backend/indextts/gpt/perceiver.py b/canto-backend/indextts/gpt/perceiver.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/perceiver.py
rename to canto-backend/indextts/gpt/perceiver.py
diff --git a/qwen3-tts-backend/indextts/gpt/transformers_generation_utils.py b/canto-backend/indextts/gpt/transformers_generation_utils.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/transformers_generation_utils.py
rename to canto-backend/indextts/gpt/transformers_generation_utils.py
diff --git a/qwen3-tts-backend/indextts/gpt/transformers_gpt2.py b/canto-backend/indextts/gpt/transformers_gpt2.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/transformers_gpt2.py
rename to canto-backend/indextts/gpt/transformers_gpt2.py
diff --git a/qwen3-tts-backend/indextts/gpt/transformers_modeling_utils.py b/canto-backend/indextts/gpt/transformers_modeling_utils.py
similarity index 100%
rename from qwen3-tts-backend/indextts/gpt/transformers_modeling_utils.py
rename to canto-backend/indextts/gpt/transformers_modeling_utils.py
diff --git a/qwen3-tts-backend/indextts/infer_indextts2.py b/canto-backend/indextts/infer_indextts2.py
similarity index 100%
rename from qwen3-tts-backend/indextts/infer_indextts2.py
rename to canto-backend/indextts/infer_indextts2.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/__init__.py b/canto-backend/indextts/s2mel/dac/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/__init__.py
rename to canto-backend/indextts/s2mel/dac/__init__.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/__main__.py b/canto-backend/indextts/s2mel/dac/__main__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/__main__.py
rename to canto-backend/indextts/s2mel/dac/__main__.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/model/__init__.py b/canto-backend/indextts/s2mel/dac/model/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/model/__init__.py
rename to canto-backend/indextts/s2mel/dac/model/__init__.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/model/base.py b/canto-backend/indextts/s2mel/dac/model/base.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/model/base.py
rename to canto-backend/indextts/s2mel/dac/model/base.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/model/dac.py b/canto-backend/indextts/s2mel/dac/model/dac.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/model/dac.py
rename to canto-backend/indextts/s2mel/dac/model/dac.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/model/discriminator.py b/canto-backend/indextts/s2mel/dac/model/discriminator.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/model/discriminator.py
rename to canto-backend/indextts/s2mel/dac/model/discriminator.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/model/encodec.py b/canto-backend/indextts/s2mel/dac/model/encodec.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/model/encodec.py
rename to canto-backend/indextts/s2mel/dac/model/encodec.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/nn/__init__.py b/canto-backend/indextts/s2mel/dac/nn/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/nn/__init__.py
rename to canto-backend/indextts/s2mel/dac/nn/__init__.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/nn/layers.py b/canto-backend/indextts/s2mel/dac/nn/layers.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/nn/layers.py
rename to canto-backend/indextts/s2mel/dac/nn/layers.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/nn/loss.py b/canto-backend/indextts/s2mel/dac/nn/loss.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/nn/loss.py
rename to canto-backend/indextts/s2mel/dac/nn/loss.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/nn/quantize.py b/canto-backend/indextts/s2mel/dac/nn/quantize.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/nn/quantize.py
rename to canto-backend/indextts/s2mel/dac/nn/quantize.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/utils/__init__.py b/canto-backend/indextts/s2mel/dac/utils/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/utils/__init__.py
rename to canto-backend/indextts/s2mel/dac/utils/__init__.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/utils/decode.py b/canto-backend/indextts/s2mel/dac/utils/decode.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/utils/decode.py
rename to canto-backend/indextts/s2mel/dac/utils/decode.py
diff --git a/qwen3-tts-backend/indextts/s2mel/dac/utils/encode.py b/canto-backend/indextts/s2mel/dac/utils/encode.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/dac/utils/encode.py
rename to canto-backend/indextts/s2mel/dac/utils/encode.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/audio.py b/canto-backend/indextts/s2mel/modules/audio.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/audio.py
rename to canto-backend/indextts/s2mel/modules/audio.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/activations.py b/canto-backend/indextts/s2mel/modules/bigvgan/activations.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/activations.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/activations.py
diff --git a/qwen3-tts-backend/indextts/utils/__init__.py b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/__init__.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/__init__.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/activation1d.py b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/activation1d.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/activation1d.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/activation1d.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/anti_alias_activation.cpp b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/anti_alias_activation.cpp
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/anti_alias_activation.cpp
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/anti_alias_activation.cpp
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/anti_alias_activation_cuda.cu b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/anti_alias_activation_cuda.cu
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/anti_alias_activation_cuda.cu
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/anti_alias_activation_cuda.cu
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/compat.h b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/compat.h
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/compat.h
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/compat.h
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/load.py b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/load.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/load.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/load.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/type_shim.h b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/type_shim.h
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/type_shim.h
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/cuda/type_shim.h
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/__init__.py b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/__init__.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/__init__.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/act.py b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/act.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/act.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/act.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/filter.py b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/filter.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/filter.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/filter.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/resample.py b/canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/resample.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/resample.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/alias_free_activation/torch/resample.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/bigvgan.py b/canto-backend/indextts/s2mel/modules/bigvgan/bigvgan.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/bigvgan.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/bigvgan.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/config.json b/canto-backend/indextts/s2mel/modules/bigvgan/config.json
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/config.json
rename to canto-backend/indextts/s2mel/modules/bigvgan/config.json
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/env.py b/canto-backend/indextts/s2mel/modules/bigvgan/env.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/env.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/env.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/meldataset.py b/canto-backend/indextts/s2mel/modules/bigvgan/meldataset.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/meldataset.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/meldataset.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/bigvgan/utils.py b/canto-backend/indextts/s2mel/modules/bigvgan/utils.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/bigvgan/utils.py
rename to canto-backend/indextts/s2mel/modules/bigvgan/utils.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/campplus/DTDNN.py b/canto-backend/indextts/s2mel/modules/campplus/DTDNN.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/campplus/DTDNN.py
rename to canto-backend/indextts/s2mel/modules/campplus/DTDNN.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/campplus/layers.py b/canto-backend/indextts/s2mel/modules/campplus/layers.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/campplus/layers.py
rename to canto-backend/indextts/s2mel/modules/campplus/layers.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/commons.py b/canto-backend/indextts/s2mel/modules/commons.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/commons.py
rename to canto-backend/indextts/s2mel/modules/commons.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/diffusion_transformer.py b/canto-backend/indextts/s2mel/modules/diffusion_transformer.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/diffusion_transformer.py
rename to canto-backend/indextts/s2mel/modules/diffusion_transformer.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/encodec.py b/canto-backend/indextts/s2mel/modules/encodec.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/encodec.py
rename to canto-backend/indextts/s2mel/modules/encodec.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/flow_matching.py b/canto-backend/indextts/s2mel/modules/flow_matching.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/flow_matching.py
rename to canto-backend/indextts/s2mel/modules/flow_matching.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/gpt_fast/generate.py b/canto-backend/indextts/s2mel/modules/gpt_fast/generate.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/gpt_fast/generate.py
rename to canto-backend/indextts/s2mel/modules/gpt_fast/generate.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/gpt_fast/model.py b/canto-backend/indextts/s2mel/modules/gpt_fast/model.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/gpt_fast/model.py
rename to canto-backend/indextts/s2mel/modules/gpt_fast/model.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/gpt_fast/quantize.py b/canto-backend/indextts/s2mel/modules/gpt_fast/quantize.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/gpt_fast/quantize.py
rename to canto-backend/indextts/s2mel/modules/gpt_fast/quantize.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/length_regulator.py b/canto-backend/indextts/s2mel/modules/length_regulator.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/length_regulator.py
rename to canto-backend/indextts/s2mel/modules/length_regulator.py
diff --git a/qwen3-tts-backend/indextts/s2mel/modules/wavenet.py b/canto-backend/indextts/s2mel/modules/wavenet.py
similarity index 100%
rename from qwen3-tts-backend/indextts/s2mel/modules/wavenet.py
rename to canto-backend/indextts/s2mel/modules/wavenet.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/__init__.py b/canto-backend/indextts/utils/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/__init__.py
rename to canto-backend/indextts/utils/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/arch_util.py b/canto-backend/indextts/utils/arch_util.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/arch_util.py
rename to canto-backend/indextts/utils/arch_util.py
diff --git a/qwen3-tts-backend/indextts/utils/checkpoint.py b/canto-backend/indextts/utils/checkpoint.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/checkpoint.py
rename to canto-backend/indextts/utils/checkpoint.py
diff --git a/qwen3-tts-backend/indextts/utils/common.py b/canto-backend/indextts/utils/common.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/common.py
rename to canto-backend/indextts/utils/common.py
diff --git a/qwen3-tts-backend/indextts/utils/feature_extractors.py b/canto-backend/indextts/utils/feature_extractors.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/feature_extractors.py
rename to canto-backend/indextts/utils/feature_extractors.py
diff --git a/qwen3-tts-backend/indextts/utils/front.py b/canto-backend/indextts/utils/front.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/front.py
rename to canto-backend/indextts/utils/front.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/__init__.py b/canto-backend/indextts/utils/maskgct/models/codec/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/__init__.py
rename to canto-backend/indextts/utils/maskgct/models/codec/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/codec.py b/canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/codec.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/codec.py
rename to canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/codec.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/__init__.py b/canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/__init__.py
rename to canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/factorized_vector_quantize.py b/canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/factorized_vector_quantize.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/factorized_vector_quantize.py
rename to canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/factorized_vector_quantize.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/lookup_free_quantize.py b/canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/lookup_free_quantize.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/lookup_free_quantize.py
rename to canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/lookup_free_quantize.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/residual_vq.py b/canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/residual_vq.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/residual_vq.py
rename to canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/residual_vq.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/vector_quantize.py b/canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/vector_quantize.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/vector_quantize.py
rename to canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/quantize/vector_quantize.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/vocos.py b/canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/vocos.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/amphion_codec/vocos.py
rename to canto-backend/indextts/utils/maskgct/models/codec/amphion_codec/vocos.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/codec_dataset.py b/canto-backend/indextts/utils/maskgct/models/codec/codec_dataset.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/codec_dataset.py
rename to canto-backend/indextts/utils/maskgct/models/codec/codec_dataset.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/codec_inference.py b/canto-backend/indextts/utils/maskgct/models/codec/codec_inference.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/codec_inference.py
rename to canto-backend/indextts/utils/maskgct/models/codec/codec_inference.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/codec_sampler.py b/canto-backend/indextts/utils/maskgct/models/codec/codec_sampler.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/codec_sampler.py
rename to canto-backend/indextts/utils/maskgct/models/codec/codec_sampler.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/codec_trainer.py b/canto-backend/indextts/utils/maskgct/models/codec/codec_trainer.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/codec_trainer.py
rename to canto-backend/indextts/utils/maskgct/models/codec/codec_trainer.py
diff --git a/qwen3-tts-backend/schemas/__init__.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/__init__.py
similarity index 100%
rename from qwen3-tts-backend/schemas/__init__.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/__init__.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/__init__.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/act.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/act.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/act.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/act.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/filter.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/filter.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/filter.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/filter.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/resample.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/resample.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/resample.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/alias_free_torch/resample.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/facodec_dataset.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/facodec_dataset.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/facodec_dataset.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/facodec_dataset.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/facodec_inference.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/facodec_inference.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/facodec_inference.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/facodec_inference.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/facodec_trainer.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/facodec_trainer.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/facodec_trainer.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/facodec_trainer.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/__init__.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/__init__.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/bst.t7 b/canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/bst.t7
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/bst.t7
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/bst.t7
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/model.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/model.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/model.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/JDC/model.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/attentions.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/attentions.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/attentions.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/attentions.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/commons.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/commons.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/commons.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/commons.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/gradient_reversal.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/gradient_reversal.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/gradient_reversal.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/gradient_reversal.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/layers.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/layers.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/layers.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/layers.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/quantize.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/quantize.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/quantize.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/quantize.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/style_encoder.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/style_encoder.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/style_encoder.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/style_encoder.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/wavenet.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/wavenet.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/modules/wavenet.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/modules/wavenet.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/optimizer.py b/canto-backend/indextts/utils/maskgct/models/codec/facodec/optimizer.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/facodec/optimizer.py
rename to canto-backend/indextts/utils/maskgct/models/codec/facodec/optimizer.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/kmeans/repcodec_model.py b/canto-backend/indextts/utils/maskgct/models/codec/kmeans/repcodec_model.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/kmeans/repcodec_model.py
rename to canto-backend/indextts/utils/maskgct/models/codec/kmeans/repcodec_model.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/kmeans/vocos.py b/canto-backend/indextts/utils/maskgct/models/codec/kmeans/vocos.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/kmeans/vocos.py
rename to canto-backend/indextts/utils/maskgct/models/codec/kmeans/vocos.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/melvqgan/melspec.py b/canto-backend/indextts/utils/maskgct/models/codec/melvqgan/melspec.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/melvqgan/melspec.py
rename to canto-backend/indextts/utils/maskgct/models/codec/melvqgan/melspec.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/README.md b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/README.md
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/README.md
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/README.md
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/__init__.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/__init__.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/__init__.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/__init__.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/act.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/act.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/act.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/act.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/filter.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/filter.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/filter.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/filter.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/resample.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/resample.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/resample.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/alias_free_torch/resample.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/facodec.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/facodec.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/facodec.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/facodec.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/gradient_reversal.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/gradient_reversal.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/gradient_reversal.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/gradient_reversal.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/melspec.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/melspec.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/melspec.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/melspec.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/__init__.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/__init__.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/fvq.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/fvq.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/fvq.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/fvq.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/rvq.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/rvq.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/rvq.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/quantize/rvq.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/transformer.py b/canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/transformer.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/ns3_codec/transformer.py
rename to canto-backend/indextts/utils/maskgct/models/codec/ns3_codec/transformer.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/model.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/model.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/model.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/model.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/__init__.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/__init__.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/conv.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/conv.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/conv.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/conv.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/lstm.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/lstm.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/lstm.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/lstm.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/norm.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/norm.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/norm.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/norm.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/__init__.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/__init__.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/__init__.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/__init__.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/ac.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/ac.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/ac.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/ac.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/core_vq.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/core_vq.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/core_vq.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/core_vq.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/distrib.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/distrib.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/distrib.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/distrib.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/vq.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/vq.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/vq.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/quantization/vq.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/seanet.py b/canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/seanet.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/seanet.py
rename to canto-backend/indextts/utils/maskgct/models/codec/speechtokenizer/modules/seanet.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/codec/vevo/vevo_repcodec.py b/canto-backend/indextts/utils/maskgct/models/codec/vevo/vevo_repcodec.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/codec/vevo/vevo_repcodec.py
rename to canto-backend/indextts/utils/maskgct/models/codec/vevo/vevo_repcodec.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/tts/maskgct/ckpt/wav2vec2bert_stats.pt b/canto-backend/indextts/utils/maskgct/models/tts/maskgct/ckpt/wav2vec2bert_stats.pt
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/tts/maskgct/ckpt/wav2vec2bert_stats.pt
rename to canto-backend/indextts/utils/maskgct/models/tts/maskgct/ckpt/wav2vec2bert_stats.pt
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/tts/maskgct/llama_nar.py b/canto-backend/indextts/utils/maskgct/models/tts/maskgct/llama_nar.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/tts/maskgct/llama_nar.py
rename to canto-backend/indextts/utils/maskgct/models/tts/maskgct/llama_nar.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct/models/tts/maskgct/maskgct_s2a.py b/canto-backend/indextts/utils/maskgct/models/tts/maskgct/maskgct_s2a.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct/models/tts/maskgct/maskgct_s2a.py
rename to canto-backend/indextts/utils/maskgct/models/tts/maskgct/maskgct_s2a.py
diff --git a/qwen3-tts-backend/indextts/utils/maskgct_utils.py b/canto-backend/indextts/utils/maskgct_utils.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/maskgct_utils.py
rename to canto-backend/indextts/utils/maskgct_utils.py
diff --git a/qwen3-tts-backend/indextts/utils/typical_sampling.py b/canto-backend/indextts/utils/typical_sampling.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/typical_sampling.py
rename to canto-backend/indextts/utils/typical_sampling.py
diff --git a/qwen3-tts-backend/indextts/utils/webui_utils.py b/canto-backend/indextts/utils/webui_utils.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/webui_utils.py
rename to canto-backend/indextts/utils/webui_utils.py
diff --git a/qwen3-tts-backend/indextts/utils/xtransformers.py b/canto-backend/indextts/utils/xtransformers.py
similarity index 100%
rename from qwen3-tts-backend/indextts/utils/xtransformers.py
rename to canto-backend/indextts/utils/xtransformers.py
diff --git a/qwen3-tts-backend/main.py b/canto-backend/main.py
similarity index 97%
rename from qwen3-tts-backend/main.py
rename to canto-backend/main.py
index 8fc6826..2052a85 100644
--- a/qwen3-tts-backend/main.py
+++ b/canto-backend/main.py
@@ -51,7 +51,7 @@ limiter = Limiter(key_func=get_user_identifier)
@asynccontextmanager
async def lifespan(app: FastAPI):
- logger.info("Starting Qwen3-TTS Backend Service...")
+ logger.info("Starting Canto Backend Service...")
logger.info(f"Model base path: {settings.MODEL_BASE_PATH}")
logger.info(f"Cache directory: {settings.CACHE_DIR}")
logger.info(f"Output directory: {settings.OUTPUT_DIR}")
@@ -116,7 +116,7 @@ async def lifespan(app: FastAPI):
yield
- logger.info("Shutting down Qwen3-TTS Backend Service...")
+ logger.info("Shutting down Canto Backend Service...")
scheduler.shutdown()
logger.info("Scheduler shutdown completed")
@@ -129,8 +129,8 @@ async def lifespan(app: FastAPI):
logger.error(f"Model cleanup failed: {e}")
app = FastAPI(
- title="Qwen3-TTS-WebUI Backend API",
- description="Backend service for Qwen3-TTS-WebUI text-to-speech system",
+ title="Canto Backend API",
+ description="Backend service for Canto text-to-speech system",
version="0.1.0",
lifespan=lifespan
)
diff --git a/qwen3-tts-backend/pytest.ini b/canto-backend/pytest.ini
similarity index 100%
rename from qwen3-tts-backend/pytest.ini
rename to canto-backend/pytest.ini
diff --git a/canto-backend/qwen3-tts.service b/canto-backend/qwen3-tts.service
new file mode 100644
index 0000000..4b5e7e9
--- /dev/null
+++ b/canto-backend/qwen3-tts.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Qwen3 TTS Backend Service
+After=network.target
+
+[Service]
+Type=simple
+User=bdim
+WorkingDirectory=/opt/qwen3-tts/qwen3-tts-backend
+Environment="PATH=/home/bdim/miniconda3/envs/qwen3-tts-deploy/bin:/usr/local/bin:/usr/bin:/bin"
+ExecStart=/home/bdim/miniconda3/envs/qwen3-tts-deploy/bin/uvicorn main:app --host 0.0.0.0 --port 8884
+Restart=always
+RestartSec=10
+
+[Install]
+WantedBy=multi-user.target
diff --git a/qwen3-tts-backend/requirements.txt b/canto-backend/requirements.txt
similarity index 100%
rename from qwen3-tts-backend/requirements.txt
rename to canto-backend/requirements.txt
diff --git a/qwen3-tts-backend/utils/__init__.py b/canto-backend/schemas/__init__.py
similarity index 100%
rename from qwen3-tts-backend/utils/__init__.py
rename to canto-backend/schemas/__init__.py
diff --git a/qwen3-tts-backend/schemas/audiobook.py b/canto-backend/schemas/audiobook.py
similarity index 100%
rename from qwen3-tts-backend/schemas/audiobook.py
rename to canto-backend/schemas/audiobook.py
diff --git a/qwen3-tts-backend/schemas/cache.py b/canto-backend/schemas/cache.py
similarity index 100%
rename from qwen3-tts-backend/schemas/cache.py
rename to canto-backend/schemas/cache.py
diff --git a/qwen3-tts-backend/schemas/job.py b/canto-backend/schemas/job.py
similarity index 100%
rename from qwen3-tts-backend/schemas/job.py
rename to canto-backend/schemas/job.py
diff --git a/qwen3-tts-backend/schemas/tts.py b/canto-backend/schemas/tts.py
similarity index 100%
rename from qwen3-tts-backend/schemas/tts.py
rename to canto-backend/schemas/tts.py
diff --git a/qwen3-tts-backend/schemas/user.py b/canto-backend/schemas/user.py
similarity index 100%
rename from qwen3-tts-backend/schemas/user.py
rename to canto-backend/schemas/user.py
diff --git a/qwen3-tts-backend/schemas/voice_design.py b/canto-backend/schemas/voice_design.py
similarity index 100%
rename from qwen3-tts-backend/schemas/voice_design.py
rename to canto-backend/schemas/voice_design.py
diff --git a/canto-backend/utils/__init__.py b/canto-backend/utils/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/qwen3-tts-backend/utils/audio.py b/canto-backend/utils/audio.py
similarity index 100%
rename from qwen3-tts-backend/utils/audio.py
rename to canto-backend/utils/audio.py
diff --git a/qwen3-tts-backend/utils/metrics.py b/canto-backend/utils/metrics.py
similarity index 100%
rename from qwen3-tts-backend/utils/metrics.py
rename to canto-backend/utils/metrics.py
diff --git a/qwen3-tts-backend/utils/validation.py b/canto-backend/utils/validation.py
similarity index 100%
rename from qwen3-tts-backend/utils/validation.py
rename to canto-backend/utils/validation.py
diff --git a/canto-frontend/.env.example b/canto-frontend/.env.example
new file mode 100644
index 0000000..d1b87fd
--- /dev/null
+++ b/canto-frontend/.env.example
@@ -0,0 +1,2 @@
+VITE_API_URL=/api
+VITE_APP_NAME=Canto
diff --git a/qwen3-tts-frontend/.gitignore b/canto-frontend/.gitignore
similarity index 100%
rename from qwen3-tts-frontend/.gitignore
rename to canto-frontend/.gitignore
diff --git a/qwen3-tts-frontend/components.json b/canto-frontend/components.json
similarity index 100%
rename from qwen3-tts-frontend/components.json
rename to canto-frontend/components.json
diff --git a/qwen3-tts-frontend/eslint.config.js b/canto-frontend/eslint.config.js
similarity index 100%
rename from qwen3-tts-frontend/eslint.config.js
rename to canto-frontend/eslint.config.js
diff --git a/qwen3-tts-frontend/fonts/noto-serif-jp-regular.woff2 b/canto-frontend/fonts/noto-serif-jp-regular.woff2
similarity index 100%
rename from qwen3-tts-frontend/fonts/noto-serif-jp-regular.woff2
rename to canto-frontend/fonts/noto-serif-jp-regular.woff2
diff --git a/qwen3-tts-frontend/fonts/noto-serif-kr-regular.woff2 b/canto-frontend/fonts/noto-serif-kr-regular.woff2
similarity index 100%
rename from qwen3-tts-frontend/fonts/noto-serif-kr-regular.woff2
rename to canto-frontend/fonts/noto-serif-kr-regular.woff2
diff --git a/qwen3-tts-frontend/fonts/noto-serif-latin-regular.woff2 b/canto-frontend/fonts/noto-serif-latin-regular.woff2
similarity index 100%
rename from qwen3-tts-frontend/fonts/noto-serif-latin-regular.woff2
rename to canto-frontend/fonts/noto-serif-latin-regular.woff2
diff --git a/qwen3-tts-frontend/fonts/noto-serif-sc-regular.woff2 b/canto-frontend/fonts/noto-serif-sc-regular.woff2
similarity index 100%
rename from qwen3-tts-frontend/fonts/noto-serif-sc-regular.woff2
rename to canto-frontend/fonts/noto-serif-sc-regular.woff2
diff --git a/qwen3-tts-frontend/fonts/noto-serif-tc-regular.woff2 b/canto-frontend/fonts/noto-serif-tc-regular.woff2
similarity index 100%
rename from qwen3-tts-frontend/fonts/noto-serif-tc-regular.woff2
rename to canto-frontend/fonts/noto-serif-tc-regular.woff2
diff --git a/qwen3-tts-frontend/index.html b/canto-frontend/index.html
similarity index 95%
rename from qwen3-tts-frontend/index.html
rename to canto-frontend/index.html
index d6345a9..dfddea3 100644
--- a/qwen3-tts-frontend/index.html
+++ b/canto-frontend/index.html
@@ -4,7 +4,7 @@
- Qwen3-TTS-WebUI
+ Canto