位置: IT常识 - 正文

so-vits-svc3.0 中文详细安装、训练、推理使用教程(sovies)

编辑:rootadmin
so-vits-svc3.0 中文详细安装、训练、推理使用教程 SO-VITS-SVC3.0详细安装、训练、推理使用步骤

推荐整理分享so-vits-svc3.0 中文详细安装、训练、推理使用教程(sovies),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sovcl,sov/som,sovies,sov svo,sovies,sov svo,sovccer,sovccer,内容如对您有帮助,希望把文章链接给更多的朋友!

2023-3-12文档更新说明: 由于特殊原因,本项目文档将停止更新,详情请见原作者首页,感谢各位的支持!

本文档的Github项目地址 点击前往

本帮助文档为项目 so-vits-svc补档 的详细中文安装、调试、推理教程,您也可以直接选择官方README文档 撰写:Sucial 点击跳转B站主页

1. 环境依赖本项目需要的环境: NVIDIA-CUDA Python <= 3.10 Pytorch FFmpeg- Cuda

在cmd控制台里输入nvidia-smi.exe以查看显卡驱动版本和对应的cuda版本

前往 NVIDIA-Developer 官网下载与系统对应的Cuda版本 以Cuda-11.7版本为例(注:本文下述所有配置均在Cuda-11.7下演示)Cuda11.7下载地址 根据自己的系统和需求选择安装(一般本地Windows用户请依次选择Windows, x86_64, 系统版本, exe(local))

安装成功之后在cmd控制台中输入nvcc -V, 出现类似以下内容则安装成功:

nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Tue_May__3_19:00:59_Pacific_Daylight_Time_2022 Cuda compilation tools, release 11.7, V11.7.64 Build cuda_11.7.r11.7/compiler.31294372_0特别注意!目前为止pytorch最高支持到cuda11.7如果您在上述第一步中查看到自己的Cuda版本>11.7,请依然选择11.7进行下载安装(Cuda有版本兼容性)并且安装完成后再次在cmd输入nvidia-smi.exe并不会出现cuda版本变化,即任然显示的是>11,7的版本Cuda的卸载方法:**打开控制面板-程序-卸载程序,将带有NVIDIA CUDA的程序全部卸载即可(一共5个)- Python前往 Python官网 下载Python,版本需要低于3.10(详细安装方法以及添加Path此处省略,网上随便一查都有)安装完成后在cmd控制台中输入python出现类似以下内容则安装成功: Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> 配置python下载镜像源(有国外网络条件可跳过) 在cmd控制台依次执行 # 设置清华大学下载镜像 pip config set global.index-url http://pypi.tuna.tsinghua.edu.cn/simple pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn安装依赖库在任意位置新建名为requirements.txt的文本文件,输入以下内容保存 Flask==2.1.2 Flask_Cors==3.0.10 gradio==3.4.1 numpy==1.23.5 playsound==1.3.0 PyAudio==0.2.12 pydub==0.25.1 pyworld==0.3.2 requests==2.28.1 scipy==1.10.0 sounddevice==0.4.5 SoundFile==0.10.3.post1 starlette==0.19.1 tqdm==4.63.0 scikit-maad praat-parselmouth tensorboard librosa在该文本文件所处文件夹内右击空白处选择 在终端中打开 并执行下面命令以安装库(若出现报错请尝试用pip install [库名称]重新单独安装直至成功) pip install -r requirements.txt接下来我们需要单独安装torch, torchaudio, torchvision这三个库,下面提供两种方法方法1(便捷但不建议,因为我在测试这种方法过程中发现有问题,对后续配置AI有影响

直接前往 Pytorch官网 选择所需版本然后复制Run this Command栏显示的命令至cmd安装(不建议)

