GPT-SoVITS学习01
1.什么是TTS
TTS(Text-To-Speech)这是一种文字转语音的语音合成。类似的还有SVC(歌声转换)、SVS(歌声合成)等。
2.配置要求
GPT-SoVITS对电脑配置有较高的要求。
训练:对于Windows电脑:
- 支持CUDA的nVIDIA显卡,每张拥有至少6G以上显存。
- 常见的不能使用的显卡:10系以前的所有卡、1060以下,1660以下,2060以下、3050 4G
- Windows10/11 系统
- 如果没显卡会自动识别使用CPU训练,但速度非常缓慢。
推理:对于Windows电脑:
- 支持CUDA的nVIDIA显卡,每张拥有至少4G以上显存。
- Windows 10/11 系统
- 没显卡会自动识别使用CPU推理
基础知识
1.常见的英文
1.error。这个单词会在所有报错的时候出现。它一般前面会有一个定语来修饰这个报错,后面跟着报错原因。例如:OutOfMemoryError: CUDA out of memory。前面的OutOfMemory说明是内存不足的报错,后面的CUDA out of memory说明是显存不足。
2.CUDA。这是N卡的统一计算架构,所有在N卡进行的Ai计算都需要它。安装了显卡驱动的话都会安装上CUDA,推荐使用11.8版本的CUDA。
3.GPU。 GPU是图形处理器,显卡是GPU但GPU不一定是显卡。台式机的显卡是很大的一个硬件。笔记本只有游戏本才有显卡。其他的GPU都是核显!核显不是显卡!
4.module。模块。模块就是一个脚本,缺少某个脚本,对应的程序就无法运行。可能会遇到No module的报错,这种情况只需安装对应的模块就好了。 例如:ModuleNotFoundError: No module named ‘jieba_fast' , 这里没有jieba_fast这个模块,那么只要python -m pip install jieba_fast装上这个模块即可。
5.WebUI。 web是网络的意思,ui是使用界面的意思,合在一起就是一个网页,一个以网页呈现的操作界面。网页是用来控制操作程序的,真正的运行程序是你点开的那个go-webui.bat的程序。
6.weights。weights:模型权重。也就是模型,GPT_weights就是GPT模型,SOVITS_weights就是SoVITS模型。weight指的是神经网络中的参数,这些参数被存储在称为“权重”的数组中,所以weights叫做模型权重。
7.output。 output:输出。程序输出的文件一般都会在output文件夹,有时候output会缩写成opt,例如uvr5_opt就代表这个文件夹是uvr5输出的文件的存放位置。
8.found。found:找到。一般出现在路径不对的报错中,not found是没有找到的意思。如果路径中没有某个需要的文件的时候就会报错NotFound:xxx。也有可能是没有找到某个模块,模块就是Moudle,ModuleNotFoundError。
9.pretrained。预先训练的,常见的有pretrained_models这个文件夹里放的是底膜,并不是微调后的最终模型。找模型的时候别找错了。
2.什么是显存
显存是显卡的专用内存,ctrl+shift+esc打开任务管理器看,专用GPU内存就是显存,其他的内存都是共享的,并不是真正的显存。
3.什么是数据集
数据集是指一组数据样本,包括音频,文本等数据。数据集的质量指的是音频的质量和标注的正确率,数据集的大小指的是音频的长度。
4.什么是音频质量
1.响度: 响度就是俗称的音量,常见的计数方式是dB,也就是分贝。生活中常见的分贝都为正数,例如60分贝是正常说话的声音。但dB作为一个对数单位是不能直接拿来描述一个物理量的大小或多少的。 在描述音频的音量时一般使用电平这个词,音频电平就是输入信号的电压大小,和人耳听见的分贝数是不同的。一般来说正常说话的电平要保持在-9dB~6dB这个区间。推荐在训练前用软件做下响度统一。因为db是一个对数单位,相差3dB那么就意味着相差10的0.3次方倍,大约2倍,如果相差10db就是10倍。所以不要觉得大了几dB差距不大没关系。如果在正常电平下你觉得听起来声音小,那么是你的音响问题,请调整你的音响,不要乱动电平。
这是同样一段音频不同响度在AU中的样子
2.混响
混响是后期反射声,可以简单的理解为回声。你可能觉得正常录的声音能有什么回声,但实际上无论什么情况都会有混响,只是有大小和多少的区分罢了。最基础的看混响的方法是看频谱图,很明显第一张图就显得干净不拖沓。第二张图就是混响严重的。有混响的话就要用UVTR5去混响。
3.音质
这里的音质是对音频准确性、保真度或清晰度的评估。一般情况下采样率,位深和码率都不会太低的。现在的麦克风都是44.1k,16bit以上了。但清晰度就不好说了,如果要自己录音的话最好买个单独的麦克风。再贵的耳机麦克风都不如一个独立麦克风。当然清晰度也可以通过频谱图看出一点点。图一是音质好的,图二是音质差的。至于采样率,位深和码率不用太高,会进行重采样的。
整合包教程
在开始之前
为了避免在之后的使用中出现各种意料之外的问题,请务必对照下面的 Checklist 检查本机环境。
- 关闭全局梯子/绕过局域网
- 使用推荐的浏览器(Chrome/Edge/Firefox)
- 关闭浏览器自带的网页翻译功能
- 关闭所有第三方杀毒软件/安全卫士等
- 如果内存吃紧,将系统虚拟内存设置为自动
- 建议关闭共享内存
- win11关闭GPU加速,貌似有占用不满的bug
1.下载
这里请自行找下载资源,这里不再提供。
2.解压并打开
请使用7-zip解压!其他解压工具可能会吞文件。解压后打开文件来到根目录,双击go-webui.bat打开,不要以管理员身份运行!
这就是正常打开了,稍后等待就会弹出网页。如果没有弹出网页可以复制http://0.0.0.0:9874到浏览器打开。
这是网页端
在开始使用前提醒一下:打开的bat不可以关闭!这个黑色的bat框就是控制台,所有的日志都会在这上面呈现,所有的信息以控制台为准。所有的报错都在控制台上!
3.数据集处理
请认真准备数据集!以免出现各种报错,和炼出不理想的模型!好的数据集是炼出好的模型的基础!
使用UVR5处理原音频(如果原音频足够干净可以跳过这步,比如游戏里提取的干声)
方法1:用自带的UVR5处理音频
点击开启UVR5-WebUI稍加等待就会自动弹出下图的网页,如果没有弹出复制http://0.0.0.0:9873到浏览器打开
首先输入音频文件夹路径或直接选择文件(2选1),文件夹上面那个地址框就是文件夹路径。
如果要复制文件路径就是这样:
先用model_bs_roformer_ep_317_sdr_12.9755模型处理一遍(提取人声),然后将输出的干声音频再用onnx——dereverb最后再用DeEcho-Aggressive(去混响),输出格式选wav。输出的默认路径在GPT-SoVITS-beta\output\uvr5_opt这个文件夹下。处理完的音频(vocal)是人声,(instrument)是伴奏,(_vocal_main_vocal)是没混响的,(others)的是混响。(voval)(_vocal_main_vocal)才是要用的文件,其他都可以删除。结束后记得到WebUI关闭UVR5节省内存。
例如:
这里有两端素材,点击一下目录,就是路径名了,将其复制。
粘贴到输入路径里,下拉选择model_bs_roformer_ep_317_sdr_12.9755模型,然后点击转换,稍等片刻后输出信息就会显示xxxx-> Success
在状态栏点击黑窗口可以打开bat控制台,在这里可以查看进度。
然后打开GPT-SoVITS整合包文件夹的output文件夹,打开uvr5_opt文件夹。
这里会有输入文件数两倍的文件,其中instrumental文件是不需要的,都必须删掉,否则会影响最终效果。再新建一个文件夹把这两个文件移过去。
然后输入路径改成上面那个新的文件夹,下拉选择onnx_dereverb_By_FoxJoy模型,点击转换。然后要等待比较长一段时间。同样可以再bat控制台看进度,如果等待的时间太长可以跳过这个模型。输入的文件还是在uvr5_opt文件夹,其中others是不需要的,删掉。上一步的vocal也不需要了可以删掉。再新建 一个文件夹把_vocal_main_vocal这两个文件移过去
然后输入路径改成上面那个新建文件夹,下拉选择VR-DeEchoAggressive模型(如果混响很重选DeReverb,比较轻选Normal,中间选Aggressive),点击转换。稍微等待一段时间,再打开uvr5_opt文件夹,把instrument开头的删掉就好了。
如果没有成功输出,那么推荐使用UVR5客户端。
方法2:使用UVR5客户端(没有bug,模型更多)
这个之后深入学习时再使用。
切割音频
在切割音频前建议把所有音频拖进音频软件(如au、剪映)调整音量,最大音量调整至-9dB到-6dB,过高的删除。
首先输入原音频的文件夹路径(不要有中文),如果刚刚经过了UVR5处理那么就是uvr5_opt这个文件夹。然后建议可以调整的参数有min_length、min_interval 和 max_sil_kept 单位都是ms。
min_length根据显存大小调整,显存越小调越小。 min_interval根据音频的平均间隔调整,如果音频太密集可以适当调低。 max_sil_kept会影响句子的连贯性,不同音频不同调整,不会调的话保持默认。其他参数不建议调整。点击开启语音分割,马上就分割好了。默认输出路径在output/slicer_opt。当然也可以使用其他切分工具切分。
切分完后文件在output\slicer_opt。打开切分文件夹,排序方式选大小,将时长超过显存数秒的音频手动切分至显存数秒以下。比如显卡是4090显存是24g,那么就要将超过24秒的音频手动切分至24s以下,音频时长太长的会爆显存。如果语音切割后还是一个文件,那是引文音频太密集了。可以调低min_interval,从300调到100基本能解决这问题。实在不行用au手动切分。
3.3音频降噪(如果原音频足够干净可以跳过这步,比如游戏中提取的干声)
如果你觉得音频足够清晰可以跳过这步,降噪对音质的破坏挺大的,谨慎使用。输入刚才切割玩的音频的文件夹,默认是output/slicer_opt文件夹。然后点击开启语音降噪。默认输出路径在output/denoise_opt。
3.4打标
为什么要打标:打标就是给每个音频配上文字,这样才能让AI学习到每个字该怎么读。这里的标指的是标注。
如果你上一步切分了或者降噪了,那么已经自动帮你填充好路径了。然后选择达摩ASR或者fast whisper。达摩ASR只能用于识别汉语和粤语,效果也最好。 fast whisper可以标注99种语言,是目前最好的英语和日语识别,模型尺寸选large V3,语种选auto自动。whisper 可以选择精度,建议选float 16,float 16比float32块,int8速度几乎和float16一样。然后点开启离线批量ASR就好了,默认输出是output/asr_opt这个路径。ASR需要一些时间,看看控制台有没有报错就好了。
如果有字幕的可以用字幕标注,准确多了。内嵌字幕或者外挂字母都可以。这个以后的学习中会进行讲解。
3.5校对标注(这步比较费时间,如果不追求极致效果可以跳过)
上一步打标会自动填写list路径,你只需要点击开启打标webui,打开后就是SubFix,从左往右从上到下依次意思是:跳转页码、保存修改、合并音频、删除音频、上一页、下一页、分割音频、保存文件、反向选择。每一页修改完都要点以下保存修改(Submit Text),如果没保存就翻页那么会重置文本,在完成退出前要点保存文件(Save File),做任何其他操作前最好先点一下保存修改(Submit Text)。合并音频和分割音频不建议使用,精度非常差。删除音频先要点击要删除的音频右边的yes,再点删除音频(Delete Audio)。删除完成后文件夹中的音频不会删除但标注已经删除了,不会加入训练集的。
4.训练
1.输出logs
来到第二个页面
先设置实验名也就是模型名,理论上可以是中文!打标结束后会自动填写路径,只要点下一键三连就可以了。
如果是英文,日语,粤语或韩语的话logs里的3-bert文件夹是空的,是正常的不用管。
2.微调训练
首先设置batch_size,sovits训练建议batch_size设置为显存的一半以下,高了会爆显存。bs并不是越高越快! batch_size也需要根据数据集大小调整,也并不是严格按照显存数一半来设置,比如6g显存需要设置为1。如果爆显存就调低。 当显卡3D占用100%的时候就是bs太高了,使用到了共享显存,速度会慢好几倍。
以下是切片长度为10s时实测的不同显存的sovits训练最大batch_size,可以对照这个设置。如果切片更长、数据集更大的话要适当减少。
在0213版本之后添加了dpo训练。dpo大幅提升了模型的效果,几乎不会吞字和复读,能够推理的字数也翻了几倍。但同时训练时显存占用多了2倍多,训练速度慢了4倍,12g以下显卡无法训练。 数据集质量要求也高了很多,如果数据集有杂音,有混响,音质差,不校对标注,那么会有负面效果。
如果你的显卡大于12g,且数据集质量较好,且愿意等待漫长的训练时间,那么可以开启dpo训练。否则请不要开启,下面是切片长度为10s时实测的不同显存的gpt训练最大batch_size。如果切片更长、数据集更大的话要适当减少。
接着设置轮数,相比V1,V2对训练集的还原更好,但也更容易学习到训练集中的负面内容。所以如果你的素材中有底噪、混响、喷麦、响度不统一、电流声、口水音、口齿不清、音质差等情况那么请不要调高SoVITS模型轮数,否则会有负面效果。GPT模型数一半情况下不高于20,建议设置10.然后先点开启SoVITS训练,训练完成后再点开GPT训练,不可以一起训练(除非你有两张卡)!如果中途中断了,直接再点开始训练就好了,会从最近的保存点开始训练。
训练的时候请ctrl+shift+esc打开任务管理器看,下拉打开选项,选择cuda。如果cuda占用为0那么就不在训练。专用GPU内存就是显存,其他的内存都是共享的,并不是真正的显存。爆显存就调低bs。或者存在过长的音频,需要重新制作数据集。
win11没有cuda打开设置--系统--显示--显示卡--默认图形设置, 关闭硬件加速GPU计划,并重启电脑。
训练完成后会显示训练完成,并且控制台显示的轮数停在设置的(总轮数-1)的轮数上。
看cuda占用需要下拉选择cuda,如果win11找不到cuda界面需要关闭硬件加速GPU计划并重启
关于学习率权重:
可以调低但不建议调高。
关于高训练轮数:
你可能会看见有人说训练了几百轮,几千轮的。但高轮数并不就是好。如果要训练高轮数请先保证数据集质量极好,标记全都经过手动校对,时长至少超过1小时才有必要拉高轮数。否则默认的十几轮效果已经很好了。
关于数据集长度:
请先保证质量!音频千万不能有杂音,要口齿清晰,响度统一,没有混响,每句话尽量完整,全部手动校对标注。30分钟内有明显提升,不建议再增加数据集长度。
情感分类
如果有超过1小时的数据集的话,可以先用Emotion2Vec或ColorSplitter情感分类后再训练。会获得更稳定更丰富的情感,不过标注一定要手动校对。
5.推理
开启推理界面
先点一下刷新模型,下拉选择模型推理,e代表轮数,s代表步数。不是轮数越高越好。选择好模型点开启TTS推理,自动弹出推理界面。如果没有弹出,复制http://0.0.0.0:9872到浏览器打开。
请严格区分轮数(Epoch)和步数(Step):1个Epoch代表训练集中的所有样本都参与了一次学习,1 Step代表进行了一次学习,由于batch size的存在,没步学习可以含有数条样本,因此,Epoch 和 Step 的换算如下:
开始推理
最上面可以切换模型,在刚练完挑模型的时候很重要
然后上传一段参考音频,建议是数据集中的音频。最好5秒。参考音频很重要!会学习语速和语气,请认真选择。参考音频的文本是参考音频说什么就填什么,语种也要对应。 在0217版本之后可以选择无参考文本模式,但非常不建议使用。
右上角有个融合音色的可选项,先将要融合的音频放在一个文件夹中然后一起拖进去(没有什么实用性的功能)
接着就是输入要合成的文本了,注意语种要对应。目前可以中英混合,日英混合和中日混合。切分建议选择四句一切,低于四句的不会切。如果凑四句一切报错就是显存太小可以按句号切。如果不切,显存越大能合成的越多。合成的过长很容易胡言乱语。
0213版本加入了top_p,top_k和temperature,保持默认就可以。这些控制的都是随机性,拉大数值,随机性会变大,建议使用默认。
关于top_p,top_k和temperature
这三个值都是用来控制采样的。在推理的时候要挑出一个最好的token,但机器并不知道哪个是最好的。于是先按照top_k挑出前几个token,top_p在top_k的基础上筛选token。最后temperature控制随机性输出。
比如总共有100个token,top_k设置5,top_p设置0.6,temperature设置为0.5。那么就会从100个token中先挑出5个概率最大的token,这五个token的概率分别是(0.3,0.3,0.2,0.2,0.1),那么再挑出累加概率不超过0.6的token(0.3和0.3),再从这两个token中随机挑出一个token输出,其中前一个token被挑选到的几率更大。以此类推。
关于重复惩罚
=1 不惩罚重复, >1时开始惩罚重复, <1时鼓励重复。 一般都设置为 >1。
如果出现吞字,重复,参考音频混入的情况,这是正常现象。改善的方法有使用较低轮数的GPT模型、合成文本再短点、换参考音频。如果一直复读估计是标注不准确的问题,手动校对后重炼即可。
6.分享模型
分享需要的模型都在SoVITS_weights_v2和GPT_weights_v2这两个文件夹。选择合适轮数的模型,记得带上参考音频一起打包成压缩文件,就可以分享了。别人只要将GPT模型(ckpt后缀)放入GPT_weights_v2文件夹,SoVITS模型(pth后缀)放入SoVITS_weights_v2文件夹就可以推理了。
7.使用别人分享的模型
将GPT模型(ckpt后缀)放入GPT_weights_v2文件夹。SoVITS模型(pth后缀)放入SoVITS_weights_v2文件夹,刷新下模型就能选择模型推理了。
8.训练第二个模型
记得把之前切片文件夹里的音频和asr文件夹里的标注文件移走,否则会一起加入训练集。训练的时候记得更换模型名!其他步骤都一样。模型还在GPT_weights_v2文件夹和SoVITS_weights_v2文件夹。
相关文章:
GPT-SoVITS学习01
1.什么是TTS TTS(Text-To-Speech)这是一种文字转语音的语音合成。类似的还有SVC(歌声转换)、SVS(歌声合成)等。 2.配置要求 GPT-SoVITS对电脑配置有较高的要求。 训练:对于Windows电脑&#…...
C语言程序环境和预处理详解
本章重点: 程序的翻译环境 程序的执行环境 详解:C语言程序的编译链接 预定义符号介绍 预处理指令 #define 宏和函数的对比 预处理操作符#和##的介绍 命令定义 预处理指令 #include 预处理指令 #undef 条件编译 程序的翻译环境和执行环…...
DBeaver执行本地的sql语句文件避免直接在客户端运行卡顿
直接在客户端运行 SQL 语句和通过加载本地文件执行 SQL 语句可能会出现不同的性能表现,原因可能包括以下几点: 客户端资源使用: 当你在客户端界面直接输入和执行 SQL 语句时,客户端可能会消耗资源来维护用户界面、语法高亮、自动完…...
【Linux】5.Linux常见指令以及权限理解(3)
文章目录 3. Linux指令如何把自己的公网IP配置到XShell里面日志3.9 时间相关的指令3.10 Cal指令3.11 find指令:(灰常重要)3.12 grep指令3.13 zip/unzip指令:3.14 tar指令(重要):打包/解包&#…...
QT鼠标、键盘事件
一、鼠标 鼠标点击 mousePressEvent 鼠标释放 mouseReleaseEvent 鼠标移动 mouseMoveEvent 鼠标双击 mouseDoubleClickEvent 鼠标滚轮 QWheelEvent 二、键盘 键盘按下 keyPressEvent 键盘松开keyReleaseEvent 一、鼠标 #include <QMouseEvent> 鼠标点击 mouse…...
LabVIEW启动时Access Violation 0xC0000005错误
问题描述 在启动LabVIEW时,可能出现程序崩溃并提示以下错误:Error 0xC0000005 (Access Violation) Access Violation错误通常是由于权限不足、文件冲突或驱动问题引起的。以下是解决此问题的全面优化方案: 解决步骤 1. 以管理员身份运行…...
WPF中组件之间传递参数的方法研究
在 WPF (Windows Presentation Foundation) 中,组件(或称为控件)之间传递参数的方法有很多种。不同的传递方式适用于不同的应用场景,具体选择取决于应用需求、性能、可维护性等因素。以下是几种常见的传递参数的方法,并…...
本地大模型工具哪家强?对比Ollama、LocalLLM、LM Studio
前言 对于AIGC的初学者, 你一定想尝试在本地搭建一个私有的开源大模型,比如常见的chatglm、llama或者qwen。在实践过程你会发现,每个模型单独配置环境,下载模型文件,还要确保它们互不干扰。这不仅耗时耗力,…...
dify 常见问题总结 2025 持续更新
任何 Dify 问题评论区留言。 问题总结 Q:模型在回答时出现异常情况该如何处理? A: 可以通过记录异常情况并分析其原因来进行处理。通常可以调整提示词、重新训练模型或增加异常处理机制来改进模型的表现。 关键词:提示词、模型、…...
贪心算法笔记
贪心算法笔记 大概内容 贪心就是对于一个问题有很多个步骤,我们在每一个步骤中都选取最优的那一个,最后得出答案。就是在一些函数中可行,但是有些比如二次函数,因为它的转折点不一定最优,就是不可行的。那么如何判断贪心呢?有这么几种 看时间复杂度,一般的就是 O ( n…...
切比雪夫插值
切比雪夫插值是一种基于切比雪夫节点的多项式插值方法,其优势是减少插值误差(特别是龙格现象:表现为高维插值时在边缘处插值误差骤增)。本文对其基本操作进行说明。 1. 切比雪夫节点 切比雪夫插值的核心是使用切比雪夫节点作为插值点。切比雪夫节点是切…...
西电-神经网络基础与应用-复习笔记
此为24年秋研究生课程复习笔记 导论 神经网络的研究方法分为 连接主义,生理学派,模拟神经计算。高度的并行、分布性,很强的鲁棒和容错性。便于实现人脑的感知功能(音频图像的识别和处理)。符号主义,心理学派,基于符号…...
【面试题】简单聊一下什么是云原生、什么是k8s、容器,容器与虚机相比优势
云原生(Cloud Native) 定义:云原生是一种构建和运行应用程序的方法,旨在充分利用云计算的优势。它涵盖了一系列技术和理念,包括容器化、微服务架构、自动化部署与管理等。特点:云原生应用程序被设计为可弹性…...
Vue 3 Diff 算法过程及基本实现方式
Vue 3 的 Diff 算法 Vue 3 使用的是一种高效的 DOM Diff 算法,主要用于在虚拟 DOM 树发生变化时,计算最小的操作以更新真实 DOM。相比 Vue 2,Vue 3 的 Diff 算法做了很多优化。 Diff 算法的背景与目的 虚拟 DOM 树的对比:在 Vue…...
EasyCVR视频汇聚平台如何配置webrtc播放地址?
EasyCVR安防监控视频系统采用先进的网络传输技术,支持高清视频的接入和传输,能够满足大规模、高并发的远程监控需求。平台支持多协议接入,能将接入到视频流转码为多格式进行分发,包括RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、W…...
PowerApps助力PowerBI实现数据写回
原文发布日期: 2019-08-01 06:03:50 0000 注:本文旨在介绍Power BI如何利用PowerApps实现用户在前端对数据源进行增删查改,关于此,你也可以在Google上找到更详细但较零散的资料 正文 在SSAS多维数据集中,开发者可以给数据开启&q…...
数据结构:DisjointSet
Disjoint Sets意思是一系列没有重复元素的集合。一种常见的实现叫做,Disjoint-set Forest可以以接近常数的时间复杂度查询元素所属集合,用来确定两个元素是否同属一个集合等,是效率最高的常见数据结构之一。 Wiki链接:https://en…...
React 元素渲染
React 元素渲染 React 是一个用于构建用户界面的 JavaScript 库,它允许开发人员创建大型应用程序,这些应用程序可以随着时间的推移而高效地更新和渲染。React 的核心概念之一是元素渲染,它描述了如何将 JavaScript 对象转换为 DOM࿰…...
【Leetcode 每日一题】3270. 求出数字答案
问题背景 给你三个 正 整数 n u m 1 num_1 num1, n u m 2 num_2 num2 和 n u m 3 num_3 num3。 数字 n u m 1 num_1 num1, n u m 2 num_2 num2 和 n u m 3 num_3 num3 的数字答案 k e y key key 是一个四位数,定义如下&…...
eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)
ACL实验(Access Control List访问控制列表)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机。 准备工作 在eNSP里面部署设备&a…...
【git】-2 分支管理
目录 一、分支的概念 二、查看、创建、切换分支 1、查看分支-git branch 2、创建分支- git branch 分支名 3、切换分支- git checkout 分支名 三、git指针 -实现分支和版本间的切换 四、普通合并分支 git merge 文件名 五、冲突分支合并 【git】-初始gi…...
硬件设计-齐纳管
目录 摘要 详情 齐纳管的工作电流、 摘要 齐纳管(Zener Diode)是一种特殊的二极管,它能够在特定的反向电压下保持电流稳定。正常情况下,二极管只允许正向电流通过,而阻止反向电流流过。而齐纳管在一定的反向电压下可…...
Github出现复杂问题 无法合并 分支冲突太多 如何复原
目录 问题再现 解决思路 当然我所指的是在 main 分支开一个新的分支 删除本地文件夹 重新克隆 开一个新分支 切换分支 下载远程分支 文件覆盖 合并到主分支 问题再现 太复杂了 无法更改 编译器现状 全部崩溃了 无法更改 即使创建一个新的分支也无济于…...
《分布式光纤传感:架设于桥梁监测领域的 “智慧光网” 》
桥梁作为交通基础设施的重要组成部分,其结构健康状况直接关系到交通运输的安全和畅通。随着桥梁建设规模的不断扩大和服役年限的增长,桥梁结构的安全隐患日益凸显,传统的监测方法已难以满足对桥梁结构健康实时、全面、准确监测的需求。分布式…...
java_抽象类最佳实践-模板设计模式
基本介绍 模板设计模式可解决的问题 最佳实践 Template类 package com.hspedu.abstract_; abstract public class Template { //抽象类-模板设计模式public abstract void job();//抽象方法public void calculateTime() {//实现方法,调用 job 方法//得到开始的时间…...
linux网络 | http结尾、理解长连接短链接与cookie
前言:本节是http章节的最后一部分,主要解释一些小概念。讲解到了HTTP的方法,表单, 重定向等等。 现在废话不多说, 开始我们的学习吧。 ps:本节内容都是概念, 知道就行, 友友们放心观…...
dtdug汇编指令练习
r 通用寄存器 m 代表内存 imm 代表立即数 r8 代表8位通用寄存器 m8 代表8位内存 imm8 代表8位立即数 mov指令练习 MOV 的语法: mov 目标操作数,源操作数 作用:拷贝源操作数到目标操作数 1、源操作数可以是立即数、通用寄存器、段寄存器、或者内存单元. 2、目标操作数…...
Windows自动化Python pyautogui RPA操作
依赖包 import time import pyautogui import pyperclip import os import psutil from pywinauto.application import Application睡眠: pyautogui.sleep(1)鼠标事件: pyautogui.moveTo(100, 100, duration0.25) pyautogui.click(100, 100, duration0.…...
Ollama私有化部署大语言模型LLM
目录 一、Ollama介绍 二、安装Ollama 1、标准安装 2、国内加速 三、升级Ollama版本 四、使用Ollama 1、启动ollama服务 systemctl start ollama.service ollama serve 2、使用ollama命令 ollama run 运行模型 ollama ps 查看正在运行的模型 ollama list 查看(本地)…...
ubuntu/kali安装c-jwt-cracker
1.下载安装包 可以去GitHub下载解压,我这直接在kali克隆下来了。(网络不好可能克隆不下来) git clone https://github.com/brendan-rius/c-jwt-cracker.git 2.如果下载的压缩包就需要进行解压,克隆的直接进入目录就好了。 unzi…...
MySql按年月日自动创建分区存储过程
-- 创建存储过程【通过数据库和表名】建立【partition_number】get分区,分区间隔为【gaps】 -- datasource 数据库名称 -- table_name 数据库表名 -- partition_number 新建分区的数量 -- partition_type 分区类型(0-按天分区,1-按月分区&…...
Spring配置文件中:密码明文改为密文处理方式(通用方法)
目录 一、背景 二、思路 A) 普通方式 B) 适合bootstrap.properties方式 三、示例 A) 普通方式(连接Redis集群) A) 普通方式(连接RocketMQ) B) 适合bootstrap.properties方式 四、总结 一、背景 SpringBoot和Sprin…...
树的模拟实现
一.链式前向星 所谓链式前向星,就是用链表的方式实现树。其中的链表是用数组模拟实现的链表。 首先我们需要创建一个足够大的数组h,作为所有结点的哨兵位。创建两个足够大的数组e和ne,一个作为数据域,一个作为指针域。创建一个变…...
计算机图形学【直线和圆的生成算法】
在计算机图形学中,光栅化是将几何图元转换成一个光栅图像(像素或点)在屏幕上输出的过程。光栅化可实现图形变为二维图像,其目的是将连续的几何图形转换为离散的像素点。光栅化算法的基本原理包括两个主要步骤:首先&…...
OpenAI 故障复盘 - 阿里云容器服务与可观测产品如何保障大规模 K8s 集群稳定性
本文作者: 容器服务团队:刘佳旭、冯诗淳 可观测团队:竺夏栋、麻嘉豪、隋吉智 一、前言 Kubernetes(K8s)架构已经是当今 IT 架构的主流与事实标准(CNCF Survey[1])。随着承接的业务规模越来越大,用户也在使…...
【深度学习】Pytorch:加载自定义数据集
本教程将使用 flower_photos 数据集演示如何在 PyTorch 中加载和导入自定义数据集。该数据集包含不同花种的图像,每种花的图像存储在以花名命名的子文件夹中。我们将深入讲解每个函数和对象的使用方法,使读者能够推广应用到其他数据集任务中。 flower_ph…...
vue js实现时钟以及刻度效果
2025.01.08今天我学习如何用js实现时钟样式,效果如下: 一、html代码如下: <template><!--圆圈--><div class"notice_border"><div class"notice_position notice_name_class" v-for"item in …...
js基础---注释与结束符
JavaScript 基础:注释与结束符 注释 注释是代码中用于解释说明的部分,不会被执行,主要有两种类型: 单行注释 符号://作用:从符号开始到该行末尾的所有内容都会被忽略,不会被执行。示例代码&…...
from pytorch3d import _C问题
离线安装pytorch3d后,先测试: import pytorch3d 没问题后,再测试: from pytorch3d import _C 单独测试会出现: ImportError: libc10.so: cannot open shared object file: No such file or directory 或者类似不…...
PHP进阶-在Ubuntu上搭建LAMP环境教程
本文将为您提供一个在Ubuntu服务器上搭建LAMP(Linux, Apache, MySQL, PHP)环境的完整指南。通过本文,您将学习如何安装和配置Apache、MySQL、PHP,并将您的PHP项目部署到服务器上。本文适用于Ubuntu 20.04及更高版本。 一、系统更新…...
SQLite 命令
关于《SQLite 命令》的文章,我可以为您提供一个概要。SQLite是一个轻量级的嵌入式关系数据库管理系统,它以单个文件的形式存储数据,非常适合用于不需要传统数据库服务器的场景。SQLite3的命令行工具(sqlite3.exe)是一个…...
ASP.NET Core 实现微服务 - Consul 配置中心
这一次我们继续介绍微服务相关组件配置中心的使用方法。本来打算介绍下携程开源的重型配置中心框架 apollo 但是体系实在是太过于庞大,还是让我爱不起来。因为前面我们已经介绍了使用Consul 做为服务注册发现的组件 ,那么干脆继续使用 Consul 来作为配置…...
自定义Java注解及其应用
上一篇博客:Java注解 写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。…...
回归预测 | MATLAB实GRU多输入单输出回归预测
回归预测 | MATLAB实GRU多输入单输出回归预测 目录 回归预测 | MATLAB实GRU多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实GRU多输入单输出回归预测。使用GRU作为RNN的一种变体来处理时间序列数据。GRU相比传统的RNN有较好的记…...
ISP流程--去马赛克详解
前言 本期我们将深入讨论ISP流程中的去马赛克处理。我们熟知,彩色图像由一个个像元组成,每个像元又由红、绿、蓝(RGB)三通道构成。而相机传感器只能感知光的强度,无法直接感知光谱信息,即只有亮暗而没有颜色…...
用户注册模块用户校验(头条项目-05)
1 用户注册后端逻辑 1.1 接收参数 username request.POST.get(username) password request.POST.get(password) phone request.POST.get(phone) 1.2 校验参数 前端校验过的后端也要校验,后端的校验和前端的校验是⼀致的 # 判断参数是否⻬全 # 判断⽤户名是否…...
【大数据】Apache Superset:可视化开源架构
Apache Superset是什么 Apache Superset 是一个开源的现代化数据可视化和数据探索平台,主要用于帮助用户以交互式的方式分析和展示数据。有不少丰富的可视化组件,可以将数据从多种数据源(如 SQL 数据库、数据仓库、NoSQL 数据库等࿰…...
如何搭建 Vue.js 开源项目的 CI/CD 流水线
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
OCR文字识别—基于PP-OCR模型实现ONNX C++推理部署
概述 PaddleOCR 是一款基于 PaddlePaddle 深度学习平台的开源 OCR 工具。PP-OCR是PaddleOCR自研的实用的超轻量OCR系统。它是一个两阶段的OCR系统,其中文本检测算法选用DB,文本识别算法选用CRNN,并在检测和识别模块之间添加文本方向分类器&a…...
国产3D CAD将逐步取代国外软件
在工业软件的关键领域,计算机辅助设计(CAD)软件对于制造业的重要性不言而喻。近年来,国产 CAD 的发展态势迅猛,展现出巨大的潜力与机遇,正逐步改变着 CAD 市场长期由国外软件主导的格局。 国产CAD发展现状 …...