乐于分享
好东西不私藏

ai声音克隆合成

ai声音克隆合成

写在前面

前阵子有个人想让我把电子书搞成朗读版,恰好又有人有需求说不善言辞,想让我帮他做一份声音克隆,克隆他的声音说一大段话。这个需求在我看来简单的过于简单了,一直没写,今天抽空写一下,谁叫平台给我这几天推流呢,天予不取,反受其咎。哈哈哈。

我觉得这个功能已经被不法分子利用了,所以大家可以看看声音是如何被偷取的,陌生电话要么不接,接了千万不要先说话,对面可能就在录音,够3秒就挂电话了。你的声音就被偷走了。

ai是个双刃剑,从声音到人脸视频,都可以克隆合成,降低了门槛,本文除了技术记录,更想通过这篇文章让大家有一些防范意识。

音频效果,我就截个图,不放音频文件了。 遮天电子书的音频:

文件太多了,截个局部,这个音频读起来不是死板生硬的那种,很有感情的声音,完全可以搭配文生音色来自定义开发做成剧场模式。

一、前置 Microsoft 环境

项目必须安装 Microsoft Visual Studio C++ Build Tools[2]conda install安装的不行

  • 点击  Visual Studio C++ Build Tools[3] 这个链接,打开的页面是这样的
  • 这会下载来一个exe程序,双击打开,会看到下面这个界面,记得勾选图中这个,其他的不要勾
  • 然后点右下角安装就行了,安装完成后重启电脑

二、GPU环境

unsetunset1、安装显卡驱动unsetunset

  • nvidia-app 主页地址[4]
  • NVIDIA_app_v11 下载地址[5]
  • 安装 NVIDIA app 程序,无脑下一步就行。

unsetunset2、安装CUDA 程序unsetunset

cuda 版本大于11就行,我用的是12

  • 执行nvidia-smi 看你的显卡是否支持 cuda 11 以上。
  • cuda 12 下载地址[6]
  • 安装选项记得选择自定义
  • 然后一路点下一步。都完成后记得重启一下电脑。

三、运行环境

unsetunset1、下载源代码unsetunset

我用的是专用n卡版本 v2pro-20250604-nvidia50[7]

注意:这个nvidia50不是说必须要是nvidia 50系列的显卡哈,我用nvidia 3060也能运行。

unsetunset2、创建基础python环境unsetunset

  • GPT-SoVITS[8] 要求python=3.10,所以执行conda create -n tts python=3.10 -y
  • 激活环境 conda activate tts
  • cd 到源代码目录 cd C:\Users\lc\work\GPT-SoVITS-v2pro-20250604-nvidia50(lc是我的电脑用户名,代码我放在c盘了)
  • 用 conda安装ffmpeg ,运行 conda install ffmpeg
  • 安装项目依赖 pip install -r extra-req.txt --no-depspip install -r requirements.txt
  • 安装额外依赖pip install torchcodec

unsetunset3、下载权重文件unsetunset

aria2c是一个liunx下的断点续传的多线程下载器,我在windows wsl下使用的。如果没有可以复制下载链接到浏览器,正常下载即可。

aria2c -s16 -x16 --file-allocation=none -o "s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt" -d./GPT_weights_v2 https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/s1bert25hz-2kh-longer-epoch%3D68e-step%3D50232.ckpt?download=truearia2c -s16 -x16 --file-allocation=none -o "s2G488k.pth" -d./SoVITS_weights_v2 https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/s2G488k.pth?download=true

到这里,就可用启动了

  • 本地启动 python api_v2.py
  • 允许远程访问 python api_v2.py -a 0.0.0.0 -p 9880
  • web-ui方式 双击 go-webui.bat 或 python webui.py

注意,我是启动了api_v2.py将它当作一个tts api服务在运行,额外编写python脚本来调用它来完成更多的自定义功能。如果只需要界面的用界面启动方式就可以了。

四、编写自定义脚本调用tts api

下面是我让AI  按我的要求写的脚本,完成了以下功能

  • ios下的epub电子书,按章节解析并生成。
  • TXT电子书按章节解析并生成。。
  • 指定文本的声音生成。
  • 自定义音色文件。
  • 自定义感情曲线、语速节奏等参数。

运行之前,需要先安装一些依赖