方法2(较慢但稳定,建议)前往该地址使用Ctrl+F搜索直接下载whl包 点击前往 https://download.pytorch.org/whl/这个项目需要的是 torch==1.13.0+cu117 torchaudio==0.13.0+cu117 torchvision-0.14.0+cu117 1.13.0 和0.13.0表示是pytorch版本,cu117表示cuda版本11.7 以此类推,请选择 适合自己的版本 安装下面我将以Cuda11.7版本为例 –示例开始–我们需要安装以下三个库torch-1.13.0+cu117点击下载:torch-1.13.0+cu117-cp310-cp310-win_amd64.whl 其中cp310指python3.10, win-amd64表示windows 64位操作系统torchaudio-0.13.0+cu117点击下载:torchaudio-0.13.0+cu117-cp310-cp310-win_amd64.whltorchvision-0.14.0+cu117点击下载:torchvision-0.14.0+cu117-cp310-cp310-win_amd64.whl下载完成后进入进入下载的whl文件的目录,在所处文件夹内右击空白处选择 在终端中打开 并执行下面命令以安装库 pip install .\torch-1.13.0+cu117-cp310-cp310-win_amd64.whl # 回车运行(安装时间较长) pip install .\torchaudio-0.13.0+cu117-cp310-cp310-win_amd64.whl # 回车运行 pip install .\torchvision-0.14.0+cu117-cp310-cp310-win_amd64.whl # 回车运行务必在出现Successfully installed ...之后再执行下一条命令,第一个torch包安装时间较长 –示例结束–so-vits-svc3.0 中文详细安装、训练、推理使用教程(sovies)

安装完torch, torchaudio, torchvision这三个库之后,在cmd控制台运用以下命令检测cuda与torch版本是否匹配

python # 回车运行 import torch # 回车运行 print(torch.__version__) # 回车运行 print(torch.cuda.is_available()) # 回车运行最后一行出现True则成功,出现False则失败,需要重新安装- FFmpeg前往 FFmpeg官网 下载。解压至任意位置并在高级系统设置-环境变量中添加Path定位至.\ffmpeg\bin(详细安装方法以及添加Path此处省略,网上随便一查都有)安装完成后在cmd控制台中输入ffmpeg -version出现类似以下内容则安装成功ffmpeg version git-2020-08-12-bb59bdb Copyright (c) 2000-2020 the FFmpeg developersbuilt with gcc 10.2.1 (GCC) 20200805configuration: [此处省略一大堆内容]libavutil 56. 58.100 / 56. 58.100libavcodec 58.100.100 / 58.100.100...2. 预训练AI- 下载项目源码

前往 so-vits-svc补档 选择32k分支(本教程针对32k)下载源代码。

解压到任意文件夹

- 下载预训练模型这部分官方文档写得很详细,我这边直接引用

hubert https://github.com/bshall/hubert/releases/download/v0.1/hubert-soft-0d54a1f4.pt G与D预训练模型 https://huggingface.co/innnky/sovits_pretrained/resolve/main/G_0.pth https://huggingface.co/innnky/sovits_pretrained/resolve/main/D_0.pth 上述三个底模如果原链接下载不了请点击下方的链接 https://pan.baidu.com/s/1uw6W3gOBvMbVey1qt_AzhA?pwd=80eo 提取码:80eo

hubert-soft-0d54a1f4.pt放入.\hubert文件夹D_0.pth和G_0.pth文件放入.\logs\32k文件夹- 准备训练样本

准备的训练数据,建议60-100条语音(格式务必为wav,不同的说话人建立不同的文件夹),每条语音控制在4-8秒!(确保语音不要有噪音或尽量降低噪音,一个文件夹内语音必须是一个人说的),可以训练出效果不错的模型

