# TakwayAI后端 ### 项目架构 AI后端使用fastapi框架,采用分层架构 ``` TakwayAI/ │ ├── app/ │ ├── __init__.py # 应用初始化和配置 │ ├── main.py # 应用启动入口 │ ├── models/ # 数据模型定义 │ │ ├── __init__.py │ │ ├── models.py # 数据库定义 │ ├── schemas/ # 请求和响应模型 │ │ ├── __init__.py │ │ ├── user_schemas.py # 用户相关schema │ │ └── ... # 其他schema │ ├── controllers/ # 业务逻辑控制器 │ │ ├── __init__.py │ │ ├── user_controllers.py # 用户相关控制器 │ │ └── ... # 其他控制器 │ ├── routes/ # 路由和视图函数 │ │ ├── __init__.py │ │ ├── user_routes.py # 用户相关路由 │ │ └── ... # 其他路由 │ ├── dependencies/ # 依赖注入相关 │ │ ├── __init__.py │ │ ├── database.py # 数据库依赖 │ │ └── ... # 其他依赖 │ └── exceptions/ # 自定义异常处理 │ ├── __init__.py │ └── ... # 自定义异常类 │ ├── tests/ # 测试代码 │ ├── __init__.py | └── ... │ ├── config/ # 配置文件 │ ├── __init__.py │ ├── production.py # 生产环境配置 │ ├── development.py # 开发环境配置 │ └── ... # 其他环境配置 │ ├── utils/ # 工具函数和辅助类 │ ├── __init__.py │ ├── stt # 语音转文本工具函数 │ ├── tts # 语音合成工具函数 │ └── ... # 其他工具函数 | ├── main.py #启动脚本 ├── app.log # 日志文件 ├── Dockerfile # 用于构建Docker镜像的Dockerfile ├── requirements.txt # 项目依赖列表 └── README.md # 项目说明文件 ``` ### 项目部署 #### (1) 将项目clone到本地: ``` shell git clone http://43.132.157.186:3000/killua/TakwayPlatform.git ``` #### (2) 安装依赖 创建虚拟环境 ``` shell conda create -n takway python=3.9 conda activate takway ``` 安装依赖 ``` shell cd TakwayPlatform/ pip install -r requirements.txt ``` #### (3) 安装openvoice 如果你的本地环境可以科学上网,则直接运行下面两行指令 ``` shell pip install git+https://github.com/myshell-ai/MeloTTS.git python -m unidic download ``` 如果不能科学上网 则先运行 ``` shell pip install git+https://github.com/myshell-ai/MeloTTS.git ``` 1. unidic安装 然后手动下载[unidic.zip](https://cotonoha-dic.s3-ap-northeast-1.amazonaws.com/unidic-3.1.0.zip),并手动改名为unidic.zip 这边以miniconda举例,如果用的是conda应该也是一样的 将unidic.zip拷贝入~/miniconda3/envs/takway/lib/python3.9/site-packages/unidic cd进入~/miniconda3/envs/takway/lib/python3.9/site-packages/unidic vim download.py 将函数download_version()中除了最后一行全部注释掉,并且把最后一行的download_and_clean()的两个参数任意修改,比如"hello","world" 再将download_and_clean()函数定义位置,注释掉该函数中的download_process()行 运行`python -m unidic download` 2. huggingface配置 运行命令 ```shell pip install -U huggingface_hub export HF_ENDPOINT=https://hf-mirror.com ``` 最好把`export HF_ENDPOINT=https://hf-mirror.com`写入~/.bashrc,不然每次重启控制台终端就会失效 3. nltk_data下载 在/miniconda3/envs/takway/下创建nltk_data文件夹 在nltk_data文件夹下创建corpora和taggers文件夹 手动下载[cmudict.zip](https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/cmudict.zip)和[averaged_perceptron_tragger.zip](https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/taggers/averaged_perceptron_tagger.zip) 将cmudict.zip放入corpora文件夹下 将averaged_perceptron_tragger.zip放入taggers文件夹下 #### (4) 安装FunASR 本项目使用的FunASRE在github上的FunASR的基础上做了一些修改 ``` shell git clone http://43.132.157.186:3000/gaohz/FunASR.git cd FunASR/ pip install -v -e . ``` #### (5) 修改配置 1. 安装mysql,在mysql中创建名为takway的数据库 2. 安装redis,将密码设置为takway 3. 打开config中的development.py文件修改mysql和redis连接字符串 #### (6) 导入vits模型 在utils/tts/目录下,创建vits_model文件夹 从[链接](https://huggingface.co/spaces/zomehwh/vits-uma-genshin-honkai/tree/main/model)下载 vits_model并放入该文件夹下,只需下载config.json和G_953000.pth即可 #### (7) 启动程序 ``` shell cd TakwayPlatform python main.py ```