pip install requests ebooklib beautifulsoup4 tqdm

下面是完整的代码(记得把文件路径改成自己的)

import jsonimport reimport osimport threadingimport timeimport requestsimport ebooklibfrom ebooklib import epubfrom bs4 import BeautifulSoupfrom concurrent.futures import ThreadPoolExecutor, as_completedfrom tqdm import tqdm# ==========================================# 第一部分:小说解析器模块 (可扩展)# ==========================================class BaseParser:"""解析器基类"""    def get_chapters(self, file_path):        raise NotImplementedError("子类必须实现 get_chapters 方法")    def _basic_clean(self, text):"""通用清洗逻辑"""        text = re.sub(r'https?://\S+''', text)        text = re.sub(r'[=+\-]{5,}''', text)return text.strip()class TxtParser(BaseParser):"""纯文本解析器"""    def get_chapters(self, file_path):        with open(file_path, 'r', encoding='utf-8') as f:            content = f.read()        pattern = r'(第[一二三四五六七八九十百千万零\d]+[章节回].*)'        parts = re.split(pattern, content)        chapters = []for i in range(1, len(parts), 2):            title = parts[i].strip()            body = self._basic_clean(parts[i + 1])if body:                chapters.append({"title": title, "content": body})return chapters    def get_chapters_text(self, file_path):        with open(file_path, 'r', encoding='utf-8') as f:            content = f.read()return contentclass EpubParser(BaseParser):"""EPUB 解析器 - 增强正则版"""    def get_chapters(self, file_path):        book = epub.read_epub(file_path)        chapters = []# 严格的章节匹配正则# 匹配:第1章、第一章、序言、前言、楔子、后记 等        title_pattern = r'^(第[一二三四五六七八九十百千万零\d]+[章节回].*|序言|前言|楔子|后记|尾声|第[一二三四五六七八九十百千万零\d]+部分.*)'for item in book.get_items():if item.get_type() == ebooklib.ITEM_DOCUMENT:                soup = BeautifulSoup(item.get_content(), 'html.parser')# 1. 提取所有文本并清洗                raw_text = soup.get_text()                content = self._basic_clean(raw_text)if len(content) < 50: continue# 忽略掉太短的片段(如版权页)# 2. 寻找真正的标题                lines = [l.strip() for l in content.split('\n'if l.strip()]if not lines: continue# 逻辑:检查第一行是否符合章节正则                first_line = lines[0]if re.match(title_pattern, first_line):                    title = first_line# 既然第一行是标题,正文就从第二行开始,避免重复读标题                    body_content = "\n".join(lines[1:])else:# 如果第一行不匹配正则,说明这个 HTML 文件可能没有明确标题# 比如封面、简介,或者是被切碎的正文续接# 我们尝试找 HTML 的 h1-h3 标签再校验一次                    header = soup.find(['h1''h2''h3'])if header and re.match(title_pattern, header.get_text().strip()):                        title = header.get_text().strip()                        body_content = contentelse:# 最终兜底:如果完全没标题,可能是正文的延续,起个序列名或跳过# 这里我们取前15个字作为标识,或者你可以选择直接跳过非章节内容                        title = f"正文片段_{lines[0][:10]}"                        body_content = content# 3. 文件名安全处理                safe_title = re.sub(r'[\\/:*?"<>|]''_', title).strip()                safe_title = safe_title[:40]  # 限制文件名长度                chapters.append({"title": safe_title, "content": body_content})return chapters# ==========================================# 第二部分:TTS 核心引擎模块# ==========================================class TTSEngine:    def __init__(self, api_base="http://localhost:9880"):        self.api_base = api_base# 默认配置        self.config = {"gpt_path""C:/Users/lc/work/GPT-SoVITS-v2pro-20250604-nvidia50/GPT_weights_v2/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt","sovits_path""C:/Users/lc/work/GPT-SoVITS-v2pro-20250604-nvidia50/SoVITS_weights_v2/s2G488k.pth","ref_audio""C:/Users/lc/work/音色.wav","prompt_text""今天下大雨,但是我没带伞,有人给我送伞吗","prompt_lang""zh"        }        self._init_models()    def _init_models(self):print(f"[*] 初始化引擎: 加载模型中...")        requests.get(f"{self.api_base}/set_gpt_weights",                     params={"weights_path": self.config["gpt_path"]})        requests.get(f"{self.api_base}/set_sovits_weights",                     params={"weights_path": self.config["sovits_path"]})    def generate(self, title, text, output_path):"""核心合成方法 - 增强版"""        params = {"text": text,"text_lang""zh","ref_audio_path": self.config["ref_audio"].replace("\\""/"),"prompt_text": self.config["prompt_text"],"prompt_lang": self.config["prompt_lang"],# --- 核心调优:长时间听书方案 ---"text_split_method""cut2",  # 改用 cut2:按句号+逗号切分,比 cut1 更连贯,比 cut5 更清晰"top_k": 5,  # 【疯狂收紧】从 10 暴降到 5!强行在极高温度下,只允许 AI 选择最契合情绪的前 5 个音节候选,防止字音发散崩溃"top_p": 0.85,  # 【首次截断】从 1.0 降到 0.85。过滤掉高升温带来的尾音毛刺和杂音"temperature": 1.45,  # 【生死线】直接轰到 1.45!这是未解密/魔改版内核的极限,声音的抑扬顿挫会变得极其夸张,充满戏剧化的拿腔拿调"speed_factor": 1.05,  # 【语速微催】提高到 1.05x。人在情绪激动(愤怒、惊恐、狂喜)时,语速会本能地加快,更加逼真"half": True,  # 半精度推理"media_type""wav","streaming_mode": False,        }        try:            tqdm.write(f"[>>>] 开始合成: {title}")# 使用 POST 请求。GPT-SoVITS API v2 支持 POST 传参,避免 URL 过长报错# 注意:POST 请求参数通常放在 json=params 中            response = requests.post(f"{self.api_base}/tts", json=params, timeout=None)if response.status_code == 200:# 检查返回内容是否为空if not response.content:print(f"[!] {title} 失败: 服务器返回了空数据")return False, title                with open(output_path, "wb") as f:                    f.write(response.content)return True, titleelse:# 优化点 2:安全地处理非 200 状态码print(f"[!] {title} 失败:  {response.text}")                try:# 尝试解析错误信息,如果不成 JSON 就输出原始文本                    err_info = response.json()print(f"    详情: {err_info.get('message', '未知错误')}")                except:print(f"    原始报错信息: {response.text[:200]}")  # 只打印前 200 字防止刷屏return False, title        except Exception as e:print(f"[!] {title} 合成异常 (网络或系统级): {e}")return False, title# ==========================================# 第三部分:业务调度逻辑# ==========================================def start_task(file_path, output_dir):# 1. 解析器选择    ext = os.path.splitext(file_path)[-1].lower()    parser = EpubParser() if ext == '.epub'else TxtParser()# 2. 解析内容print(f"[*] 正在解析文件: {file_path}")    raw_chapters = parser.get_chapters(file_path)# 过滤非章节内容    title_pattern = r'^(第[一二三四五六七八九十百千万零\d]+[章节回].*|序言|前言|楔子|后记|尾声)'    chapters = [ch for ch in raw_chapters if re.match(title_pattern, ch['title'])]    total_chapters = len(chapters)if total_chapters == 0:print("[-] 未识别到任何有效正文章节,请检查解析器正则。")return# 3. 初始化引擎    engine = TTSEngine()# 4. 准备目录if not os.path.exists(output_dir):        os.makedirs(output_dir)print(f"[*] 识别到正文 {total_chapters} 章,开始处理...")# --- 核心修改逻辑 ---    with tqdm(total=total_chapters, desc="总进度", unit="章") as pbar:        with ThreadPoolExecutor(max_workers=100) as executor:            task_mapping = {}for i, ch in enumerate(chapters):# 生成安全的文件名                safe_title = re.sub(r'[\\/:*?"<>|]''_', ch['title'])                file_name = f"{i + 1:03d}_{safe_title}.wav"                save_path = os.path.join(output_dir, file_name)# 检查文件是否已存在if os.path.exists(save_path):                    pbar.update(1)# tqdm.write(f"[横跳] 跳过已存在章节: {ch['title']}") # 如果觉得日志太吵可以注释掉这行continue# 如果不存在,才提交任务                future = executor.submit(engine.generate, ch['title'], ch['content'], save_path)                task_mapping[future] = ch['title']                tqdm.write(f"[→] 已提交: {ch['title']}")# 如果没有新任务需要执行,直接结束if not task_mapping:print("[+] 所有章节均已存在,无需生成。")return# 实时获取执行中的任务结果for future in as_completed(task_mapping):                ch_title = task_mapping[future]                try:                    success, title = future.result()if success:                        pbar.update(1)                        tqdm.write(f"[√] 已合成: {title}")else:                        tqdm.write(f"[×] 失败: {title} (请检查 API 报错)")                except Exception as e:                    tqdm.write(f"[!] 运行异常: {ch_title} | 原因: {e}")print(f"\n[+] 任务处理完成!")def start_task2(file_path, output_dir):# 1. 解析器选择    parser = TxtParser()# 2. 解析内容print(f"[*] 正在解析文件: {file_path}")    raw_text = parser.get_chapters_text(file_path)# 3. 初始化引擎    engine = TTSEngine()# 4. 准备目录if not os.path.exists(output_dir):        os.makedirs(output_dir)# 生成安全的文件名    safe_title = re.sub(r'[\\/:*?"<>|]''_'"录音")    file_name = f"{safe_title}.wav"    save_path = os.path.join(output_dir, file_name)    engine.generate(title="主播录音", text=raw_text, output_path=save_path)print(f"\n[+] 任务处理完成!")if __name__ == "__main__":# 使用示例# 只需要传入文件,程序会自动识别解析器# start_task("遮天.epub", "output_final")    start_task2("text.txt""output_final2")