将语音连带文件夹(有多个人就多个文件夹)一起放入.\dataset_raw文件夹里,文件结构类似如下:dataset_raw├───speaker0│ ├───xxx1-xxx1.wav│ ├───...│ └───Lxx-0xx8.wav└───speaker1 ├───xx2-0xxx2.wav ├───... └───xxx7-xxx007.wav此外还需要在.\dataset_raw文件夹内新建并编辑config.json,代码如下:"n_speakers": 10 //修改数字为说话人的人数"spk":{ "speaker0": 0, //修改speaker0为第一个说话人的名字,需要和文件夹名字一样,后面的: 0, 不需要改 "speaker1": 1, //以此类推 "speaker2": 2, //以此类推}- 样本预处理下面的所有步骤若出现报错请多次尝试,若一直报错就是第一部分环境依赖没有装到位,可以根据报错内容重新安装对应的库。(一般如果正确安装了的话出现报错请多次尝试或者关机重启,肯定可以解决报错的。)1. 重采样在so-vits-svc文件夹内运行终端,直接执行: python resample.py

注意:如果遇到如下报错:

...E:\vs\so-vits-svc-32k\resample.py:17: FutureWarning: Pass sr=None as keyword args. From version 0.10 passing these as positional arguments will result in an error wav, sr = librosa.load(wav_path, None)E:\vs\so-vits-svc-32k\resample.py:17: FutureWarning: Pass sr=None as keyword args. From version 0.10 passing these as positional arguments will result in an error wav, sr = librosa.load(wav_path, None)...

请打开resample.py,修改第17行内容

# 第17行修改前如下wav, sr = librosa.load(wav_path, None)# 第17行修改后如下wav, sr = librosa.load(wav_path, sr = None)

保存,重新执行python resample.py命令

