首页/新闻资讯/正文详情

ESPnet2 SIWIS 法语单讲者 TTS 配方实战:从语料准备到 Tacotron2 / Transformer 训练

发布时间:2026/9/25 5:10:42 来源:云帆数科 栏目:资讯中心
ESPnet2 SIWIS 法语单讲者 TTS 配方实战:从语料准备到 Tacotron2 / Transformer 训练
人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载本篇指南基于 ESPnet2 的 SIWIS TTS recipe讲解如何在法语女性单讲者语料 SIWIS 上完成端到端语音合成模型的完整训练流程语料下载与 Kaldi 风格数据准备、g2p 音素化、统计量收集、Tacotron2/Transformer 模型训练、解码合成与 VERSA 评测。读完本文你可以复现 recipe 中的初始实验并理解 run.sh 与 tts.sh 之间参数传递的完整机制。1. 语料与 Recipe 定位SIWIS 是一个法语女性单讲者single speaker朗读语料托管于爱丁堡大学数据共享平台dataset 编号 DS_10283_2353。本 recipe 的目标是在该语料上训练 ESPnet2 的 TTS 模型README 同时给出了两个已发布预训练模型的说明Zenodo 存档siwis_tts_train_tacotron2_raw_phn_none_train.loss.aveTacotron2siwis_tts_train_transformer2_raw_phn_none_train.loss.aveTransformer从模型命名可以读出 recipe 的关键配置组合rawfeats_typeraw、phntoken_typephn、nonecleaner 与 g2p 在训练阶段均为 none音素化在数据准备阶段离线完成。recipe 目录的核心文件如下文件作用run.sh入口脚本指定语料、特征参数并调用 tts.shtts.sh通用 TTS 流程脚本定义 stage 1–11 的完整流水线conf/train.yaml默认训练配置Tacotron2conf/decode.yaml默认解码配置conf/tuning/Transformer、Tacotron2 变体、Conformer-FastSpeech2 等调参配置local/data.sh语料下载 Kaldi 数据目录构建 音素化local/data_prep.sh生成 wav.scp / utt2spk / text / segmentslocal/data_download.sh下载并解压 SIWIS 语料db.sh语料路径声明SIWISdownloads表示支持自动下载更通用的 TTS 流程含 FastSpeech、VITS、text2wav 等训练方式参见模板文档 egs2/TEMPLATE/tts1/README.md本 recipe 的 README 中列出的“How to run / FastSpeech / FastSpeech2 / VITS / joint text2wav”均指向该文档对应章节。2. 数据准备db.sh、下载与数据目录构建2.1 语料路径声明db.sh 中一行SIWISdownloads表明语料可从downloads/目录自动获取[local/data.sh](https://link.gitcode.com/i/7a094d1c3003ce4aa614bf8467c12ae0)开头会检查该变量是否已设置未设置则报错退出。若你想改用本地已下载的语料可以把该值改为本地绝对路径。2.2 下载local/data_download.shlocal/data_download.sh 的逻辑很简单若目标目录中不存在SiwisFrenchSpeechSynthesisDatabase/则从爱丁堡数据共享平台wget语料压缩包DS_10283_2353.zip并两级解压外层 zip 内还包含SiwisFrenchSpeechSynthesisDatabase.zip若已存在则跳过。解压后的标准目录名是SiwisFrenchSpeechSynthesisDatabase这也是后续data_prep.sh的输入。2.3 Kaldi 数据目录local/data_prep.shlocal/data_prep.sh 接收三个参数db_root data_dir subset被 data.sh 以如下方式调用nameSiwisFrenchSpeechSynthesisDatabase local/data_prep.sh ${db_root}/${name} data/all 1,2,3它遍历语料的lists/lab.part{1,2,3}_all.list按 part 目录wavs/partN/、text/partN/、labs/partN/生成四类 Kaldi 风格文件wav.scputtid wav路径utt2spk所有 utt 的讲者均记为SIWIS单讲者语料随后转换为spk2utttextuttid 转写文本并用 perl 将 UTF-8 空白统一替换为普通空格、删除空行segments起止时间从.lab文件的第一行与最后一行时间戳换算得到原始时间戳除以 10^7 转为秒。最后调用utils/fix_data_dir.sh校验一致性。2.4 数据集划分与音素化local/data.shlocal/data.sh 的 stage 流程stage -1调用data_download.sh下载语料stage 0调用data_prep.sh生成data/allstage 1划分数据集——从data/all中随机取 500 条作为deveval其中前 250 条为dev、后 250 条为eval1其余全部为训练集tr_no_dev用filter_scp.pl --exclude排除 dev/eval 的 wavstage 2仅当--text_format phn对 train/dev/eval 各拷贝出dset_phn目录并用pyscripts/utils/convert_text_to_phn.py --g2p espeak_ng_french把文本离线转换为音素序列。这里的关键设计是音素化在数据准备阶段一次性完成。由于 recipe 是法语g2p 选用espeak_ng_french。3. 入口脚本 run.sh 的参数设计run.sh 全部逻辑如下所示节选核心变量# Feature related fs24000 n_fft2048 n_shift300 win_length1200 # Data prep related text_formatphn # Use raw or phn. If use phn, convert to phn in data prep. local_data_opts --text_format ${text_format} if [ ${text_format} phn ]; then local_data_opts --g2p espeak_ng_french fi dset_suffix if [ ${text_format} phn ]; then dset_suffix_phn fi train_settr_no_dev${dset_suffix} valid_setdev${dset_suffix} test_setsdev${dset_suffix} eval1${dset_suffix} # config related train_configconf/train.yaml inference_configconf/decode.yaml # NOTE(kan-bayashi): Make sure that you use text_formatraw # if you want to use token_typechar. token_typephn # NOTE(kan-bayashi): On-the-fly with Espeak is really slow, # so we convert text into phn in data prep stage via # --text_formatphn and use g2pnone for training. # g2pespeak_ng_french g2pnone ./tts.sh \ --local_data_opts ${local_data_opts} \ --audio_format wav \ --lang fr \ --feats_type raw \ --fs ${fs} --n_fft ${n_fft} --n_shift ${n_shift} --win_length ${win_length} \ --token_type ${token_type} \ --cleaner none \ --g2p ${g2p} \ --train_config ${train_config} \ --inference_config ${inference_config} \ --train_set ${train_set} \ --valid_set ${valid_set} \ --test_sets ${test_sets} \ --srctexts data/${train_set}/text \ $几个要点采样率 24 kHzSIWIS 原始采样率即为 24 kHz因此fs24000STFT 参数n_fft2048, n_shift300, win_length1200决定了 mel 谱的帧率与分辨率。token_typephntext_formatphng2pnone三者联动脚本注释明确说明训练时在线跑 espeak 非常慢因此音素化前置到数据准备阶段text_formatphn训练阶段g2pnone表示 token 已是音素、无需再做 g2p。若你想训练token_typechar的字符级模型必须改用text_formatraw。cleaner none语料文本已经是规整的朗读转写无需文本清洗lang fr标记语言类型为法语。feats_type raw训练时直接从 wav 在线提取 mel 特征on-the-fly而不是使用预提取的 fbank 文件这也是 TTS recipe 的推荐方式因为模型需要 pitch/energy 等附加信息如 FastSpeech2 场景。末尾的$允许透传追加参数例如./run.sh --stage 7可以只执行训练阶段。4. tts.sh 流水线11 个 stage 全解析tts.sh 是所有 ESPnet2 TTS recipe 共享的流程脚本SIWIS 的run.sh只是它的一个具体实例化。其 stage 结构如下Stage名称对应实现1数据准备调用 local/data.sh2wav.scp 格式化scripts/audio/format_wav_scp.sh将训练/验证集输出到dump/raw/org/测试集输出到dump/raw/并写入feats_type标记文件3说话人嵌入 / speaker id / lang id本 recipe 均为关闭状态use_spk_embedfalse、use_sidfalse、use_lidfalse脚本会打印“Skip Stage 3.1”4过滤超长/过短数据按min_wav_duration0.1s/max_wav_duration20sfs换算为样本数过滤utt2num_samples并剔除空文本5生成 token_listpython -m espnet2.bin.tokenize_text输入--srctexts即data/tr_no_dev_phn/text输出到dump/token_list/phn/tokens.txt并追加blank:0、unk:1、sos/eos:-1三个保留符号6统计量收集espnet2.bin.tts_train --collect_stats true并行收集 speech/text shape 与 mel 均值方差aggregate_stats_dirs聚合后写入exp/tts_stats_raw_phn/7训练通过espnet2.bin.launch支持多机多卡最终调用espnet2.bin.tts_train8解码并行espnet2.bin.tts_inference输出 wav、norm/denorm 特征、att_ws、durations 等9VERSA 评测python -m versa.bin.scorerpyscripts/utils/aggregate_eval.pyshow_tts_results.sh10模型打包espnet2.bin.pack tts将模型与统计文件打成 zip默认skip_packingtrue跳过11上传 HuggingFace默认skip_upload_hftrue跳过需设置hf_repo且已安装 git-lfs4.1 默认关闭的开关tts.sh 顶部默认值中对本 recipe 特别重要的有skip_data_prepfalse skip_trainfalse skip_evalfalse skip_packingtrue # 默认不打包 skip_upload_hftrue # 默认不上传 feats_typeraw # 只支持 raw use_spk_embedfalse # 单讲者无需说话人嵌入 use_sidfalse # --use_sid 与 --use_spk_embed 互斥脚本会检查并报错4.2 训练阶段的关键细节stage 7从源码可以看到 stage 7 的分支逻辑AR 模型Tacotron2/Transformer默认路径传入text,text,text与wav.scp,speech,sound并按speech_fold_length800帧 ×n_shift计算_fold_length用于batch_typefolded的批量构造非 AR 模型FastSpeech需--teacher_dumpdir若 teacher 输出了probs知识蒸馏则用蒸馏目标否则 teacher forcing 使用 ground truth 的 durations 原始 wav。此外若 stage 6 收集到pitch_stats.npz/energy_stats.npzstage 7 会自动追加--pitch_normalize_conf stats_file...与--energy_normalize_conf stats_file...这一机制正是 FastSpeech2 配置能生效的前提。训练命令形如python -m espnet2.bin.launch \ --cmd ${cuda_cmd} --name ${jobname} \ --log ${tts_exp}/train.log \ --ngpu ${ngpu} --num_nodes ${num_nodes} \ --multiprocessing_distributed true -- \ python -m espnet2.bin.tts_train \ --use_preprocessor true \ --token_type phn --token_list ${token_list} \ --cleaner none --g2p none \ --normalize global_mvn \ --fold_length 150 --fold_length ${_fold_length} \ --output_dir ${tts_exp} --resume true \ --config conf/train.yaml ${train_args}实验目录默认命名为exp/tts_train_tacotron2_raw_phntag 由训练配置文件名 feats_type token_type 拼成与 README 中发布的预训练模型命名完全对应。4.3 解码阶段stage 8解码默认模型为inference_modeltrain.loss.ave.pth并行度inference_nj32。vocoder_file默认none此时用 Griffin-Lim 从 mel 谱重建波形若训练了 WaveRNN 等神经声码器可指定其参数文件。解码输出的exp/tts_*/inference/dset/wav/即最终合成语音同时生成att_ws/注意力权重图、durations、focus_rates等诊断文件。5. 训练配置详解conf/train.yamlTacotron2conf/train.yaml 是本 recipe 的默认配置注释说明其在单张 12 GB 显存的 GPU 上训练约 1 天Titan V。全文参数分三块5.1 模型结构tts_conftts: tacotron2 tts_conf: embed_dim: 512 # 音素嵌入维度 elayers: 1 # 编码器 BLSTM 层数 eunits: 512 # 编码器 BLSTM 单元数 econv_layers: 3 # 编码器卷积层数 econv_chans: 512 # 编码器卷积通道数 econv_filts: 5 # 编码器卷积核大小 atype: location # 注意力类型location-aware adim: 512 # 注意力内部维度 aconv_chans: 32 # 注意力卷积通道数 aconv_filts: 15 # 注意力卷积核大小 cumulate_att_w: true # 累计注意力权重防止重复 dlayers: 2 # 解码器 LSTM 层数 dunits: 1024 # 解码器 LSTM 单元数 prenet_layers: 2 # prenet 层数 prenet_units: 256 # prenet 单元数 postnet_layers: 5 # postnet 卷积层数 postnet_chans: 512 # postnet 通道数 postnet_filts: 5 # postnet 卷积核大小 output_activation: null # 输出层激活函数 use_batch_norm: true # 编码器使用 BN use_concate: true # 拼接编码器输出与解码器隐状态 use_residual: false # 编码器残差连接 dropout_rate: 0.5 zoneout_rate: 0.1 reduction_factor: 1 spk_embed_dim: null # 单讲者不注入说话人嵌入 use_masking: true # padding 位置掩码 bce_pos_weight: 5.0 # 停止预测 BCE 正样本权重 use_guided_attn_loss: true # 引导注意力损失加速对角注意力学习 guided_attn_loss_sigma: 0.4 guided_attn_loss_lambda: 1.0两个值得注意的点guided attention loss配置文件头部注释指出相比原 Tacotron2 论文本配置额外启用了引导注意力损失用于加速注意力对角线的收敛停止预测头bce_pos_weight: 5.0用于缓解停止帧样本不均衡问题这也是推理时threshold: 0.5的判停依据。5.2 优化器optim: adam optim_conf: lr: 1.0e-03 eps: 1.0e-06 weight_decay: 0.05.3 训练超参num_iters_per_epoch: 500 max_epoch: 200 grad_clip: 1.0 grad_noise: false accum_grad: 1 batch_bins: 3750000 # feats_typeraw 下的 batch bins约等于 n_shift 折算后的帧数预算 batch_type: numel sort_in_batch: descending sort_batch: descending num_workers: 1 train_dtype: float32 log_interval: null keep_nbest_models: 5 num_att_plot: 3 # 每次 checkpoint 保存 3 张注意力图 seed: 0 best_model_criterion: - - valid - loss - min - - train - loss - minbatch_type: numel意味着每个 batch 按“总元素数 ≤ batch_bins”装箱sort_in_batch/sort_batch: descending使长样本排在前面以减少 pad 浪费best_model_criterion双条件valid loss 与 train loss 均取最小决定了valid.loss.ave.pth/train.loss.ave.pth的保存策略README 中发布的正是train.loss.ave权重。6. 解码配置与调参配置6.1 conf/decode.yamlconf/decode.yaml 适用于 Tacotron2注释说明也可用于 Transformer但 Transformer 不支持 attention constraintthreshold: 0.5 # 停止生成阈值停止预测头 sigmoid 输出 maxlenratio: 10.0 # 最大生成长度 输入长度 * 10 minlenratio: 0.0 # 最小生成长度 use_att_constraint: false # Deep Voice 3 的注意力约束 backward_window: 1 # 约束的向后窗口 forward_window: 3 # 约束的向前窗口 use_teacher_forcing: false # 是否 teacher forcing配置文件注释给了实用建议若合成中出现字符重复或缺失可尝试use_att_constraint: true提升稳定性。6.2 conf/tuning/ 下的备选配置tuning 目录 提供了几组可直接通过--train_config切换的实验配置train_transformer.yamlTransformer TTS对应已发布的transformer2预训练模型train_tacotron2.yamlTacotron2 的另一组调参配置train_conformer_fastspeech2.yamlConformer 编解码器的 FastSpeech2注释说明其采用类似 FastPitch 的 token 平均 pitch/energy不做量化显存 12 GB、Titan V 上约 4 天。其要点tts: fastspeech2 tts_conf: adim: 384 aheads: 2 elayers: 4 eunits: 1536 dlayers: 4 dunits: 1536 encoder_type: conformer decoder_type: conformer conformer_enc_kernel_size: 7 conformer_dec_kernel_size: 31 # ...duration/pitch/energy predictor 及 dropout 等完整参数见文件 pitch_extract: dio pitch_normalize: global_mvn energy_extract: energy energy_normalize: global_mvn optim: adam optim_conf: lr: 1.0 scheduler: noamlr scheduler_conf: model_size: 384 warmup_steps: 4000 batch_bins: 12000000该配置要求feats_typeraw因为要在线提取 pitch/energy。此外还有 decode_tacotron2.yaml 与 decode_fastspeech.yaml 供 AR 与 FastSpeech 解码分别调参。7. 复现初始实验与使用预训练模型7.1 初始实验环境README 记录的初始结果运行环境2021-08-23python version: 3.6.8 espnet version: espnet 0.10.2a1 pytorch version: pytorch 1.9.0cu102 Git hash: 83e3443a136bf3d7f870fc43ad60d0cb7d774cc0需要说明这是 2021 年的历史环境记录在当前仓库上复现时以 doc/installation.md 给出的安装说明和当前环境为准模型结构与配置参数上文各 yaml才是可迁移的核心。7.2 完整训练命令在egs2/siwis/tts1/下直接运行# 全流程下载语料 - 数据准备 - 训练 Tacotron2 - 解码 dev/eval1 ./run.sh # 只从某阶段开始如只训练 ./run.sh --stage 7 # 切换模型Conformer-FastSpeech2注意 FastSpeech 需 teacher durations # 参见 TEMPLATE 文档中 FastSpeech2 training 一节的两阶段流程 ./run.sh --train_config conf/tuning/train_conformer_fastspeech2.yaml7.3 使用已发布的预训练模型tts.sh 支持--download_model选项通过espnet_model_zoo_download从 Model Zoo 拉取模型并解包自动建立model_file与train_config的符号链接随后直接进入 stage 8 解码与评测。使用 README 列出的两个模型名即可./tts.sh --download_model siwis_tts_train_tacotron2_raw_phn_none_train.loss.ave ./tts.sh --download_model siwis_tts_train_transformer2_raw_phn_none_train.loss.ave由于inference_model会按train.loss.ave解析下载后的目录结构可直接用于合成data/dev_phn/text、data/eval1_phn/text两条测试文本。7.4 合成结果与评测解码完成后合成语音位于exp/tts_*/inference/dset/wav/若未跳过 stage 9skip_scoringfalse流程会用 VERSA 打分器对生成语音与参考语音做指标计算配置由versa_configconf/versa.yaml指定指标列表见 VERSA 官方文档最终由scripts/utils/show_tts_results.sh汇总展示。8. 小结SIWIS recipe 是 ESPnet2 中一个结构完整、参数自洽的法语单讲者 TTS 参考实现数据侧db.sh→data_download.sh→data_prep.sh→data.sh完成“下载、目录构建、250/250 划分、espeak_ng_french 离线音素化”四步产出tr_no_dev_phn / dev_phn / eval1_phn三套数据训练侧run.sh以 24 kHz、n_fft2048/n_shift300/win_length1200的特征设定驱动tts.sh的 11 个 stage默认 Tacotron2 配置启用了 guided attention loss 与batch_typenumel装箱扩展侧conf/tuning/覆盖了 Transformer 与 Conformer-FastSpeech2 两条非默认路线配合--teacher_dumpdir即可完成 FastSpeech2 的 durations 蒸馏流程复用侧--download_model一条命令即可拉取已发布的 Tacotron2 / Transformer 预训练模型直接解码。后续开发若需支持更多模型VITS、joint text2wav、多讲者 speaker embedding 等可参照 egs2/TEMPLATE/tts1/README.md 中对应章节把本 recipe 作为法语场景的最小可运行基线。赞分享人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载相关推荐ESPnet2 RUSLAN 配方实战俄语单讲者 TTS 的音素化数据准备与 Tacotron2 / FastSpeech2 训练全流程ESPnet2 RUSLAN 配方实战俄语单讲者 TTS 的音素化数据准备与 Tacotron2 / FastSpeech2 训练全流程 本文以 egs2/r人工智能语音音频深度学习NLPESPnet2 J-KAC 日语单说话人 TTS 配方实战指南从语料准备到模型训练与调优ESPnet2 J KAC 日语单说话人 TTS 配方实战指南从语料准备到模型训练与调优 本篇技术指南以 egs2/jkac/tts1/README.md h人工智能语音音频深度学习NLPESPnet2 Recipe Template 实战指南用自有语料搭建 ASR/TTS 训练流程与 Kaldi 风格数据准备ESPnet2 Recipe Template 实战指南用自有语料搭建 ASR/TTS 训练流程与 Kaldi 风格数据准备 导读 ESPnet2 采用「任务人工智能语音音频深度学习NLP上一篇CodeWhale 中的 unicode-width 依赖修补Unicode 显示宽度计算的实战指南下一篇彻底解决Compose Multiplatform与Koin依赖在Web平台的兼容性问题全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

ChatGPT 微服务应用体系构建实战:API-SDK、鉴权、公众号与支付服务全栈落地
ChatGPT 微服务应用体系构建实战:API-SDK、鉴权、公众号与支付服务全栈落地

文档教程后端 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助,请给予支持(关注、… · 2026/9/25 5:10:35

MikroORM 类型安全实战:Reference 包装器、Loaded 类型与严格局部加载
MikroORM 类型安全实战:Reference 包装器、Loaded 类型与严格局部加载

后端 【免费下载链接】mikro-orm TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, MS SQL Server, PostgreSQL and SQLite/libSQL databases. 项目地址: https://gitcode.com/gh_mir… · 2026/9/25 5:10:35

Agent技能库设计实战:从工具调用失控到标准化技能管理
Agent技能库设计实战:从工具调用失控到标准化技能管理

做AI Agent的人一定绕不过一个词:skills。最近我在维护一个叫agent-skills的小型框架,初衷很简单:把散落在项目各处的function calling定义、工具函数、提示词模板全部收拢成一套标准化的技能库,让Agent既能自由调用外部工具&… · 2026/9/25 5:10:35

带补偿与爬坡约束的电力市场混合整数均衡问题精确求解方法
带补偿与爬坡约束的电力市场混合整数均衡问题精确求解方法

电力市场的出清计算,说白了就是在一个巨大的经济调度问题里找平衡点。这几年我做过不少相关的优化项目,最头疼的往往不是连续量的经济调度,而是那些带 0-1 整数变量的均衡问题。尤其当场景里再加上补偿费用、机组上升爬坡约束,问题… · 2026/9/25 5:41:15

精益与六西格玛的本质区别及应用场景解析
精益与六西格玛的本质区别及应用场景解析

1. 为什么我们需要分清精益与六西格玛上周和制造业的老王吃饭时,他提到公司刚花大价钱请了咨询公司做"精益六西格玛"培训,结果发现顾问自己都说不清两者的区别,把改善活动搞得一团糟。这让我想起十年前刚接触这两个方法论时踩过的坑… · 2026/9/25 5:41:15

WinForms嵌入Word/Excel实现本地Office控件级集成
WinForms嵌入Word/Excel实现本地Office控件级集成

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 5:41:15

Atlas 300V推理加速卡部署YOLO:从环境配置到性能优化全流程指南
Atlas 300V推理加速卡部署YOLO:从环境配置到性能优化全流程指南

1. 被问懵了:Atlas 300V 到底是不是一张"运算加速卡"前段时间有个做安防项目的朋友问我,手上的Atlas 300V 24G到底能不能用来跑训练,还说他在网上查资料看得云里雾里。这个问题我太熟悉了——刚接触昇腾(Ascend&#xf… · 2026/9/25 5:41:15

html-anything 极简简历模板(resume-modern)深度解析:A4 单页现代简历的完整实现指南
html-anything 极简简历模板(resume-modern)深度解析:A4 单页现代简历的完整实现指南

AI 应用人工智能AI AgentAI 写作媒体生成 【免费下载链接】html-anything ✨ The agentic HTML editor — your local AI agent writes the HTML, you ship it. 🚀 75 Skills 9 Surfaces (magazine deck poster XHS / tweet prototype data report Hyperfram… · 2026/9/25 5:41:09

藏在 Claude Code 里的极致浪漫:187 条 Spinner Verbs 全收录与 settings.json 配置指南
藏在 Claude Code 里的极致浪漫:187 条 Spinner Verbs 全收录与 settings.json 配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 5:41:09

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码