收工,非常简单,实际上可以把这个脚本改成,实时读取麦克风流,然后流式调用这个tts api就可以实现在线实时变音。

四、部署建议

这个有CPU版本,我试过了,贼慢,如果套了nginx代理,注意超时设置和缓存设置。 按当前GPU版本,基本上可以实现秒级生成声音。

警告与声明

本文仅作为开源项目的AI技术应用学习和研究,不作为任何商业目的,更加不提供任何违法犯罪的技术传播或支持。

个人公众号
参考资料
[1] 

GPT-SoVITS: https://github.com/RVC-Boss/GPT-SoVITS

[2] 

Microsoft Visual Studio C++ Build Tools: https://visualstudio.microsoft.com/zh-hans/downloads/?q=build+tools

[3] 

Visual Studio C++ Build Tools: https://visualstudio.microsoft.com/zh-hans/downloads/?q=build+tools

[4] 

nvidia-app 主页地址: https://www.nvidia.com/zh-tw/software/nvidia-app/

[5] 

NVIDIA_app_v11 下载地址: https://tw.download.nvidia.com/nvapp/client/11.0.7.237/NVIDIA_app_v11.0.7.237.exe

[6] 

cuda 12 下载地址: https://developer.nvidia.com/cuda-12-1-0-download-archive