成功运行后,在.\dataset\32k文件夹中会有说话人的wav语音,之后dataset_raw文件夹就可以删除了2. 自动划分训练集,验证集,测试集,自动生成配置文件在so-vits-svc文件夹内运行终端,直接执行: python preprocess_flist_config.py出现类似以下内容则处理成功:PS E:\vs\so-vits-svc-32k> python preprocess_flist_config.py100%|██████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1993.49it/s]Writing ./filelists/train.txt100%|██████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:00<?, ?it/s]Writing ./filelists/val.txt100%|████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<?, ?it/s]Writing ./filelists/test.txt100%|████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<?, ?it/s]Writing configs/config.json3. 生成hubert和f0在so-vits-svc文件夹内运行终端,直接执行: python preprocess_hubert_f0.py出现类似以下内容则处理成功:(我这里演示时只用了20条音频)PS E:\vs\so-vits-svc-32k> python preprocess_hubert_f0.pyLoading hubert for content...Loaded hubert. 0%| | 0/20 [00:00<?, ?it/s]dataset/32k\speaker\1_01.wav 5%|████ | 1/20 [00:03<01:00, 3.20s/it]dataset/32k\speaker\1_02.wav 10%|████████ | 2/20 [00:03<00:25, 1.40s/it]dataset/32k\speaker\1_03.wav 15%|████████████ | 3/20 [00:03<00:14, 1.19it/s]dataset/32k\speaker\1_04.wav 20%|████████████████▌ | 4/20 [00:03<00:09, 1.69it/s]dataset/32k\speaker\1_05.wav 25%|████████████████████ | 5/20 [00:03<00:06, 2.39it/s]dataset/32k\speaker\1_06.wav 30%|████████████████████████ | 6/20 [00:04<00:04, 2.98it/s]dataset/32k\speaker\1_07.wav 35%|█████████████████████████████ | 7/20 [00:04<00:03, 3.48it/s]dataset/32k\speaker\1_08.wav 40%|█████████████████████████████████ | 8/20 [00:04<00:03, 3.78it/s]dataset/32k\speaker\1_09.wav 45%|█████████████████████████████████████ | 9/20 [00:04<00:02, 4.13it/s]dataset/32k\speaker\1_10.wav 50%|█████████████████████████████████████████ | 10/20 [00:04<00:02, 4.41it/s]dataset/32k\speaker\1_11.wav 55%|█████████████████████████████████████████████ | 11/20 [00:04<00:01, 4.71it/s]dataset/32k\speaker\1_12.wav 60%|█████████████████████████████████████████████████ | 12/20 [00:05<00:01, 4.93it/s]dataset/32k\speaker\1_13.wav 65%|█████████████████████████████████████████████████████ | 13/20 [00:05<00:01, 5.25it/s]dataset/32k\speaker\1_14.wav 70%|█████████████████████████████████████████████████████████ | 14/20 [00:05<00:01, 5.46it/s]dataset/32k\speaker\1_15.wav 75%|█████████████████████████████████████████████████████████████▌ | 15/20 [00:05<00:00, 6.19it/s]dataset/32k\speaker\1_16.wav 80%|█████████████████████████████████████████████████████████████████▌ | 16/20 [00:05<00:00, 5.84it/s]dataset/32k\speaker\1_17.wav 85%|█████████████████████████████████████████████████████████████████████ | 17/20 [00:06<00:00, 5.43it/s]dataset/32k\speaker\1_18.wav 90%|█████████████████████████████████████████████████████████████████████████ | 18/20 [00:06<00:00, 5.27it/s]dataset/32k\speaker\1_19.wav 95%|█████████████████████████████████████████████████████████████████████████████ | 19/20 [00:06<00:00, 5.26it/s]dataset/32k\speaker\1_20.wav100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:06<00:00, 3.03it/s]4. 修改配置文件和部分源代码打开上面第二步过程中生成的配置文件.\configs\config.json修改第13行代码"batch_size"的数值。这边解释一下"batch_size": 12,数值12要根据自己电脑的显存(任务管理器-GPU-专用GPU内存)来调整修改建议 6G显存 建议修改成2或3 8G显存 建议修改成4 "batch_size"参数调小可以解决显存不够的问题修改train.py# 第60行将nccl改成gloo(如果后续开始训练时gloo报错就改回nccl,一般不会报错)# 修改前如下 dist.init_process_group(backend='nccl', init_method='env://', world_size=n_gpus, rank=rank)# 修改后如下 dist.init_process_group(backend='gloo', init_method='env://', world_size=n_gpus, rank=rank)# 第44行开始# 修改前如下 n_gpus = torch.cuda.device_count() os.environ['MASTER_ADDR'] = 'localhost' os.environ['MASTER_PORT'] = hps.train.port#修改后增加代码后如下 n_gpus = torch.cuda.device_count() os.environ['MASTER_ADDR'] = 'localhost' os.environ['MASTER_PORT'] = hps.train.port os.environ["CUDA_VISIBLE_DEVICES"] = "0" # 这里的0代表GPU0是用来训练的显卡,不知道是0还是1的可以在任务管理器查看,如果是双显卡的话一定要选择适合的显卡 os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "max_split_size_mb:32" # 这里的32如果懂的话也可以修改,不懂别改3. 开始训练在so-vits-svc文件夹内运行终端,直接执行下面命令开始训练 注意:开始训练前建议重启一下电脑清理内存和显存,并且关闭后台游戏,动态壁纸等等软件,最好只留一个cmd窗口 python train.py -c configs/config.json -m 32k出现以下报错就是显存不够了torch.cuda.OutOfMemoryError: CUDA out of menory. Tried to allocate 16.80 MiB (GPU 0; 8.0 GiB total capacity; 7.11 Gi8 already allocated; 0 bytes free; 7.30 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_cUDA_ALLOC_CONF# 注意:一定是 0 bytes free < Tried to allocate 16.80 MiB 才是显存不足,不然就是别的问题这边报错可能会比较多,如果出现报错先尝试重新执行python train.py -c configs/config.json -m 32k,多重试几遍,或者关机重启,一般是会成功的。如果报错一直是同一个报错,那就是对应的那里出问题了(要靠报错找问题所在)成功执行以后应该是类似如下内容:2023-02-08 18:07:42,439 32k INFO {'train': {'log_interval': 200, 'eval_interval': 1000, 'seed': 1234, 'epochs': 10000, 'learning_rate': 0.0001, 'betas': [0.8, 0.99], 'eps': 1e-09, 'batch_size': 2, 'fp16_run': False, 'lr_decay': 0.999875, 'segment_size': 17920, 'init_lr_ratio': 1, 'warmup_epochs': 0, 'c_mel': 45, 'c_kl': 1.0, 'use_sr': True, 'max_speclen': 384, 'port': '8001'}, 'data': {'training_files': 'filelists/train.txt', 'validation_files': 'filelists/val.txt', 'max_wav_value': 32768.0, 'sampling_rate': 32000, 'filter_length': 1280, 'hop_length': 320, 'win_length': 1280, 'n_mel_channels': 80, 'mel_fmin': 0.0, 'mel_fmax': None}, 'model': {'inter_channels': 192, 'hidden_channels': 192, 'filter_channels': 768, 'n_heads': 2, 'n_layers': 6, 'kernel_size': 3, 'p_dropout': 0.1, 'resblock': '1', 'resblock_kernel_sizes': [3, 7, 11], 'resblock_dilation_sizes': [[1, 3, 5], [1, 3, 5], [1, 3, 5]], 'upsample_rates': [10, 8, 2, 2], 'upsample_initial_channel': 512, 'upsample_kernel_sizes': [16, 16, 4, 4], 'n_layers_q': 3, 'use_spectral_norm': False, 'gin_channels': 256, 'ssl_dim': 256, 'n_speakers': 2}, 'spk': {'Sucial': 0}, 'model_dir': './logs\\32k'}2023-02-08 18:07:42,440 32k WARNING E:\vs\so-vits-svc-32k is not a git repository, therefore hash value comparison will be ignored.2023-02-08 18:07:45,451 32k INFO Loaded checkpoint './logs\32k\G_0.pth' (iteration 1)2023-02-08 18:07:45,998 32k INFO Loaded checkpoint './logs\32k\D_0.pth' (iteration 1)2023-02-08 18:07:55,722 32k INFO Train Epoch: 1 [0%]2023-02-08 18:07:55,723 32k INFO [1.376741886138916, 3.908522129058838, 12.127800941467285, 35.539894104003906, 4.270486354827881, 0, 0.0001]2023-02-08 18:08:01,381 32k INFO Saving model and optimizer state at iteration 1 to ./logs\32k\G_0.pth2023-02-08 18:08:02,344 32k INFO Saving model and optimizer state at iteration 1 to ./logs\32k\D_0.pth2023-02-08 18:08:19,482 32k INFO ====> Epoch: 12023-02-08 18:08:40,093 32k INFO ====> Epoch: 22023-02-08 18:09:01,010 32k INFO ====> Epoch: 32023-02-08 18:09:21,715 32k INFO ====> Epoch: 42023-02-08 18:09:42,242 32k INFO ====> Epoch: 52023-02-08 18:10:02,528 32k INFO ====> Epoch: 62023-02-08 18:10:22,965 32k INFO ====> Epoch: 72023-02-08 18:10:29,149 32k INFO Train Epoch: 8 [14%]2023-02-08 18:10:29,150 32k INFO [2.378505229949951, 2.3670239448547363, 10.534687042236328, 19.235595703125, 1.8958038091659546, 200, 9.991253280566489e-05]2023-02-08 18:10:43,388 32k INFO ====> Epoch: 82023-02-08 18:11:03,722 32k INFO ====> Epoch: 92023-02-08 18:11:23,859 32k INFO ====> Epoch: 10...出现类似以上的内容就说明是在开始训练了(显存会直接爆满)。停止训练有下面两种方法:按Ctrl+C直接右上角叉掉 在控制台中运行 python train.py -c config/config.json -m 32k即可继续训练- 日志及训练次数的查看日志保存的位置:.\logs\32k\train.log 阅读举例:# 示例32023-02-08 18:32:24,942 32k INFO [2.252035617828369, 2.5846095085144043, 8.220404624938965, 5 17.75478744506836, 0.9781494140625, 2000, 9.911637167309565e-05]2023-02-08 18:32:28,889 32k INFO Saving model and optimizer state at iteration 72 to ./logs\32k\G_2000.pth2023-02-08 18:32:29,661 32k INFO Saving model and optimizer state at iteration 72 to ./logs\32k\D_2000.pth# 示例12023-02-08 18:32:39,907 32k INFO ====> Epoch: 722023-02-08 18:33:00,099 32k INFO ====> Epoch: 732023-02-08 18:33:20,682 32k INFO ====> Epoch: 74 2023-02-08 18:33:40,887 32k INFO ====> Epoch: 752023-02-08 18:34:01,460 32k INFO ====> Epoch: 762023-02-08 18:34:21,798 32k INFO ====> Epoch: 772023-02-08 18:34:41,866 32k INFO ====> Epoch: 782023-02-08 18:34:54,712 32k INFO Train Epoch: 79 [57%]# 示例22023-02-08 18:34:54,712 32k INFO [2.282658100128174, 2.5492446422576904, 10.027194023132324, 15.401838302612305, 1.598284363746643, 2200, 9.902967736366644e-05]

以下的解释我引用了B站up主inifnite_loop的解释,相关视频 相关专栏

需要关注两个参数:Epoch和global_step Epoch表示迭代批次,每一批次可以看作一个迭代分组 Global_step表示总体迭代次数两者的关系是global_step = 最多语音说话人的语音数 / batch_size * epoch batch_size是配置文件中的参数示例1: 每一次迭代输出内 ====> Epoch: 74表示第74迭代批次完成示例2: Global_step每200次输出一次 (配置文件中的参数log_interval)示例3: Global_step每1000次输出一次(配置文件中的参数eval_interval),会保存模型到新的文件一般情况下训练10000次(大约2小时)就能得到一个不错的声音模型了- 保存的训练模型

以上,我们谈论到了每1000次迭代才会保存一次模型样本,那么,这些样本保存在哪里呢?如何处理这些样本呢?下面我将详细讲述。

训练模型保存位置:.\logs\32k训练一定时间后打开这个路径,你会发现有很多文件:D_0.pthD_1000.pthD_2000.pthD_3000.pthD_4000.pth...G_0.pthG_1000.pthG_2000.pthG_3000.pthG_4000.pth...如果你的硬盘空间不足,那么只要留下最后一次的G和D就可以了,前面的都可以删除(但是不要删别的文件)4. 推理使用