[7] 

v2pro-20250604-nvidia50: https://www.modelscope.cn/models/FlowerCry/gpt-sovits-7z-pacakges/resolve/master/GPT-SoVITS-v2pro-20250604-nvidia50.7z

[8] 

GPT-SoVITS: https://github.com/RVC-Boss/GPT-SoVITS

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-26 23:55:03 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/805675.html
  2. 运行时间 : 0.129432s [ 吞吐率:7.73req/s ] 内存消耗:4,929.98kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=48338f1c9ff00ba5e57e52b898348470
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000444s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000745s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000297s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000290s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000470s ]
  6. SELECT * FROM `set` [ RunTime:0.000211s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000514s ]
  8. SELECT * FROM `article` WHERE `id` = 805675 LIMIT 1 [ RunTime:0.000639s ]
  9. UPDATE `article` SET `lasttime` = 1782489303 WHERE `id` = 805675 [ RunTime:0.021373s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.005551s ]
  11. SELECT * FROM `article` WHERE `id` < 805675 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000572s ]
  12. SELECT * FROM `article` WHERE `id` > 805675 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000492s ]
  13. SELECT * FROM `article` WHERE `id` < 805675 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001686s ]
  14. SELECT * FROM `article` WHERE `id` < 805675 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002591s ]
  15. SELECT * FROM `article` WHERE `id` < 805675 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.010132s ]
0.131156s