按上述方法训练得到最后一次的G和D后,该如何使用这些模型呢?下面我将讲述具体的使用操作方法

- 准备干声准备一首歌的干声,干声可以靠软件提取,我这边推荐的是Ultimate Vocal Remover,该软件开源并且可以在Github上下载到。下载地址用音频处理软件(如Au,Studio One等)将这个干声分成若干段不超过40秒的片段并且一一保存将你处理好的干声片段放入.\raw文件夹- 修改推理代码打开inference_main.py,修改第17-27行,具体修改内容如下:model_path = "logs/32k/G_10000.pth" # 这里改成你最新训练出来的G模型路径config_path = "configs/config.json"svc_model = Svc(model_path, config_path)infer_tool.mkdir(["raw", "results"])# 支持多个wav文件,放在raw文件夹下clean_names = ["vocals_01", "vocals_02","vocals_03"] # 这里修改成你要处理的干声片段的文件名,支持多个文件trans = [0] # 音高调整,支持正负(半音)spk_list = ['Sucial'] # 这里是说话人的名字,之前准备训练样本的文件夹名字slice_db = -40 # 默认-40,嘈杂的音频可以-30,干声保留呼吸可以-50wav_format = 'wav' # 音频输出格式如果下一步推理生成时出现错误,请尝试以下修改:(感谢kahotv提供建议) 详细信息#inference_main.py line35 第35行,wav_path = Path(raw_audio_path).with_suffix('.wav')#改为wav_path = str(Path(raw_audio_path).with_suffix('.wav'))- 推理生成修改完成后保存代码,在so-vits-svc文件夹内运行终端,执行下面命令开始推理生成 python .\inference_main.py待黑窗口自动关闭后,推理生成完成。生成的音频文件在.\results文件夹下如果听上去效果不好,就多训练模型,10000次不够就训练20000次- 后期处理将生成的干音和歌曲伴奏(也可以通过Ultimate Vocal Remover提取)导入音频处理软件&宿主软件(如Au,Studio One等)进行混音和母带处理,最终得到成品。5. 感谢名单以下是对本文档的撰写有帮助的感谢名单: so-vits-svc 官方源代码和帮助文档 B站up主inifnite_loop 相关视频 相关专栏 所有提供训练音频样本的人员
本文链接地址:https://www.jiuchutong.com/zhishi/292303.html 转载请保留说明!

上一篇:曲折的tensorflow安装过程(Tensorflow 安装问题的解决)(曲折的拼音)

下一篇:黑白相间的腰带盖洛韦牛,苏格兰 (© JohnFScott/Getty Images)(黑白相间表带)

  • 编码器的作用是(直流编码电机中编码器的作用是)

    编码器的作用是(直流编码电机中编码器的作用是)

  • 拼多多中评对店铺有影响吗(拼多多中评怎么改好评)

    拼多多中评对店铺有影响吗(拼多多中评怎么改好评)

  • 微信可以申请几个号(微信可以申请几次好友)

    微信可以申请几个号(微信可以申请几次好友)

  • 苹果11视频有回音什么原因呢(苹果11视频有回音什么原因)

    苹果11视频有回音什么原因呢(苹果11视频有回音什么原因)

  • iphone连接wifi同时作为热点(连同样的wifi为什么苹果手机网速慢)

    iphone连接wifi同时作为热点(连同样的wifi为什么苹果手机网速慢)

  • 什么叫以附件形式提交(什么叫以附件形式上传)

    什么叫以附件形式提交(什么叫以附件形式上传)

  • 华为手机智慧语音是什么(华为手机智慧语音叫什么名字)

    华为手机智慧语音是什么(华为手机智慧语音叫什么名字)

  • fn+esc键是什么意思(fn和esc在一个键)

    fn+esc键是什么意思(fn和esc在一个键)

  • 华为平板matepad pro可以用windows系统吗(华为平板matepadpro12.6英寸)

    华为平板matepad pro可以用windows系统吗(华为平板matepadpro12.6英寸)

  • 访问限制是什么意思(访问限制是什么意思退不了ID)

    访问限制是什么意思(访问限制是什么意思退不了ID)

  • 荣耀9x拍照怎么设置(荣耀9x拍照怎么设置4800万像素)

    荣耀9x拍照怎么设置(荣耀9x拍照怎么设置4800万像素)

  • 由rtc唤醒是什么意思(bios rtc唤醒设置)

    由rtc唤醒是什么意思(bios rtc唤醒设置)

  • 主图加水印影响权重吗(主图水印可以自己设置吗)

    主图加水印影响权重吗(主图水印可以自己设置吗)

  • iphone录屏怎么横过来(苹果手机屏幕录制怎么横屏)

    iphone录屏怎么横过来(苹果手机屏幕录制怎么横屏)

  • 苹果x面容id密码忘了怎么办(平果x面容id和密码)

    苹果x面容id密码忘了怎么办(平果x面容id和密码)

  • 天眼查是什么(天眼查是什么时候上线的)

    天眼查是什么(天眼查是什么时候上线的)

  • 4G手机能办5G套餐吗(4g手机可以办5g套餐)

    4G手机能办5G套餐吗(4g手机可以办5g套餐)

  • id软件的全称是什么(id软件介绍)

    id软件的全称是什么(id软件介绍)

  • 怎么卸载电脑软件(怎么卸载电脑软件才能卸载干净)

    怎么卸载电脑软件(怎么卸载电脑软件才能卸载干净)

  • 月亮视频怎么下载(月亮视频怎么下载到相册)

    月亮视频怎么下载(月亮视频怎么下载到相册)

  • 怎么恢复手机微信聊天记录(怎么恢复手机微信删除的照片和视频)

    怎么恢复手机微信聊天记录(怎么恢复手机微信删除的照片和视频)

  • 小米2s为什么不能下载微信(小米2s为什么不能安装微信)

    小米2s为什么不能下载微信(小米2s为什么不能安装微信)

  • 如何加微信(如何加微信号)

    如何加微信(如何加微信号)

  • 阿里巴巴跟淘宝有什么区别(阿里巴巴跟淘宝哪个便宜)

    阿里巴巴跟淘宝有什么区别(阿里巴巴跟淘宝哪个便宜)

  • Windows7纯净版系统防止流氓软件在自己电脑上随意(win7纯净版系统官网)

    Windows7纯净版系统防止流氓软件在自己电脑上随意(win7纯净版系统官网)

  • 固定资产一次性折旧的账务处理和税务处理
  • 全国税务师考试报名时间
  • 公司缴纳养老保险不在个人账户里吗
  • 材料入库结转成本的会计分录怎么写
  • 小规模小于30万免税会计分录
  • 印花税和增值税一起扣款有影响吗
  • 小规模纳税人预缴税款怎么填申报表
  • 没有发票的福利有哪些
  • 公司打到个人账户需要多久
  • 公司用的摄像头
  • 手机银行电子回单生成器
  • 政府往来账
  • 职工福利基金提取规定
  • 企业合并会计处理方法研究论文
  • 增值税检查调整科目已经删除
  • 代开的专票作废了怎么做账?
  • 开票资料电话可以查到吗
  • 公司支付广告费怎么入账
  • 应付票据属于什么类账户
  • 上年留抵增值税怎么做账
  • 土地出让金11%抵扣进项税的账务处理?
  • 长期待摊费用与折旧区别
  • 小微企业应纳税所得额不超过100万
  • 委托代销商品账簿模板
  • 王者荣耀中牛魔王的技能
  • 应收账款平均余额怎么理解
  • 待清算商户消费款项是什么
  • 收回已核销的坏账并入账
  • 缴纳当月增值税30000元
  • vue slot标签
  • windows10护眼色设置
  • 赠送积分有两种形式
  • 营业外支出包括哪些科目
  • php开启pdo
  • 橡皮树怎么养护
  • 增值税按简易计价方式
  • 往来账怎么处理
  • 取得增值税发票的认证期限是多久?
  • 北极野生动物
  • 个体工商户如何给员工交社保
  • 启动电容坏了的表现
  • CSS: overflow-anchor 固定滚动到底部,随着页面内容增多滚动条自己滚动展示最新的内容
  • php全局函数
  • java如何实现异步处理
  • redis主从复制如何保证不丢失数据
  • look 查明
  • 个体工商户一年要交多少税
  • 标书注意事项与如何制作标书
  • 公司一季度报表
  • 土地入固定资产计提折旧吗
  • 残保金提取是什么意思
  • 债务重组账务记忆口诀
  • 银行承兑汇票收款人是谁
  • 税务局手续费返还什么时间到账
  • 行政事业单位的营业执照叫什么
  • 企业股东撤资如何清算
  • 技术服务费计入主营业务成本
  • 企业固定资产内部控制风险防范体系的构建原则
  • 银行扣掉的手续费怎么算
  • 增值税年末一定要结转吗
  • 会计基本前提包括会计主体货币计量资料完整和经济效益
  • 商业企业购进商品的分录
  • sql server执行语句
  • sql语句大全实例教程
  • CentOS7的hostnamectl命令使用详解
  • 苹果7开发者模式怎么打开
  • wfxswtch.exe - wfxswtch是什么进程
  • pvlsvr.exe - pvlsvr是什么进程 有什么用
  • msng.exe是什么
  • Win10预览版更新弹窗如何关闭
  • 只用html和css
  • 微信和qq时间格式不一样
  • unity3d总结
  • 云南省电子税务局怎么改号码
  • 完税证明和发票的关系
  • 开票软件中如何打印已开具的发票
  • 深圳个税官网
  • 所得税 营业税计算公式
  • 税收优惠政策有哪些企业
  • 河北个体户个人缴税标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设